Sample code for 30+ languages & platforms
Lua

EC2 Check Instance Status

See more Amazon EC2 Examples

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

Chilkat Lua Downloads

Lua
local chilkat = require("chilkat")

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

local rest = chilkat.Rest.new()

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

-- Provide AWS credentials for the REST call.
local authAws = chilkat.AuthAws.new()
authAws.access_key = "AWS_ACCESS_KEY"
authAws.secret_key = "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.service_name = "ec2"

rest:set_auth_aws(authAws)

rest:add_query_param("Action", "DescribeInstanceStatus")
rest:add_query_param("Version", "2016-11-15")

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

-- Instead of checking specific instances, you can check all instances by
-- sending the IncludeAllInstances param
rest:add_query_param("IncludeAllInstances", "true")

local responseXml = rest:full_request_no_body("GET", "/")
if not rest.last_method_success then
    print(rest.last_error_text)
    return
end

-- A successful response will have a status code equal to 200.
if rest.response_status_code ~= 200 then
    print("response status code = " .. rest.response_status_code)
    print("response status text = " .. rest.response_status_text)
    print("response header: " .. rest.response_header)
    print("response body: " .. responseXml)
    return
end

-- Examine the successful XML response.
local xml = chilkat.Xml.new()
xml:load_xml(responseXml)
print(xml:get_xml())

-- 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>