Sample code for 30+ languages & platforms
VBScript

EC2 Check Instance Status

See more Amazon EC2 Examples

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

Chilkat VBScript Downloads

VBScript
Dim fso, outFile
Set fso = CreateObject("Scripting.FileSystemObject")
'Create a Unicode (utf-16) output text file.
Set outFile = fso.CreateTextFile("output.txt", True, True)

success = 0

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

set rest = CreateObject("Chilkat.Rest")

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

' Provide AWS credentials for the REST call.
set authAws = CreateObject("Chilkat.AuthAws")
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"

success = rest.SetAuthAws(authAws)

success = rest.AddQueryParam("Action","DescribeInstanceStatus")
success = rest.AddQueryParam("Version","2016-11-15")

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

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

responseXml = rest.FullRequestNoBody("GET","/")
If (rest.LastMethodSuccess <> 1) Then
    outFile.WriteLine(rest.LastErrorText)
    WScript.Quit
End If

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

' Examine the successful XML response.
set xml = CreateObject("Chilkat.Xml")
success = xml.LoadXml(responseXml)
outFile.WriteLine(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>

outFile.Close