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."); } }
public DataTable GetRDS(string aprofile, string Region2Scan) { DataTable ToReturn = AWSTables.GetRDSDetailsTable(); string accountid = GetAccountID(aprofile); RegionEndpoint Endpoint2scan = RegionEndpoint.USEast1; //Convert the Region2Scan to an AWS Endpoint. foreach (var aregion in RegionEndpoint.EnumerableAllRegions) { if (aregion.DisplayName.Equals(Region2Scan)) { Endpoint2scan = aregion; continue; } } Amazon.Runtime.AWSCredentials credential; try { credential = new Amazon.Runtime.StoredProfileAWSCredentials(aprofile); var RDS = new Amazon.RDS.AmazonRDSClient(credential, Endpoint2scan); var RDSi = RDS.DescribeDBInstances(); foreach (var anRDS in RDSi.DBInstances) { DataRow disone = ToReturn.NewRow(); //Handle the List Breakdowns var sgs = anRDS.DBSecurityGroups; List<string> sglist = new List<string>(); foreach (var sg in sgs) { sglist.Add(sg.DBSecurityGroupName + ": " + sg.Status); } var DBSecurityGroups = List2String(sglist); List<string> vsg = new List<string>(); var w = anRDS.VpcSecurityGroups; foreach (var sg in w) { vsg.Add(sg.VpcSecurityGroupId + ": " + sg.Status); } var VPCSecurityGroups = List2String(vsg); //StraightMappings + Mappings of breakdowns. disone["AccountID"] = GetAccountID(aprofile); disone["Profile"] = aprofile; disone["AvailabilityZone"] = anRDS.AvailabilityZone; disone["InstanceID"] = anRDS.DBInstanceIdentifier; disone["Name"] = anRDS.DBName; disone["Status"] = anRDS.DBInstanceStatus; disone["EndPoint"] = anRDS.Endpoint.Address + ":" + anRDS.Endpoint.Port; disone["InstanceClass"] = anRDS.DBInstanceClass; disone["IOPS"] = anRDS.Iops.ToString(); disone["StorageType"] = anRDS.StorageType; disone["AllocatedStorage"] = anRDS.AllocatedStorage; disone["Engine"] = anRDS.StorageType; disone["EngineVersion"] = anRDS.AllocatedStorage; disone["Created"] = anRDS.InstanceCreateTime.ToString(); ToReturn.Rows.Add(disone); } } catch (Exception ex) { string rabbit = ""; } return ToReturn; }