Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[Integration][AWS] | Handling Throttling for Cloud Control Get Resour…
…ce (#1312) # Description What: - Implemented an account level rate limiting and concurrency management approach in the resync_cloudcontrol function to handle AWS throttling. - Refactored to improved memory management. Why: This change introduces rate limiting and concurrency control within the `resync_cloudcontrol` function to prevent throttling issues during high-volume AWS requests. How: - Added a rate limiter to control the rate of requests. - Added semaphore to manage concurrent requests. - Increased maximum retry attempts of the BotoConfig automatic retry strategies. - Reduced calls to create new boto3 clients to improve memory usage in the `resync_custom_kind` function. - This design was mostly inspired by [this blog](https://aws.amazon.com/blogs/mt/managing-monitoring-api-throttling-in-workloads/?utm_source=chatgpt.com#:~:text=Managing%20API%20throttling%20events) Cost: - `This has the potential to impede the speed of the integration` ## Type of change Please leave one option from the following and delete the rest: - [x] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] New Integration (non-breaking change which adds a new integration) - [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] Non-breaking change (fix of existing functionality that will not change current behavior) - [ ] Documentation (added/updated documentation) <h4> All tests should be run against the port production environment(using a testing org). </h4> ### Core testing checklist - [ ] Integration able to create all default resources from scratch - [ ] Resync finishes successfully - [ ] Resync able to create entities - [ ] Resync able to update entities - [ ] Resync able to detect and delete entities - [ ] Scheduled resync able to abort existing resync and start a new one - [ ] Tested with at least 2 integrations from scratch - [ ] Tested with Kafka and Polling event listeners - [ ] Tested deletion of entities that don't pass the selector ### Integration testing checklist - [ ] Integration able to create all default resources from scratch - [ ] Resync able to create entities - [ ] Resync able to update entities - [ ] Resync able to detect and delete entities - [ ] Resync finishes successfully - [ ] If new resource kind is added or updated in the integration, add example raw data, mapping and expected result to the `examples` folder in the integration directory. - [ ] If resource kind is updated, run the integration with the example data and check if the expected result is achieved - [ ] If new resource kind is added or updated, validate that live-events for that resource are working as expected - [ ] Docs PR link [here](#) ### Preflight checklist - [ ] Handled rate limiting - [ ] Handled pagination - [ ] Implemented the code in async - [ ] Support Multi account ## Screenshots Include screenshots from your environment showing how the resources of the integration will look. ### `resync_custom_kind before` <img width="1257" alt="Screenshot 2025-01-09 at 11 15 25 PM" src="https://github.com/user-attachments/assets/c8560370-6ee7-4af8-95a2-41336c7ab1b2" /> ### `resync_custom_kind after` <img width="1257" alt="Screenshot 2025-01-09 at 11 11 24 PM" src="https://github.com/user-attachments/assets/bf96ad35-5dca-436a-8cd5-567f500988f0" /> ## API Documentation Provide links to the API documentation used for this integration.
- Loading branch information