/// <summary>
        /// Unmarshaller the response from the service to the response class.
        /// </summary>
        /// <param name="context"></param>
        /// <returns></returns>
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            RequestSpotInstancesResponse response = new RequestSpotInstancesResponse();

            int originalDepth = context.CurrentDepth;
            int targetDepth   = originalDepth + 1;

            if (context.IsStartOfDocument)
            {
                targetDepth = 2;
            }

            while (context.ReadAtDepth(originalDepth))
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("spotInstanceRequestSet/item", targetDepth))
                    {
                        var unmarshaller = SpotInstanceRequestUnmarshaller.Instance;
                        var item         = unmarshaller.Unmarshall(context);
                        response.SpotInstanceRequests.Add(item);
                        continue;
                    }
                }
            }

            return(response);
        }
        // snippet-start:[ec2.dotnet.spot_instance_request_spot_instance]

        /* Creates a spot instance
         *
         * Takes six args:
         *   AmazonEC2Client ec2Client is the EC2 client through which the spot instance request is made
         *   string amiId is the AMI of the instance to request
         *   string securityGroupName is the name of the security group of the instance to request
         *   InstanceType instanceType is the type of the instance to request
         *   string spotPrice is the price of the instance to request
         *   int instanceCount is the number of instances to request
         *
         * See https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/MEC2RequestSpotInstancesRequestSpotInstancesRequest.html
         */
        public static SpotInstanceRequest RequestSpotInstance(
            AmazonEC2Client ec2Client,
            string amiId,
            string securityGroupName,
            InstanceType instanceType,
            string spotPrice,
            int instanceCount)
        {
            RequestSpotInstancesRequest request = new RequestSpotInstancesRequest
            {
                SpotPrice     = spotPrice,
                InstanceCount = instanceCount
            };

            LaunchSpecification launchSpecification = new LaunchSpecification
            {
                ImageId      = amiId,
                InstanceType = instanceType
            };

            launchSpecification.SecurityGroups.Add(securityGroupName);

            request.LaunchSpecification = launchSpecification;

            RequestSpotInstancesResponse result = ec2Client.RequestSpotInstances(request);

            return(result.SpotInstanceRequests[0]);
        }
        public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context)
        {
            RequestSpotInstancesResponse response = new RequestSpotInstancesResponse();

            int targetDepth = 2;

            while (context.Read())
            {
                if (context.IsStartElement || context.IsAttribute)
                {
                    if (context.TestExpression("spotInstanceRequestSet/item", targetDepth))
                    {
                        response.SpotInstanceRequests.Add(SpotInstanceRequestUnmarshaller.GetInstance().Unmarshall(context));

                        continue;
                    }
                }
            }


            return(response);
        }
Esempio n. 4
0
        public async Task <RequestSpotInstancesResponse> RequestSpotInstance(
            string amiId,
            string securityGroupName,
            InstanceType instanceType,
            string spotPrice,
            int instanceCount)
        {
            var request = new RequestSpotInstancesRequest();

            // https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_RequestSpotLaunchSpecification.html
            var launchSpecification = new LaunchSpecification();

            launchSpecification.ImageId      = amiId;
            launchSpecification.InstanceType = instanceType;
            launchSpecification.SecurityGroups.Add(securityGroupName);

            request.SpotPrice           = spotPrice;
            request.InstanceCount       = instanceCount;
            request.LaunchSpecification = launchSpecification;

            RequestSpotInstancesResponse response = await ec2Client.RequestSpotInstancesAsync(request);

            return(response);
        }