Exemple #1
0
        // snippet-end:[ec2.dotnet.spot_instance_cancel_spot_request]

        // snippet-start:[ec2.dotnet.spot_instance_terminate_spot_request]

        /* Terminates a spot instance request
         * Takes two args:
         *   AmazonEC2Client ec2Client is the EC2 client through which the spot instance is terminated
         *   string spotRequestId is the ID of the spot instance
         *
         * See https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/MEC2TerminateInstancesTerminateInstancesRequest.html
         */
        private static void TerminateSpotInstance(
            AmazonEC2Client ec2Client,
            string spotRequestId)
        {
            var describeRequest = new DescribeSpotInstanceRequestsRequest();

            describeRequest.SpotInstanceRequestIds.Add(spotRequestId);

            // Retrieve the request we want to monitor.
            var describeResponse = ec2Client.DescribeSpotInstanceRequestsAsync(describeRequest);

            if (SpotInstanceState.Active == describeResponse.Result.SpotInstanceRequests[0].State)
            {
                string instanceId = describeResponse.Result.SpotInstanceRequests[0].InstanceId;

                var terminateRequest = new TerminateInstancesRequest();
                terminateRequest.InstanceIds = new List <string>()
                {
                    instanceId
                };

                try
                {
                    ec2Client.TerminateInstancesAsync(terminateRequest);
                }
                catch (AmazonEC2Exception ex)
                {
                    // Check the ErrorCode to see if the instance does not exist.
                    if ("InvalidInstanceID.NotFound" == ex.ErrorCode)
                    {
                        Console.WriteLine("Instance {0} does not exist.", instanceId);
                    }
                    else
                    {
                        // The exception was thrown for another reason, so re-throw the exception.
                        throw;
                    }
                }
            }
        }
Exemple #2
0
        public virtual void failover()
        {
            try
            {
                DescribeInstancesResponse describeInstancesResult
                    = EC2_CLIENT.DescribeInstancesAsync(new DescribeInstancesRequest()
                {
                    Filters = new List <Filter> {
                        new Filter {
                            Name   = "vpc-id",
                            Values = new List <string> {
                                vpcId
                            }
                        },
                        new Filter {
                            Name   = "instance-state-name",
                            Values = new List <string> {
                                "running"
                            }
                        }
                    }
                }).GetAwaiter().GetResult();

                // Note: This assumes there is one reservation with an instance in it for readability.
                string instanceId = describeInstancesResult.Reservations[0].Instances[0].InstanceId;
                Console.WriteLine("Terminating instanceId " + instanceId);
                var instanceIdentifier = new List <string> {
                    instanceId
                };

                TerminateInstancesRequest terminateInstancesRequest = new TerminateInstancesRequest();
                terminateInstancesRequest.InstanceIds = instanceIdentifier;
                EC2_CLIENT.TerminateInstancesAsync(terminateInstancesRequest);
            }
            catch (Exception exception)
            {
                Console.WriteLine("Unkown exception occured " + exception.Message);
            }
        }
