Sample code for 30+ languages & platforms
B4X

EC2 Check Instance Status

See more Amazon EC2 Examples

Demonstrates how to send a request to check the status of Amazon EC2 instances.

Chilkat B4X Downloads

B4X
Dim success As Boolean = False

'  This example requires the Chilkat API to have been previously unlocked.
'  See Global Unlock Sample for sample code.

Dim rest As ChilkatRest
rest.Initialize("rest")

'  Connect to the Amazon AWS server.
'  such as https://ec2.amazonaws.com/
Dim bTls As Boolean = True
Dim port As Int = 443
Dim bAutoReconnect As Boolean = True
success = rest.Connect("ec2.us-west-2.amazonaws.com", port, bTls, bAutoReconnect)

'  Provide AWS credentials for the REST call.
Dim authAws As ChilkatAuthAws
authAws.Initialize
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", "DescribeInstanceStatus")
rest.AddQueryParam("Version", "2016-11-15")

rest.AddQueryParam("InstanceId.1", "i-999719995399c9999")
'  If you have additional instances to check, then add them with .2, .3, etc.
rest.AddQueryParam("InstanceId.2", "i-999719995399c0000")
rest.AddQueryParam("InstanceId.3", "i-999719995399c0111")
'  ...

'  Instead of checking specific instances, you can check all instances by 
'  sending the IncludeAllInstances param
rest.AddQueryParam("IncludeAllInstances", "true")

Dim responseXml As String = rest.FullRequestNoBody("GET", "/")
If rest.LastMethodSuccess <> True Then
    Log(rest.LastErrorText)
    Return
End If


'  A successful response will have a status code equal to 200.
If rest.ResponseStatusCode <> 200 Then
    Log("response status code = " & rest.ResponseStatusCode)
    Log("response status text = " & rest.ResponseStatusText)
    Log("response header: " & rest.ResponseHeader)
    Log("response body: " & responseXml)
    Return
End If


'  Examine the successful XML response.
Dim xml As ChilkatXml
xml.Initialize
xml.LoadXml(responseXml)
Log(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>