Sample code for 30+ languages & platforms
Tcl

AWS KMS List Keys

See more AWS KMS Examples

Gets a list of all KMS keys in the caller's AWS account and Region.

Chilkat Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set rest [new_CkRest]

# Connect to the Amazon AWS REST server.
# Make sure to use the region that is correct for you.
# such as https://kms.us-west-2.amazonaws.com/
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "kms.us-west-2.amazonaws.com" $port $bTls $bAutoReconnect]

# Provide AWS credentials for the REST call.
set authAws [new_CkAuthAws]

CkAuthAws_put_AccessKey $authAws "AWS_ACCESS_KEY"
CkAuthAws_put_SecretKey $authAws "AWS_SECRET_KEY"
# the region should match our URL above..
CkAuthAws_put_Region $authAws "us-west-2"
CkAuthAws_put_ServiceName $authAws "kms"

CkRest_SetAuthAws $rest $authAws

CkRest_AddHeader $rest "X-Amz-Target" "TrentService.ListKeys"
CkRest_AddHeader $rest "Content-Type" "application/x-amz-json-1.1"

set strJson [CkRest_fullRequestString $rest "POST" "/" "{}"]
if {[CkRest_get_LastMethodSuccess $rest] != 1} then {
    puts [CkRest_lastErrorText $rest]
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    exit
}

# A successful response will have a status code equal to 200.
if {[CkRest_get_ResponseStatusCode $rest] != 200} then {
    puts "response status code = [CkRest_get_ResponseStatusCode $rest]"
    puts "response status text = [CkRest_responseStatusText $rest]"
    puts "response header: [CkRest_responseHeader $rest]"
    puts "response body: $strJson"
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    exit
}

# Examine the successful JSON response (shown below)
set json [new_CkJsonObject]

CkJsonObject_Load $json $strJson
CkJsonObject_put_EmitCompact $json 0

puts [CkJsonObject_emit $json]

# Sample output:

# {
#   "KeyCount": 4,
#   "Keys": [
#     {
#       "KeyArn": "arn:aws:kms:us-west-2:954491834127:key/082f8520-7afc-4a09-b703-89b7243072e5",
#       "KeyId": "082f8520-7afc-4a09-b703-89b7243072e5"
#     },
#     {
#       "KeyArn": "arn:aws:kms:us-west-2:954491834127:key/17432483-ff08-4950-93d3-f46ebb5e17d1",
#       "KeyId": "17432483-ff08-4950-93d3-f46ebb5e17d1"
#     },
#     {
#       "KeyArn": "arn:aws:kms:us-west-2:954491834127:key/1b0e5b3c-0675-4510-adb6-a75b40a93da0",
#       "KeyId": "1b0e5b3c-0675-4510-adb6-a75b40a93da0"
#     },
#     {
#       "KeyArn": "arn:aws:kms:us-west-2:954491834127:key/265e3993-428b-4581-9466-b1030a53062f",
#       "KeyId": "265e3993-428b-4581-9466-b1030a53062f"
#     },
#   ],
#   "Truncated": false
# }

# Use this online tool to generate parsing code from sample JSON: 
# Generate Parsing Code from JSON

set KeyCount [CkJsonObject_IntOf $json "KeyCount"]
set Truncated [CkJsonObject_BoolOf $json "Truncated"]
set i 0
set count_i [CkJsonObject_SizeOfArray $json "Keys"]
while {$i < $count_i} {
    CkJsonObject_put_I $json $i
    set KeyArn [CkJsonObject_stringOf $json "Keys[i].KeyArn"]
    set KeyId [CkJsonObject_stringOf $json "Keys[i].KeyId"]
    set i [expr $i + 1]
}

delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkJsonObject $json