Sample code for 30+ languages & platforms
Tcl

AWS Secrets Manager - List Secrets

See more AWS Secrets Manager Examples

Lists the secrets that are stored by Secrets Manager in the AWS account. Lists the secrets that are stored by Secrets Manager in the AWS account.

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.

# Sends the following sample request.
# Note: Chilkat will automatically add Content-Length, X-Amz-Date, Accept-Encoding, and Authorization

# POST / HTTP/1.1
# Host: secretsmanager.region.domain
# Accept-Encoding: identity
# X-Amz-Target: secretsmanager.ListSecrets
# Content-Type: application/x-amz-json-1.1
# X-Amz-Date: <date>
# Authorization: AWS4-HMAC-SHA256 Credential=<credentials>,SignedHeaders=<headers>, Signature=<signature>
# Content-Length: <payload-size-bytes>
# 
# {}

set rest [new_CkRest]

# Connect to the Amazon AWS REST server.
# such as https://secretsmanager.us-west-2.amazonaws.com/
set bTls 1
set port 443
set bAutoReconnect 1
set success [CkRest_Connect $rest "secretsmanager.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 "secretsmanager"

CkRest_SetAuthAws $rest $authAws

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

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

set respStatusCode [CkRest_get_ResponseStatusCode $rest]
puts "response status code = $respStatusCode"

set jResp [new_CkJsonObject]

CkJsonObject_put_EmitCompact $jResp 0
CkJsonObject_Load $jResp $strResponse

if {$respStatusCode >= 400} then {
    puts "Response Status Code = $respStatusCode"
    puts "Response Header:"
    puts [CkRest_responseHeader $rest]
    puts "Response Body:"
    puts [CkJsonObject_emit $jResp]
    delete_CkRest $rest
    delete_CkAuthAws $authAws
    delete_CkJsonObject $jResp
    exit
}

puts "Response Body:"
puts [CkJsonObject_emit $jResp]

# Sample response body:

# {
#   "SecretList":[
#     {
#       "ARN":"arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
#       "Description":"My test database secret",
#       "LastChangedDate":1.523477145729E9,
#       "Name":"MyTestDatabaseSecret",
#       "SecretVersionsToStages":{
#         "EXAMPLE2-90ab-cdef-fedc-ba987EXAMPLE":["AWSCURRENT"]
#       }
#     },
#     {
#       "ARN":"arn:aws:secretsmanager:us-west-2:123456789012:secret:AnotherDatabaseSecret-d4e5f6",
#       "Description":"Another secret created for a different database",
#       "LastChangedDate":1.523482025685E9,
#       "Name":"AnotherDatabaseSecret",
#       "SecretVersionsToStages":{
#         "EXAMPLE3-90ab-cdef-fedc-ba987EXAMPLE":["AWSCURRENT"]
#       }
#     }
#   ]
# }

set json2 [new_CkJsonObject]

set jarr [new_CkJsonArray]

set i 0
set count_i [CkJsonObject_SizeOfArray $jResp "SecretList"]
while {$i < $count_i} {
    CkJsonObject_put_I $jResp $i
    set ARN [CkJsonObject_stringOf $jResp "SecretList[i].ARN"]
    set Description [CkJsonObject_stringOf $jResp "SecretList[i].Description"]
    set LastChangedDate [CkJsonObject_stringOf $jResp "SecretList[i].LastChangedDate"]
    set Name [CkJsonObject_stringOf $jResp "SecretList[i].Name"]

    CkJsonObject_ObjectOf2 $jResp "SecretList[i].SecretVersionsToStages" $json2
    set count [CkJsonObject_get_Size $json2]
    set j 0
    while {$j < $count} {
        set versionName [CkJsonObject_nameAt $json2 $j]
        CkJsonObject_ArrayOf2 $json2 $versionName $jarr
        set stage [CkJsonArray_stringAt $jarr 0]
        puts "versionName = $versionName"
        puts "stage = $stage"
        set j [expr $j + 1]
    }

    set i [expr $i + 1]
}

delete_CkRest $rest
delete_CkAuthAws $authAws
delete_CkJsonObject $jResp
delete_CkJsonObject $json2
delete_CkJsonArray $jarr