Exemple #3
0
        public void TerminateInstance(string instanceId)
        {
            var request = new TerminateInstancesRequest();

            request.InstanceIds = new List <string>()
            {
                instanceId
            };

            try
            {
                var response = ec2Client.TerminateInstances(request);
                foreach (InstanceStateChange item in response.TerminatingInstances)
                {
                    Console.WriteLine("Terminated instance: " + item.InstanceId);
                    Console.WriteLine("Instance state: " + item.CurrentState.Name);
                }
            }
            catch (AmazonEC2Exception ex)
            {
            }
        }
        /// <summary>
        /// terminates an instance
        /// </summary>
        /// <param name="instanceId"></param>
        /// <param name="ec2Client"></param>
        /// <returns></returns>
        private bool TerminateInstance(string instanceId)
        {
            bool returnValue = false;

            using (AmazonEC2Client ec2Client = new AmazonEC2Client())
            {
                TerminateInstancesRequest terminateRequest = new TerminateInstancesRequest();
                terminateRequest.InstanceIds = new List <string>()
                {
                    instanceId
                };
                try
                {
                    TerminateInstancesResponse terminateResponse = ec2Client.TerminateInstancesAsync(terminateRequest).Result;
                    foreach (InstanceStateChange stateChange in terminateResponse.TerminatingInstances)
                    {
                        if (stateChange.InstanceId.Equals(instanceId, StringComparison.OrdinalIgnoreCase))
                        {
                            returnValue = true;
                            break;
                        }
                    }
                }
                catch (AmazonEC2Exception ec2Error)
                {
                    if (ec2Error.ErrorCode.CaseInsensitiveContains("InvalidInstanceID.NotFound"))
                    {
                        returnValue = false;
                    }
                    else
                    {
                        throw;
                    }
                }
                return(returnValue);
            }
        }
        public string TerminateInstance(IAmazonEC2 ec2, string instidstr)
        //terminate ec2 instance
        {
            TerminateInstancesRequest  Terminatereq;
            TerminateInstancesResponse TerminateInstancesResponse = null;

            try
            {
                Terminatereq = new TerminateInstancesRequest
                {
                    InstanceIds = new List <string>()
                    {
                        instidstr
                    }
                };

                TerminateInstancesResponse = ec2.TerminateInstances(Terminatereq);
                return("Done");
            }
            catch (Exception ex)
            {
                return(ex.Message + "\n" + ex.StackTrace);
            }
        }
Exemple #6
0
 public void TerminateInstances(TerminateInstancesRequest request)
 {
     Util.RetryMethod(() => DoTerminateInstances(request), RetryCount);
 }
        public static void TerminateInstance()
        {
            List <string> instanceId = new List <string>();
            string        input      = Console.ReadLine();

            if (input == "")
            {
                Console.WriteLine("Please enter the instance ID then hit 'enter' ");
                input = Console.ReadLine();
                instanceId.Add(input);
            }

            while (input != "exit")
            {
                Console.WriteLine("Please enter another instance ID then hit 'enter' to enter another ID , if you finished the IDs and want to proceed please type ' exit '");
                input = Console.ReadLine();

                if (input == "exit")
                {
                    foreach (string value in instanceId)
                    {
                        Console.WriteLine("The IDs that was entered are : " + " " + value);
                    }
                    Console.WriteLine("please hit enter ");
                    Console.ReadLine();
                }
                else
                {
                    instanceId.Add(input);
                }
            }


            var ec2Client = new AmazonEC2Client();
            var request   = new TerminateInstancesRequest();

            request.InstanceIds = new List <string>();
            request.InstanceIds = instanceId;

            try
            {
                var response = ec2Client.TerminateInstances(request);
                foreach (InstanceStateChange item in response.TerminatingInstances)
                {
                    Console.WriteLine("Terminated instance: " + item.InstanceId);
                    Console.WriteLine("Instance state: " + item.CurrentState.Name);
                }
            }
            catch (AmazonEC2Exception ex)
            {
                // Check the ErrorCode to see if the instance does not exist.
                if ("InvalidInstanceID.NotFound" == ex.ErrorCode)
                {
                    Console.WriteLine("Instance {0} does not exist.", instanceId);
                }
                else
                {
                    // The exception was thrown for another reason, so re-throw the exception.
                    throw;
                }
            }
        }
Exemple #8
0
 /// <summary>
 /// Terminate Instances
 /// </summary>
 /// <param name="request">Terminate Instances  request</param>
 /// <returns>Terminate Instances  Response from the service</returns>
 /// <remarks>
 /// The TerminateInstances operation shuts down one or more instances. This
 /// operation is idempotent; if you terminate an instance more than once, each call
 /// will succeed.
 /// Terminated instances will remain visible after termination (approximately one
 /// hour).
 ///
 /// </remarks>
 public TerminateInstancesResponse TerminateInstances(TerminateInstancesRequest request)
 {
     return(Invoke <TerminateInstancesResponse>("TerminateInstancesResponse.xml"));
 }