private void TerminateInstance(ref bool actionSucceeded, ref string actionMessage) { if (InstanceRequestObj.InstanceState.ToLower() != "running" && InstanceRequestObj.InstanceState.ToLower() != "stopped") { actionSucceeded = false; actionMessage = $"The instance {InstanceRequestObj.InstanceName} is currently in {InstanceRequestObj.InstanceState} state , and cannot be terminated at this time."; return; } var request = new TerminateInstancesRequest { InstanceIds = new List <string>() { InstanceRequestObj.InstanceID } }; try { TerminateInstancesResponse response = Ec2Client.TerminateInstancesAsync(request).GetAwaiter().GetResult(); foreach (InstanceStateChange item in response.TerminatingInstances) { Console.WriteLine("Stopped instance: " + item.InstanceId); Console.WriteLine("Instance state: " + item.CurrentState.Name); } actionSucceeded = true; actionMessage = $"The instance {InstanceRequestObj.InstanceName} is being terminated. Please check the AWS Console to verify."; } catch (Exception ex) { context.Logger.LogLine($"ServerOperationsHelper::TerminateInstance {ex.Message}"); context.Logger.LogLine($"ServerOperationsHelper::TerminateInstance {ex.StackTrace}"); actionSucceeded = false; actionMessage = $"Could not terminate {InstanceRequestObj.InstanceName} . Please contact your administrator."; } }
/// <summary> /// Shuts down one or more instances. This operation is idempotent; if you terminate an instance more than once, each call succeeds. /// Terminated instances remain visible after termination (for approximately one hour). By default, Amazon EC2 deletes all EBS volumes that were attached when the instance /// launched. Volumes attached after instance launch continue running. You can stop, start, and terminate EBS-backed instances. You can only terminate /// instance store-backed instances. What happens to an instance differs if you stop it or terminate it. For example, when you stop an instance, the root device and /// any other devices attached to the instance persist. When you terminate an instance, any attached EBS volumes with the DeleteOnTermination block device mapping parameter /// set to true are automatically deleted. For more information about the differences between stopping and terminating instances, see Instance Lifecycle in the Amazon EC2 User Guide. /// </summary> /// <param name="instances">A list of instance IDs to be stopped.</param> /// <param name="settings">The <see cref="EC2Settings"/> used during the request to AWS.</param> /// <param name="cancellationToken">A cancellation token that can be used by other objects or threads to receive notice of cancellation.</param> public async Task <bool> TerminateInstances(IList <string> instances, EC2Settings settings, CancellationToken cancellationToken = default(CancellationToken)) { if ((instances == null) || (instances.Count == 0)) { throw new ArgumentNullException("instances"); } //Create Request AmazonEC2Client client = this.CreateClient(settings); TerminateInstancesRequest request = new TerminateInstancesRequest(); foreach (string instance in instances) { request.InstanceIds.Add(instance); } //Check Response TerminateInstancesResponse response = await client.TerminateInstancesAsync(request, cancellationToken); if (response.HttpStatusCode == HttpStatusCode.OK) { _Log.Verbose("Successfully terminated instances '{0}'", string.Join(",", instances)); return(true); } else { _Log.Error("Failed to terminate instances '{0}'", string.Join(",", instances)); return(false); } }
/// <summary> /// Unmarshaller the response from the service to the response class. /// </summary> /// <param name="context"></param> /// <returns></returns> public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { TerminateInstancesResponse response = new TerminateInstancesResponse(); 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("instancesSet/item", targetDepth)) { var unmarshaller = InstanceStateChangeUnmarshaller.Instance; var item = unmarshaller.Unmarshall(context); response.TerminatingInstances.Add(item); continue; } } } return(response); }
protected override void DoDeleteObject() { CheckProtected(ProductionOptions.NonStop | ProductionOptions.DoNotDestroy); if (Status != Ec2Status.Terminated) { TerminateInstancesResponse resp = myController.ec2.TerminateInstances(new TerminateInstancesRequest() .WithInstanceId(InstanceId)); } }
public void terminate(string instanceId) { try { TerminateInstancesRequest request = new TerminateInstancesRequest(); request.InstanceId.Add(instanceId); TerminateInstancesResponse response = _service.TerminateInstances(request); } catch (AmazonEC2Exception ex) { throw new Exception("Caught Exception: " + ex.XML); } }
public IDictionary <string, string> TerminateInstance(List <string> instancesIds) { IDictionary <string, string> result; // Destrói uma instância. try { TerminateInstancesRequest terminateRequest = new TerminateInstancesRequest(instancesIds); TerminateInstancesResponse terminateResponse = Ec2.TerminateInstances(terminateRequest); result = terminateResponse.ResponseMetadata.Metadata; result.Add("STATUS_CODE", terminateResponse.HttpStatusCode.ToString()); result.Add("RESPONSE", terminateResponse.ToString()); } catch (AmazonEC2Exception ex) { throw new AwsException(ex); } return(result); }
public override AmazonWebServiceResponse Unmarshall(XmlUnmarshallerContext context) { TerminateInstancesResponse response = new TerminateInstancesResponse(); int targetDepth = 2; while (context.Read()) { if (context.IsStartElement || context.IsAttribute) { if (context.TestExpression("instancesSet/item", targetDepth)) { response.TerminatingInstances.Add(InstanceStateChangeUnmarshaller.GetInstance().Unmarshall(context)); continue; } } } return(response); }
/// <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); } }