public override async Task DoAction(string RoleARN)
{
await base.DoAction(RoleARN);
var logger = LogManager.GetCurrentClassLogger();
Parallel.ForEach(SharedLibrary.Utilities.GetRegions(), (region) =>
{
logger.Debug($"Checking S3 buckets in region {region.DisplayName }");
var creds = SharedLibrary.Utilities.AssumeRole(RoleARN, region);
Amazon.S3.AmazonS3Client client = new Amazon.S3.AmazonS3Client(creds, region);
var listBucketsResult = client.ListBucketsAsync(new ListBucketsRequest {
}).Result;
foreach (var bucket in listBucketsResult.Buckets)
{
try
{
var bucketLocationResult = client.GetBucketLocationAsync(new GetBucketLocationRequest {
BucketName = bucket.BucketName
}).Result;
var bucketRegion = RegionEndpoint.GetBySystemName(bucketLocationResult.Location.Value);
Amazon.S3.AmazonS3Client localClient = new Amazon.S3.AmazonS3Client(creds, bucketRegion);
EmptyBucket(localClient, bucket.BucketName).Wait();
var deleteBucketResult = localClient.DeleteBucketAsync(new DeleteBucketRequest {
BucketName = bucket.BucketName, BucketRegion = bucketLocationResult.Location
}).Result;
logger.Debug($"Bucket {bucket.BucketName} in region {region.DisplayName} deleted.");
}
catch
{ }
}
});
}