Sample code for 30+ languages & platforms
Unicode C++

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 Unicode C++ Downloads

Unicode C++
#include <CkRestW.h>
#include <CkAuthAwsW.h>
#include <CkJsonObjectW.h>
#include <CkStringBuilderW.h>

void ChilkatSample(void)
    {
    bool success = false;

    // 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",
    // }

    CkRestW rest;

    // Connect to the Amazon AWS REST server.
    // such as https://secretsmanager.us-west-2.amazonaws.com/
    bool bTls = true;
    int port = 443;
    bool bAutoReconnect = true;
    success = rest.Connect(L"secretsmanager.us-west-2.amazonaws.com",port,bTls,bAutoReconnect);

    // Provide AWS credentials for the REST call.
    CkAuthAwsW authAws;
    authAws.put_AccessKey(L"AWS_ACCESS_KEY");
    authAws.put_SecretKey(L"AWS_SECRET_KEY");
    // the region should match our URL above..
    authAws.put_Region(L"us-west-2");
    authAws.put_ServiceName(L"secretsmanager");

    rest.SetAuthAws(authAws);

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

    CkJsonObjectW json;

    json.UpdateString(L"SecretId",L"MyTestDatabaseSecret2");

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

    CkStringBuilderW sbRequestBody;
    json.EmitSb(sbRequestBody);
    CkStringBuilderW sbResponseBody;
    success = rest.FullRequestSb(L"POST",L"/",sbRequestBody,sbResponseBody);
    if (success != true) {
        wprintf(L"%s\n",rest.lastErrorText());
        return;
    }

    int respStatusCode = rest.get_ResponseStatusCode();
    wprintf(L"response status code = %d\n",respStatusCode);

    CkJsonObjectW jResp;
    jResp.put_EmitCompact(false);
    jResp.LoadSb(sbResponseBody);

    if (respStatusCode >= 400) {
        wprintf(L"Response Status Code = %d\n",respStatusCode);
        wprintf(L"Response Header:\n");
        wprintf(L"%s\n",rest.responseHeader());
        wprintf(L"Response Body:\n");
        wprintf(L"%s\n",jResp.emit());
        return;
    }

    wprintf(L"Response Body:\n");
    wprintf(L"%s\n",jResp.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

    const wchar_t *ARN = jResp.stringOf(L"ARN");
    const wchar_t *CreatedDate = jResp.stringOf(L"CreatedDate");
    const wchar_t *Name = jResp.stringOf(L"Name");
    const wchar_t *SecretString = jResp.stringOf(L"SecretString");
    const wchar_t *VersionId = jResp.stringOf(L"VersionId");
    }