/// Get the AMI Image Details from EC2 AWS Marketplace
        public async Task <Amazon.EC2.Model.Image> Execute(ImageBuilderPackagerRequest request)
        {
            Amazon.EC2.Model.Image response = null;

            // Request Details
            this.logger.LogInformation(string.Format("Benchmark Name: {0}", request?.benchmarkName));
            this.logger.LogInformation(string.Format("Profile Level: {0}", request?.profileLevel));

            // Construct the AMI name pattern
            var amiNamePattern = request.benchmarkName + "*" + request.profileLevel + "*";

            // Create a Describe Images Request
            var describeRequest = new Amazon.EC2.Model.DescribeImagesRequest {
                Owners = new List <string> {
                    AWS_MARKETPLACE_ID
                },
                Filters = new List <Amazon.EC2.Model.Filter> {
                    new Amazon.EC2.Model.Filter {
                        Name   = "name",
                        Values = new List <string> {
                            amiNamePattern
                        }
                    }
                }
            };

            // Execute the request.
            this.logger.LogInformation("EC2 Describe-Images: Request - Begin");
            var describeResponse = await this.ec2Client.DescribeImagesAsync(describeRequest);

            this.logger.LogInformation("EC2 Describe-Images: Request - End");

            // Process the response.
            this.logger.LogInformation("EC2 Describe-Images: Response - Begin");
            if (describeResponse != null)
            {
                // Log all responses.
                describeResponse.Images.ForEach(item => this.logger.LogDebug(this.GetAmiImageDetailsAsString(item)));

                // Find the most recent AMI and set a result.
                response = describeResponse.Images.OrderByDescending(item => item.CreationDate).FirstOrDefault();
                this.logger.LogInformation(string.Format("SELECTED: {0}", this.GetAmiImageDetailsAsString(response)));
            }
            this.logger.LogInformation("EC2 Describe-Images: Response - End");

            // Return the selected AMI Image
            return(response);
        }
 private string GetAmiImageDetailsAsString(Amazon.EC2.Model.Image item)
 {
     return((item != null)
         ? string.Format("{0} | {1} - {2} - {3} ({4})", item.Name, item.Description, item.ImageId, item.PlatformDetails, item.CreationDate)
         : null);
 }
예제 #3
0
파일: ZAwsAmi.cs 프로젝트: zmilojko/ZAws
 protected override bool DoUpdate(object responseData)
 {
     Debug.Assert(responseData.GetType() == typeof(Amazon.EC2.Model.Image), "Wrong data passed to the object for update.");
     ResponseData = (Amazon.EC2.Model.Image)responseData;
     return true;
 }
예제 #4
0
 public ZAwsAmi(ZAwsEc2Controller controller, Amazon.EC2.Model.Image res)
     : base(controller)
 {
     Update(res);
 }