public override async Task DoAction(string RoleARN) { await base.DoAction(RoleARN); var logger = LogManager.GetCurrentClassLogger(); Parallel.ForEach(SharedLibrary.Utilities.GetRegions(), (region) => { logger.Debug($"Checking RDS instances in region {region.DisplayName }"); var creds = SharedLibrary.Utilities.AssumeRole(RoleARN, region); Amazon.RDS.AmazonRDSClient client = new Amazon.RDS.AmazonRDSClient(creds, region); var describeResult = client.DescribeDBInstancesAsync(new DescribeDBInstancesRequest { MaxRecords = 100 }).Result; foreach (var instance in describeResult.DBInstances) { if (instance.DBInstanceStatus != "deleting") { var deleteDBInstanceResult = client.DeleteDBInstanceAsync(new DeleteDBInstanceRequest { SkipFinalSnapshot = true, DeleteAutomatedBackups = true, DBInstanceIdentifier = instance.DBInstanceIdentifier }).Result; if (deleteDBInstanceResult.HttpStatusCode == System.Net.HttpStatusCode.OK) { logger.Debug($"Deleted RDS instance {instance.DBInstanceIdentifier} in region {region.DisplayName }"); } } } }); }
} // main //Purpose // This task connects to your AWS account and reads the names of your DB instances // This task looks for DB instances in one Region only // //Outputs // This task writes the names of your DB instances to the console // public static async Task CheckRDSInstances() { Amazon.RDS.AmazonRDSClient client; Amazon.RDS.Model.DescribeDBInstancesRequest request; Amazon.RDS.Model.DescribeDBInstancesResponse response; client = new Amazon.RDS.AmazonRDSClient(); request = new Amazon.RDS.Model.DescribeDBInstancesRequest(); response = await client.DescribeDBInstancesAsync(request); if (response.DBInstances.Count > 0) { foreach (Amazon.RDS.Model.DBInstance i in response.DBInstances) { Console.WriteLine(i.DBInstanceIdentifier); } } else { Console.WriteLine("You don't have any DB instances in this region."); } }