Performance improvement: filter by DetachVolume event instead #1
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Problem Statement
In this solution, CloudTrail events are filtered by ResourceType, which returns all API calls for EBS volumes. If this solution is run in an account with hundreds of instances and IGNORE_WINDOW is set to a large number, it takes a long time to process all CloudTrail events.
Sample execution times in one of my accounts:
IGNORE_WINDOW=30 -> 00:02:57
IGNORE_WINDOW=90 -> 00:09:16
Description of Changes:
We can reduce the execution times, if we change the logic to find aged volumes.
A volume is aged if:
Change lookup_events filter to EventName=DetachVolume
If a volume is detached within IGNORE_WINDOW, then it should not be removed.
If a volume has been created but never been attached, the above filter fails to find it. To prevent this, we add this condition to include volumes which are created before IGNORE_WINDOW.
Sample execution times after this changes:
IGNORE_WINDOW=30 -> 00:00:08
IGNORE_WINDOW=90 -> 00:00:23
90-day window processed in just 23 seconds (vs. 556 seconds in original solution).
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.