public LogAutoscalingEvent(IElasticLowLevelClient es, IAmazonAutoScaling asg, LogToElasticsearch logToEs) : base(request =>
                                                                                                                  (from asgEvent in Observable.Return(request)
                                                                                                                   let asgName = asgEvent.SelectToken("detail.AutoScalingGroupName")?.Value <string>()
                                                                                                                                 where !string.IsNullOrEmpty(asgName)
                                                                                                                                 let describeRequest = new DescribeAutoScalingGroupsRequest
 {
     AutoScalingGroupNames = new List <string> {
         asgName
     }
 }
                                                                                                                   from describeResponse in asg.DescribeAutoScalingGroupsAsync(describeRequest)
                                                                                                                   from description in describeResponse.AutoScalingGroups
                                                                                                                   let tags = description.Tags
                                                                                                                              let app = tags.GetValue("repo") ?? tags.GetValue("Application") ?? tags.GetValue("app")
                                                                                                                                        let env = tags.GetValue("env") ?? tags.GetValue("Environment")
                                                                                                                                                  let sha = tags.GetValue("sha")
                                                                                                                                                            let log = new
 {
     Name = asgEvent["detail-type"]?.Value <string>(),
     RequestId = asgName,
     Message = asgEvent
 }
                                                                                                                   let time = asgEvent["time"].Value <DateTime>()
                                                                                                                              let alteredLog = new AlteredLog
 {
     Time = time,
     Repo = app,
     Env = env,
     Sha = sha,
     Log = JObject.FromObject(log, AlteredJson.DefaultJsonSerializer)
 }
                                                                                                                   from response in logToEs.Execute(alteredLog)
                                                                                                                   select response).ToTask())
 {
 }
        public AutoScalingGroupSource(IAmazonAutoScaling client)
        {
            if (client == null)
            {
                throw new ArgumentNullException(nameof(client));
            }

            _client = client;
        }
        internal AZFailover(string vpcId, string azId, Amazon.RegionEndpoint region = null)
        {
            this.vpcId  = vpcId;
            this.azName = azId;

            if (region == null)
            {
                region = Amazon.RegionEndpoint.USEast2;
            }

            ec2Client = new AmazonEC2Client(region);
            rdsClient = new AmazonRDSClient(region);
            asClient  = new AmazonAutoScalingClient(region);
        }
示例#4
0
        public static void GetTopology()
        {
            IAmazonEC2                  ec2 = AWSClientFactory.CreateAmazonEC2Client();
            IAmazonAutoScaling          asg = AWSClientFactory.CreateAmazonAutoScalingClient();
            IAmazonElasticLoadBalancing elb = AWSClientFactory.CreateAmazonElasticLoadBalancingClient();

            DescribeVpcsResponse vpcResponse = ec2.DescribeVpcs();

            WriteFile("vpcs.csv", vpcResponse.Vpcs);

            DescribeInstancesResponse instanceResponse = ec2.DescribeInstances();
            var reservationIndex = 0;

            foreach (var reservation in instanceResponse.Reservations)
            {
                if (reservationIndex == 0)
                {
                    WriteFile("instances.csv", reservation.Instances);
                }
                else
                {
                    AppendFile("instances.csv", reservation.Instances);
                }
                reservationIndex++;
            }

            DescribeNetworkAclsResponse naclResponse = ec2.DescribeNetworkAcls();

            WriteFile("nacls.csv", naclResponse.NetworkAcls);

            Amazon.EC2.Model.DescribeTagsResponse tagsResponse = ec2.DescribeTags();
            WriteFile("tags.csv", tagsResponse.Tags);

            DescribeVolumesResponse volumesResponse = ec2.DescribeVolumes();

            WriteFile("volumes.csv", volumesResponse.Volumes);

            DescribeLoadBalancersResponse elbResponse = elb.DescribeLoadBalancers();

            WriteFile("elbs.csv", elbResponse.LoadBalancerDescriptions);

            DescribeInternetGatewaysResponse igResponse = ec2.DescribeInternetGateways();

            WriteFile("igs.csv", igResponse.InternetGateways);
        }
示例#5
0
 private Amazon.AutoScaling.Model.PutWarmPoolResponse CallAWSServiceOperation(IAmazonAutoScaling client, Amazon.AutoScaling.Model.PutWarmPoolRequest request)
 {
     Utils.Common.WriteVerboseEndpointMessage(this, client.Config, "AWS Auto Scaling", "PutWarmPool");
     try
     {
         #if DESKTOP
         return(client.PutWarmPool(request));
         #elif CORECLR
         return(client.PutWarmPoolAsync(request).GetAwaiter().GetResult());
         #else
                 #error "Unknown build edition"
         #endif
     }
     catch (AmazonServiceException exc)
     {
         var webException = exc.InnerException as System.Net.WebException;
         if (webException != null)
         {
             throw new Exception(Utils.Common.FormatNameResolutionFailureMessage(client.Config, webException.Message), webException);
         }
         throw;
     }
 }
示例#6
0
        public static void InvokeDescribeAutoScalingGroups()
        {
            NameValueCollection appConfig = ConfigurationManager.AppSettings;

            // Print the number of Auto Scaling triggers.
            IAmazonAutoScaling autoscaling = AWSClientFactory.CreateAmazonAutoScalingClient(RegionEndpoint.USWest2);

            try
            {
                DescribeAutoScalingGroupsResponse asResponse = autoscaling.DescribeAutoScalingGroups(new DescribeAutoScalingGroupsRequest());

                int numAutoScalingGroups = 0;
                if (asResponse.AutoScalingGroups != null)
                {
                    numAutoScalingGroups = asResponse.AutoScalingGroups.Count;
                }
                Console.WriteLine("You have " + numAutoScalingGroups + " Auto Scaling group(s).");
            }
            catch (AmazonAutoScalingException ex)
            {
                if (ex.ErrorCode.Equals("OptInRequired"))
                {
                    Console.WriteLine("You are not signed for Amazon EC2.");
                    Console.WriteLine("You can sign up at http://aws.amazon.com/ec2.");
                }
                else
                {
                    Console.WriteLine("Caught Exception: " + ex.Message);
                    Console.WriteLine("Response Status Code: " + ex.StatusCode);
                    Console.WriteLine("Error Code: " + ex.ErrorCode);
                    Console.WriteLine("Error Type: " + ex.ErrorType);
                    Console.WriteLine("Request ID: " + ex.RequestId);
                }
            }
            Console.WriteLine();
        }
示例#7
0
 internal DescribeTagsPaginator(IAmazonAutoScaling client, DescribeTagsRequest request)
 {
     this._client  = client;
     this._request = request;
 }
 internal DescribeNotificationConfigurationsPaginator(IAmazonAutoScaling client, DescribeNotificationConfigurationsRequest request)
 {
     this._client  = client;
     this._request = request;
 }
 internal AutoScalingPaginatorFactory(IAmazonAutoScaling client)
 {
     this.client = client;
 }
示例#10
0
        protected override void ProcessRecord()
        {
            base.ProcessRecord();

            Client = CreateClient(_CurrentCredentials, _RegionEndpoint);
        }
 internal DescribeScheduledActionsPaginator(IAmazonAutoScaling client, DescribeScheduledActionsRequest request)
 {
     this._client  = client;
     this._request = request;
 }
 public LaunchConfigurationService(IAmazonAutoScaling autoScalingClient)
 {
     _autoScalingClient = autoScalingClient;
 }