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 }");
                        }
                    }
                }
            });
        }
Пример #2
0
        } // 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.");
            }
        }
Пример #3
0
        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;
        }