getSecretValue()

in aws-greengrass-core-sdk/secretsmanager.js [75:117]


    getSecretValue(params, callback) {
        const secretId = Util.getParameter(params, KEY_SECRET_ID);
        const versionId = Util.getParameter(params, KEY_VERSION_ID);
        const versionStage = Util.getParameter(params, KEY_VERSION_STAGE);
        const isJSONResultFlagSet = Util.getParameter(params, KEY_JSON_RESULT_FLAG);

        if (secretId === undefined) {
            callback(new Error(`"${KEY_SECRET_ID}" is a required parameter`), null);
            return;
        }
        // TODO: Remove this once we support query by VersionId
        if (versionId !== undefined) {
            callback(new Error('Query by VersionId is not yet supported'), null);
            return;
        }
        if (versionId !== undefined && versionStage !== undefined) {
            callback(new Error('VersionId and VersionStage cannot both be specified at the same time'), null);
            return;
        }

        const getSecretValueRequestBytes = SecretsManager._generateGetSecretValueRequestBytes(secretId, versionId, versionStage);

        const invokeParams = {
            FunctionName: SECRETS_MANAGER_FUNCTION_ARN,
            Payload: getSecretValueRequestBytes,
        };

        console.log(`Getting secret value from secrets manager: ${getSecretValueRequestBytes}`);

        this.lambda.invoke(invokeParams, (err, data) => {
            if (err) {
                callback(err, null); // an error occurred
            } else if (SecretsManager._is200Response(data.Payload)) {
                // successful response
                if (isJSONResultFlagSet) {
                    callback(null, JSON.parse(data.Payload));
                }
                callback(null, data.Payload);
            } else {
                callback(new Error(JSON.stringify(data.Payload)), null); // error response
            }
        });
    }