PureBasic
PureBasic
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 PureBasic Downloads
IncludeFile "CkAuthAws.pb"
IncludeFile "CkJsonObject.pb"
IncludeFile "CkRest.pb"
IncludeFile "CkJsonArray.pb"
Procedure ChilkatExample()
success.i = 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>
;
; {}
rest.i = CkRest::ckCreate()
If rest.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Connect to the Amazon AWS REST server.
; such as https://secretsmanager.us-west-2.amazonaws.com/
bTls.i = 1
port.i = 443
bAutoReconnect.i = 1
success = CkRest::ckConnect(rest,"secretsmanager.us-west-2.amazonaws.com",port,bTls,bAutoReconnect)
; Provide AWS credentials for the REST call.
authAws.i = CkAuthAws::ckCreate()
If authAws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkAuthAws::setCkAccessKey(authAws, "AWS_ACCESS_KEY")
CkAuthAws::setCkSecretKey(authAws, "AWS_SECRET_KEY")
; the region should match our URL above..
CkAuthAws::setCkRegion(authAws, "us-west-2")
CkAuthAws::setCkServiceName(authAws, "secretsmanager")
CkRest::ckSetAuthAws(rest,authAws)
CkRest::ckAddHeader(rest,"Content-Type","application/x-amz-json-1.1")
CkRest::ckAddHeader(rest,"X-Amz-Target","secretsmanager.ListSecrets")
strResponse.s = CkRest::ckFullRequestString(rest,"POST","/","{}")
If CkRest::ckLastMethodSuccess(rest) = 0
Debug CkRest::ckLastErrorText(rest)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
ProcedureReturn
EndIf
respStatusCode.i = CkRest::ckResponseStatusCode(rest)
Debug "response status code = " + Str(respStatusCode)
jResp.i = CkJsonObject::ckCreate()
If jResp.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::setCkEmitCompact(jResp, 0)
CkJsonObject::ckLoad(jResp,strResponse)
If respStatusCode >= 400
Debug "Response Status Code = " + Str(respStatusCode)
Debug "Response Header:"
Debug CkRest::ckResponseHeader(rest)
Debug "Response Body:"
Debug CkJsonObject::ckEmit(jResp)
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkJsonObject::ckDispose(jResp)
ProcedureReturn
EndIf
Debug "Response Body:"
Debug CkJsonObject::ckEmit(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"]
; }
; }
; ]
; }
ARN.s
Description.s
LastChangedDate.s
Name.s
strVal.s
json2.i = CkJsonObject::ckCreate()
If json2.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
jarr.i = CkJsonArray::ckCreate()
If jarr.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
i.i = 0
count_i.i = CkJsonObject::ckSizeOfArray(jResp,"SecretList")
While i < count_i
CkJsonObject::setCkI(jResp, i)
ARN = CkJsonObject::ckStringOf(jResp,"SecretList[i].ARN")
Description = CkJsonObject::ckStringOf(jResp,"SecretList[i].Description")
LastChangedDate = CkJsonObject::ckStringOf(jResp,"SecretList[i].LastChangedDate")
Name = CkJsonObject::ckStringOf(jResp,"SecretList[i].Name")
CkJsonObject::ckObjectOf2(jResp,"SecretList[i].SecretVersionsToStages",json2)
count.i = CkJsonObject::ckSize(json2)
j.i = 0
While j < count
versionName.s = CkJsonObject::ckNameAt(json2,j)
CkJsonObject::ckArrayOf2(json2,versionName,jarr)
stage.s = CkJsonArray::ckStringAt(jarr,0)
Debug "versionName = " + versionName
Debug "stage = " + stage
j = j + 1
Wend
i = i + 1
Wend
CkRest::ckDispose(rest)
CkAuthAws::ckDispose(authAws)
CkJsonObject::ckDispose(jResp)
CkJsonObject::ckDispose(json2)
CkJsonArray::ckDispose(jarr)
ProcedureReturn
EndProcedure