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