Objective-C
Objective-C
EC2 Check Instance Status
See more Amazon EC2 Examples
Demonstrates how to send a request to check the status of Amazon EC2 instances.Chilkat Objective-C Downloads
#import <CkoRest.h>
#import <CkoAuthAws.h>
#import <NSString.h>
#import <CkoXml.h>
BOOL success = NO;
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
CkoRest *rest = [[CkoRest alloc] init];
// Connect to the Amazon AWS server.
// such as https://ec2.amazonaws.com/
BOOL bTls = YES;
int port = 443;
BOOL bAutoReconnect = YES;
success = [rest Connect: @"ec2.us-west-2.amazonaws.com" port: [NSNumber numberWithInt: port] tls: bTls autoReconnect: bAutoReconnect];
// Provide AWS credentials for the REST call.
CkoAuthAws *authAws = [[CkoAuthAws alloc] init];
authAws.AccessKey = @"AWS_ACCESS_KEY";
authAws.SecretKey = @"AWS_SECRET_KEY";
// the region should match the region part of the domain passed to the REST connect method (above).
authAws.Region = @"us-west-2";
authAws.ServiceName = @"ec2";
[rest SetAuthAws: authAws];
[rest AddQueryParam: @"Action" value: @"DescribeInstanceStatus"];
[rest AddQueryParam: @"Version" value: @"2016-11-15"];
[rest AddQueryParam: @"InstanceId.1" value: @"i-999719995399c9999"];
// If you have additional instances to check, then add them with .2, .3, etc.
[rest AddQueryParam: @"InstanceId.2" value: @"i-999719995399c0000"];
[rest AddQueryParam: @"InstanceId.3" value: @"i-999719995399c0111"];
// ...
// Instead of checking specific instances, you can check all instances by
// sending the IncludeAllInstances param
[rest AddQueryParam: @"IncludeAllInstances" value: @"true"];
NSString *responseXml = [rest FullRequestNoBody: @"GET" uriPath: @"/"];
if (rest.LastMethodSuccess != YES) {
NSLog(@"%@",rest.LastErrorText);
return;
}
// A successful response will have a status code equal to 200.
if ([rest.ResponseStatusCode intValue] != 200) {
NSLog(@"%@%d",@"response status code = ",[rest.ResponseStatusCode intValue]);
NSLog(@"%@%@",@"response status text = ",rest.ResponseStatusText);
NSLog(@"%@%@",@"response header: ",rest.ResponseHeader);
NSLog(@"%@%@",@"response body: ",responseXml);
return;
}
// Examine the successful XML response.
CkoXml *xml = [[CkoXml alloc] init];
[xml LoadXml: responseXml];
NSLog(@"%@",[xml GetXml]);
// Here is a sample response:
// Use this online tool to generate parsing code from sample XML:
// Generate Parsing Code from XML
// <DescribeInstanceStatusResponse xmlns="http://ec2.amazonaws.com/doc/2016-11-15/">
// <requestId>3be1508e-c444-4fef-89cc-0b1223c4f02fEXAMPLE</requestId>
// <instanceStatusSet>
// <item>
// <instanceId>i-1234567890abcdef0</instanceId>
// <availabilityZone>us-east-1d</availabilityZone>
// <instanceState>
// <code>16</code>
// <name>running</name>
// </instanceState>
// <systemStatus>
// <status>impaired</status>
// <details>
// <item>
// <name>reachability</name>
// <status>failed</status>
// <impairedSince>YYYY-MM-DDTHH:MM:SS.000Z</impairedSince>
// </item>
// </details>
// </systemStatus>
// <instanceStatus>
// <status>impaired</status>
// <details>
// <item>
// <name>reachability</name>
// <status>failed</status>
// <impairedSince>YYYY-MM-DDTHH:MM:SS.000Z</impairedSince>
// </item>
// </details>
// </instanceStatus>
// <eventsSet>
// <item>
// <code>instance-retirement</code>
// <description>The instance is running on degraded hardware</description>
// <notBefore>YYYY-MM-DDTHH:MM:SS+0000</notBefore>
// <notAfter>YYYY-MM-DDTHH:MM:SS+0000</notAfter>
// </item>
// </eventsSet>
// </item>
// <item>
// <instanceId>i-0598c7d356eba48d7</instanceId>
// <availabilityZone>us-east-1d</availabilityZone>
// <instanceState>
// <code>16</code>
// <name>running</name>
// </instanceState>
// <systemStatus>
// <status>ok</status>
// <details>
// <item>
// <name>reachability</name>
// <status>passed</status>
// </item>
// </details>
// </systemStatus>
// <instanceStatus>
// <status>ok</status>
// <details>
// <item>
// <name>reachability</name>
// <status>passed</status>
// </item>
// </details>
// </instanceStatus>
// <eventsSet>
// <item>
// <code>instance-reboot</code>
// <description>The instance is scheduled for a reboot</description>
// <notBefore>YYYY-MM-DDTHH:MM:SS+0000</notBefore>
// <notAfter>YYYY-MM-DDTHH:MM:SS+0000</notAfter>
// </item>
// </eventsSet>
// </item>
// <item>
// <instanceId>i-0987654321abcdef0</instanceId>
// <availabilityZone>us-east-1d</availabilityZone>
// <instanceState>
// <code>16</code>
// <name>running</name>
// </instanceState>
// <systemStatus>
// <status>ok</status>
// <details>
// <item>
// <name>reachability</name>
// <status>passed</status>
// </item>
// </details>
// </systemStatus>
// <instanceStatus>
// <status>ok</status>
// <details>
// <item>
// <name>reachability</name>
// <status>passed</status>
// </item>
// </details>
// </instanceStatus>
// </item>
// <item>
// <instanceId>i-0598c7d356eba48d8</instanceId>
// <availabilityZone>us-east-1d</availabilityZone>
// <instanceState>
// <code>16</code>
// <name>running</name>
// </instanceState>
// <systemStatus>
// <status>ok</status>
// <details>
// <item>
// <name>reachability</name>
// <status>passed</status>
// </item>
// </details>
// </systemStatus>
// <instanceStatus>
// <status>insufficient-data</status>
// <details>
// <item>
// <name>reachability</name>
// <status>insufficient-data</status>
// </item>
// </details>
// </instanceStatus>
// </item>
// </instanceStatusSet>
// </DescribeInstanceStatusResponse>