UNPKG

aws-cdk

Version:

CDK Toolkit, the command line tool for CDK apps

59 lines 8.1 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.SSMContextProviderPlugin = void 0; const sdk_provider_1 = require("../api/aws-auth/sdk-provider"); const logging_1 = require("../logging"); const error_1 = require("../toolkit/error"); /** * Plugin to read arbitrary SSM parameter names */ class SSMContextProviderPlugin { constructor(aws) { this.aws = aws; } async getValue(args) { const region = args.region; const account = args.account; if (!('parameterName' in args)) { throw new error_1.ContextProviderError('parameterName must be provided in props for SSMContextProviderPlugin'); } const parameterName = args.parameterName; (0, logging_1.debug)(`Reading SSM parameter ${account}:${region}:${parameterName}`); const response = await this.getSsmParameterValue(args); const parameterNotFound = !response.Parameter || response.Parameter.Value === undefined; const suppressError = 'ignoreErrorOnMissingContext' in args && args.ignoreErrorOnMissingContext; if (parameterNotFound && suppressError && 'dummyValue' in args) { return args.dummyValue; } if (parameterNotFound) { throw new error_1.ContextProviderError(`SSM parameter not available in account ${account}, region ${region}: ${parameterName}`); } // will not be undefined because we've handled undefined cases above return response.Parameter.Value; } /** * Gets the value of an SSM Parameter, while not throwin if the parameter does not exist. * @param account the account in which the SSM Parameter is expected to be. * @param region the region in which the SSM Parameter is expected to be. * @param parameterName the name of the SSM Parameter * @param lookupRoleArn the ARN of the lookup role. * * @returns the result of the ``GetParameter`` operation. * * @throws Error if a service error (other than ``ParameterNotFound``) occurs. */ async getSsmParameterValue(args) { const ssm = (await (0, sdk_provider_1.initContextProviderSdk)(this.aws, args)).ssm(); try { return await ssm.getParameter({ Name: args.parameterName }); } catch (e) { if (e.name === 'ParameterNotFound') { return { $metadata: {} }; } throw e; } } } exports.SSMContextProviderPlugin = SSMContextProviderPlugin; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3NtLXBhcmFtZXRlcnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzc20tcGFyYW1ldGVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSwrREFBd0Y7QUFFeEYsd0NBQW1DO0FBQ25DLDRDQUF3RDtBQUV4RDs7R0FFRztBQUNILE1BQWEsd0JBQXdCO0lBQ25DLFlBQTZCLEdBQWdCO1FBQWhCLFFBQUcsR0FBSCxHQUFHLENBQWE7SUFBRyxDQUFDO0lBRTFDLEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBOEI7UUFDbEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUMzQixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDO1FBRTdCLElBQUksQ0FBQyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQy9CLE1BQU0sSUFBSSw0QkFBb0IsQ0FBQyxzRUFBc0UsQ0FBQyxDQUFDO1FBQ3pHLENBQUM7UUFDRCxNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsYUFBYSxDQUFDO1FBQ3pDLElBQUEsZUFBSyxFQUFDLHlCQUF5QixPQUFPLElBQUksTUFBTSxJQUFJLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFFckUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdkQsTUFBTSxpQkFBaUIsR0FBWSxDQUFDLFFBQVEsQ0FBQyxTQUFTLElBQUksUUFBUSxDQUFDLFNBQVMsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUFDO1FBQ2pHLE1BQU0sYUFBYSxHQUFHLDZCQUE2QixJQUFJLElBQUksSUFBSyxJQUFJLENBQUMsMkJBQXVDLENBQUM7UUFDN0csSUFBSSxpQkFBaUIsSUFBSSxhQUFhLElBQUksWUFBWSxJQUFJLElBQUksRUFBRSxDQUFDO1lBQy9ELE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztRQUN6QixDQUFDO1FBQ0QsSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQ3RCLE1BQU0sSUFBSSw0QkFBb0IsQ0FBQywwQ0FBMEMsT0FBTyxZQUFZLE1BQU0sS0FBSyxhQUFhLEVBQUUsQ0FBQyxDQUFDO1FBQzFILENBQUM7UUFDRCxvRUFBb0U7UUFDcEUsT0FBTyxRQUFRLENBQUMsU0FBVSxDQUFDLEtBQUssQ0FBQztJQUNuQyxDQUFDO0lBRUQ7Ozs7Ozs7Ozs7T0FVRztJQUNLLEtBQUssQ0FBQyxvQkFBb0IsQ0FBQyxJQUE4QjtRQUMvRCxNQUFNLEdBQUcsR0FBRyxDQUFDLE1BQU0sSUFBQSxxQ0FBc0IsRUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDakUsSUFBSSxDQUFDO1lBQ0gsT0FBTyxNQUFNLEdBQUcsQ0FBQyxZQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDOUQsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLG1CQUFtQixFQUFFLENBQUM7Z0JBQ25DLE9BQU8sRUFBRSxTQUFTLEVBQUUsRUFBRSxFQUFFLENBQUM7WUFDM0IsQ0FBQztZQUNELE1BQU0sQ0FBQyxDQUFDO1FBQ1YsQ0FBQztJQUNILENBQUM7Q0FDRjtBQWhERCw0REFnREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeSB9IGZyb20gJ0Bhd3MtY2RrL2Nsb3VkLWFzc2VtYmx5LXNjaGVtYSc7XG5pbXBvcnQgdHlwZSB7IEdldFBhcmFtZXRlckNvbW1hbmRPdXRwdXQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtc3NtJztcbmltcG9ydCB7IHR5cGUgU2RrUHJvdmlkZXIsIGluaXRDb250ZXh0UHJvdmlkZXJTZGsgfSBmcm9tICcuLi9hcGkvYXdzLWF1dGgvc2RrLXByb3ZpZGVyJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlclBsdWdpbiB9IGZyb20gJy4uL2FwaS9wbHVnaW4nO1xuaW1wb3J0IHsgZGVidWcgfSBmcm9tICcuLi9sb2dnaW5nJztcbmltcG9ydCB7IENvbnRleHRQcm92aWRlckVycm9yIH0gZnJvbSAnLi4vdG9vbGtpdC9lcnJvcic7XG5cbi8qKlxuICogUGx1Z2luIHRvIHJlYWQgYXJiaXRyYXJ5IFNTTSBwYXJhbWV0ZXIgbmFtZXNcbiAqL1xuZXhwb3J0IGNsYXNzIFNTTUNvbnRleHRQcm92aWRlclBsdWdpbiBpbXBsZW1lbnRzIENvbnRleHRQcm92aWRlclBsdWdpbiB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgcmVhZG9ubHkgYXdzOiBTZGtQcm92aWRlcikge31cblxuICBwdWJsaWMgYXN5bmMgZ2V0VmFsdWUoYXJnczogU1NNUGFyYW1ldGVyQ29udGV4dFF1ZXJ5KSB7XG4gICAgY29uc3QgcmVnaW9uID0gYXJncy5yZWdpb247XG4gICAgY29uc3QgYWNjb3VudCA9IGFyZ3MuYWNjb3VudDtcblxuICAgIGlmICghKCdwYXJhbWV0ZXJOYW1lJyBpbiBhcmdzKSkge1xuICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKCdwYXJhbWV0ZXJOYW1lIG11c3QgYmUgcHJvdmlkZWQgaW4gcHJvcHMgZm9yIFNTTUNvbnRleHRQcm92aWRlclBsdWdpbicpO1xuICAgIH1cbiAgICBjb25zdCBwYXJhbWV0ZXJOYW1lID0gYXJncy5wYXJhbWV0ZXJOYW1lO1xuICAgIGRlYnVnKGBSZWFkaW5nIFNTTSBwYXJhbWV0ZXIgJHthY2NvdW50fToke3JlZ2lvbn06JHtwYXJhbWV0ZXJOYW1lfWApO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCB0aGlzLmdldFNzbVBhcmFtZXRlclZhbHVlKGFyZ3MpO1xuICAgIGNvbnN0IHBhcmFtZXRlck5vdEZvdW5kOiBib29sZWFuID0gIXJlc3BvbnNlLlBhcmFtZXRlciB8fCByZXNwb25zZS5QYXJhbWV0ZXIuVmFsdWUgPT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBzdXBwcmVzc0Vycm9yID0gJ2lnbm9yZUVycm9yT25NaXNzaW5nQ29udGV4dCcgaW4gYXJncyAmJiAoYXJncy5pZ25vcmVFcnJvck9uTWlzc2luZ0NvbnRleHQgYXMgYm9vbGVhbik7XG4gICAgaWYgKHBhcmFtZXRlck5vdEZvdW5kICYmIHN1cHByZXNzRXJyb3IgJiYgJ2R1bW15VmFsdWUnIGluIGFyZ3MpIHtcbiAgICAgIHJldHVybiBhcmdzLmR1bW15VmFsdWU7XG4gICAgfVxuICAgIGlmIChwYXJhbWV0ZXJOb3RGb3VuZCkge1xuICAgICAgdGhyb3cgbmV3IENvbnRleHRQcm92aWRlckVycm9yKGBTU00gcGFyYW1ldGVyIG5vdCBhdmFpbGFibGUgaW4gYWNjb3VudCAke2FjY291bnR9LCByZWdpb24gJHtyZWdpb259OiAke3BhcmFtZXRlck5hbWV9YCk7XG4gICAgfVxuICAgIC8vIHdpbGwgbm90IGJlIHVuZGVmaW5lZCBiZWNhdXNlIHdlJ3ZlIGhhbmRsZWQgdW5kZWZpbmVkIGNhc2VzIGFib3ZlXG4gICAgcmV0dXJuIHJlc3BvbnNlLlBhcmFtZXRlciEuVmFsdWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyB0aGUgdmFsdWUgb2YgYW4gU1NNIFBhcmFtZXRlciwgd2hpbGUgbm90IHRocm93aW4gaWYgdGhlIHBhcmFtZXRlciBkb2VzIG5vdCBleGlzdC5cbiAgICogQHBhcmFtIGFjY291bnQgICAgICAgdGhlIGFjY291bnQgaW4gd2hpY2ggdGhlIFNTTSBQYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUuXG4gICAqIEBwYXJhbSByZWdpb24gICAgICAgIHRoZSByZWdpb24gaW4gd2hpY2ggdGhlIFNTTSBQYXJhbWV0ZXIgaXMgZXhwZWN0ZWQgdG8gYmUuXG4gICAqIEBwYXJhbSBwYXJhbWV0ZXJOYW1lIHRoZSBuYW1lIG9mIHRoZSBTU00gUGFyYW1ldGVyXG4gICAqIEBwYXJhbSBsb29rdXBSb2xlQXJuIHRoZSBBUk4gb2YgdGhlIGxvb2t1cCByb2xlLlxuICAgKlxuICAgKiBAcmV0dXJucyB0aGUgcmVzdWx0IG9mIHRoZSBgYEdldFBhcmFtZXRlcmBgIG9wZXJhdGlvbi5cbiAgICpcbiAgICogQHRocm93cyBFcnJvciBpZiBhIHNlcnZpY2UgZXJyb3IgKG90aGVyIHRoYW4gYGBQYXJhbWV0ZXJOb3RGb3VuZGBgKSBvY2N1cnMuXG4gICAqL1xuICBwcml2YXRlIGFzeW5jIGdldFNzbVBhcmFtZXRlclZhbHVlKGFyZ3M6IFNTTVBhcmFtZXRlckNvbnRleHRRdWVyeSk6IFByb21pc2U8R2V0UGFyYW1ldGVyQ29tbWFuZE91dHB1dD4ge1xuICAgIGNvbnN0IHNzbSA9IChhd2FpdCBpbml0Q29udGV4dFByb3ZpZGVyU2RrKHRoaXMuYXdzLCBhcmdzKSkuc3NtKCk7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBzc20uZ2V0UGFyYW1ldGVyKHsgTmFtZTogYXJncy5wYXJhbWV0ZXJOYW1lIH0pO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgaWYgKGUubmFtZSA9PT0gJ1BhcmFtZXRlck5vdEZvdW5kJykge1xuICAgICAgICByZXR1cm4geyAkbWV0YWRhdGE6IHt9IH07XG4gICAgICB9XG4gICAgICB0aHJvdyBlO1xuICAgIH1cbiAgfVxufVxuIl19