Sample code for 30+ languages & platforms
Lianja

AWS Secrets Manager - Get Secret Value

See more AWS Secrets Manager Examples

Retrieves the contents of the encrypted fields SecretString or SecretBinary from the specified version of a secret, whichever contains content.

Chilkat Lianja Downloads

Lianja
llSuccess = .F.

// 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.GetSecretValue
// 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>
// 
// {
//   "SecretId": "MyTestDatabaseSecret",
// }

loRest = createobject("CkRest")

// Connect to the Amazon AWS REST server.
// such as https://secretsmanager.us-west-2.amazonaws.com/
llBTls = .T.
lnPort = 443
llBAutoReconnect = .T.
llSuccess = loRest.Connect("secretsmanager.us-west-2.amazonaws.com",lnPort,llBTls,llBAutoReconnect)

// Provide AWS credentials for the REST call.
loAuthAws = createobject("CkAuthAws")
loAuthAws.AccessKey = "AWS_ACCESS_KEY"
loAuthAws.SecretKey = "AWS_SECRET_KEY"
// the region should match our URL above..
loAuthAws.Region = "us-west-2"
loAuthAws.ServiceName = "secretsmanager"

loRest.SetAuthAws(loAuthAws)

// Use this online tool to generate code from sample JSON:
// Generate Code to Create JSON

loJson = createobject("CkJsonObject")

loJson.UpdateString("SecretId","MyTestDatabaseSecret2")

loRest.AddHeader("Content-Type","application/x-amz-json-1.1")
loRest.AddHeader("X-Amz-Target","secretsmanager.GetSecretValue")

loSbRequestBody = createobject("CkStringBuilder")
loJson.EmitSb(loSbRequestBody)
loSbResponseBody = createobject("CkStringBuilder")
llSuccess = loRest.FullRequestSb("POST","/",loSbRequestBody,loSbResponseBody)
if (llSuccess <> .T.) then
    ? loRest.LastErrorText
    release loRest
    release loAuthAws
    release loJson
    release loSbRequestBody
    release loSbResponseBody
    return
endif

lnRespStatusCode = loRest.ResponseStatusCode
? "response status code = " + str(lnRespStatusCode)

loJResp = createobject("CkJsonObject")
loJResp.EmitCompact = .F.
loJResp.LoadSb(loSbResponseBody)

if (lnRespStatusCode >= 400) then
    ? "Response Status Code = " + str(lnRespStatusCode)
    ? "Response Header:"
    ? loRest.ResponseHeader
    ? "Response Body:"
    ? loJResp.Emit()
    release loRest
    release loAuthAws
    release loJson
    release loSbRequestBody
    release loSbResponseBody
    release loJResp
    return
endif

? "Response Body:"
? loJResp.Emit()

// Sample response body:

// {
//   "ARN":"arn:aws:secretsmanager:us-west-2:123456789012:secret:MyTestDatabaseSecret-a1b2c3",
//   "CreatedDate":1.523477145713E9,
//   "Name":"MyTestDatabaseSecret",
//   "SecretString":"{\n  \"username\":\"david\",\n  \"password\":\"BnQw&XDWgaEeT9XGTT29\"\n}\n",
//   "VersionId":"EXAMPLE1-90ab-cdef-fedc-ba987SECRET1"
// }

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

lcARN = loJResp.StringOf("ARN")
lcCreatedDate = loJResp.StringOf("CreatedDate")
lcName = loJResp.StringOf("Name")
lcSecretString = loJResp.StringOf("SecretString")
lcVersionId = loJResp.StringOf("VersionId")


release loRest
release loAuthAws
release loJson
release loSbRequestBody
release loSbResponseBody
release loJResp