private DescribeSpotInstanceRequestsResponse GetSpotRequests() { DescribeSpotInstanceRequestsRequest request = new DescribeSpotInstanceRequestsRequest(); DescribeSpotInstanceRequestsResponse resp = ec2.DescribeSpotInstanceRequests(request); return(resp); }
/// <summary> /// Query EC2 for spot request information. /// </summary> protected override void AmazonExecute() { // Get a list of requests to monitor var requestIds = new List <string>(); foreach (var spotRequest in this.SpotRequests.Get(this.ActivityContext)) { requestIds.Add(spotRequest.SpotInstanceRequestId); } // Create a monitoring request var request = new DescribeSpotInstanceRequestsRequest { SpotInstanceRequestId = requestIds }; try { var response = EC2Client.DescribeSpotInstanceRequests(request); this.UpdatedSpotRequests.Set(this.ActivityContext, response.DescribeSpotInstanceRequestsResult.SpotInstanceRequest); } catch (EndpointNotFoundException ex) { LogBuildMessage(ex.Message); } }
public string query_request_spot() { try { var client = get_client(); var query_req = new DescribeSpotInstanceRequestsRequest(); query_req.SpotInstanceRequestIds.Add(spot_request_id); var query_res = client.DescribeSpotInstanceRequests(query_req); string status = query_res.SpotInstanceRequests[0].Status.Code; write_log("スポットリクエストの状態は " + status + " です。"); string tmp = query_res.SpotInstanceRequests[0].InstanceId; if (tmp != null && tmp.Length != 0) { status = status + "," + tmp; } return(status); } catch (Exception ex) { write_log("ERROR: " + ex.ToString()); return(null); } }
public override void Invoke(AWSCredentials creds, RegionEndpoint region, int maxItems) { AmazonEC2Config config = new AmazonEC2Config(); config.RegionEndpoint = region; ConfigureClient(config); AmazonEC2Client client = new AmazonEC2Client(creds, config); DescribeSpotInstanceRequestsResponse resp = new DescribeSpotInstanceRequestsResponse(); do { DescribeSpotInstanceRequestsRequest req = new DescribeSpotInstanceRequestsRequest { NextToken = resp.NextToken , MaxResults = maxItems }; resp = client.DescribeSpotInstanceRequests(req); CheckError(resp.HttpStatusCode, "200"); foreach (var obj in resp.SpotInstanceRequests) { AddObject(obj); } }while (!string.IsNullOrEmpty(resp.NextToken)); }
public async Task <SpotInstanceRequest> GetSpotRequest(string spotRequestId) { var request = new DescribeSpotInstanceRequestsRequest(); request.SpotInstanceRequestIds.Add(spotRequestId); var describeResponse = await ec2Client.DescribeSpotInstanceRequestsAsync(request); return(describeResponse.SpotInstanceRequests[0]); }
// snippet-end:[ec2.dotnet.spot_instance_request_spot_instance] // snippet-start:[ec2.dotnet.spot_instance_get_spot_request_state] /* Gets the state of a spot instance request. * Takes two args: * AmazonEC2Client ec2Client is the EC2 client through which information about the state of the spot instance is made * string spotRequestId is the ID of the spot instance * * See https://docs.aws.amazon.com/sdkfornet/v3/apidocs/items/EC2/MEC2DescribeSpotInstanceRequests.html */ private static SpotInstanceState GetSpotRequestState( AmazonEC2Client ec2Client, string spotRequestId) { // Create the describeRequest object with all of the request ids // to monitor (e.g. that we started). var request = new DescribeSpotInstanceRequestsRequest(); request.SpotInstanceRequestIds.Add(spotRequestId); // Retrieve the request we want to monitor. var describeResponse = ec2Client.DescribeSpotInstanceRequestsAsync(request); SpotInstanceRequest req = describeResponse.Result.SpotInstanceRequests[0]; return(req.State); }
/// <summary> /// This function returns the InstanceId for a given spot request /// </summary> /// <param name="RequestId">The id of the request to fetch the instance id from</param> /// <returns>The instance id</returns> public string GetInstanceIdForSpotRequest(string RequestId) { string result = ""; // Initialize error values ErrorCode = 0; ErrorMessage = ""; // Create request var instancesRequest = new DescribeSpotInstanceRequestsRequest() { SpotInstanceRequestIds = new List <string> () { RequestId } }; try { // Run the operation var statusResponse = EC2client.DescribeSpotInstanceRequests(instancesRequest); // Check response for errors if (statusResponse.HttpStatusCode != HttpStatusCode.OK) { ErrorCode = Convert.ToInt32(statusResponse.HttpStatusCode); ErrorMessage = "Http Error [" + statusResponse.HttpStatusCode.ToString() + "]"; } else { result = statusResponse.SpotInstanceRequests[0].InstanceId; } } catch (Exception ex) { ErrorCode = -1; ErrorMessage = ex.Message + "::" + ex.InnerException; } return(result); }
// 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 termitted * 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; } } } }
private async Task <string> UntilBidActiveAsync(string spotInstanceRequestId, CancellationToken?cancellationToken = null) { string instanceId = null; CancellationToken token = cancellationToken.HasValue ? cancellationToken.Value : new CancellationToken(); var bidStateRequest = new DescribeSpotInstanceRequestsRequest() { SpotInstanceRequestIds = new List <string>() { spotInstanceRequestId }, }; while (instanceId == null) { token.ThrowIfCancellationRequested(); var bidState = (await this.Client.DescribeSpotInstanceRequestsAsync(bidStateRequest)).SpotInstanceRequests[0]; this.BidStatus = bidState.Status.Code; if (bidState.State == "active") { instanceId = bidState.InstanceId; } else if (bidState.State == "open") { await Task.Delay(1000, token); } else { throw new Exception(string.Format("Spot bid has reached state {0} for reason {1}", bidState.State, bidState.Status)); } } return(instanceId); }