@scloud/cdk-patterns
Version:
Serverless CDK patterns for common infrastructure needs
28 lines • 4.03 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.SecretJson = void 0;
const aws_cdk_lib_1 = require("aws-cdk-lib");
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
/**
* Generates a secret value from a template.
* see: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_secretsmanager-readme.html
* @param scope The name of the parent construct's stack is used as a prefix in the secret name
* @param template A json object containing keys and values to be used in the secret
* @param generator Allows you to override defaults for secret generation, e.g. you can set passwordLength
* @param generateStringKey A key in the resulting secret whose value will autonatically be generated according to any values passed in the generator parameter
* @returns A json secret. The values of the keys in the template can be accessed as SecretJson.secretValueFromJson(key)
*/
class SecretJson extends aws_secretsmanager_1.Secret {
constructor(scope, id, template, generateStringKey, generator) {
super(scope, id, {
description: `${aws_cdk_lib_1.Stack.of(scope).stackName}/${id}`,
generateSecretString: {
secretStringTemplate: JSON.stringify(template),
generateStringKey: generateStringKey || 'password',
...generator,
},
});
}
}
exports.SecretJson = SecretJson;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2VjcmV0SnNvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9TZWNyZXRKc29uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUNwQyx1RUFBK0U7QUFHL0U7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFhLFVBQVcsU0FBUSwyQkFBTTtJQUNwQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLFFBQWdDLEVBQUUsaUJBQTBCLEVBQUUsU0FBMEM7UUFDaEosS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixXQUFXLEVBQUUsR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxTQUFTLElBQUksRUFBRSxFQUFFO1lBQ2pELG9CQUFvQixFQUFFO2dCQUNwQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQztnQkFDOUMsaUJBQWlCLEVBQUUsaUJBQWlCLElBQUksVUFBVTtnQkFDbEQsR0FBRyxTQUFTO2FBQ2I7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFYRCxnQ0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgU2VjcmV0LCBTZWNyZXRTdHJpbmdHZW5lcmF0b3IgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5cbi8qKlxuICogR2VuZXJhdGVzIGEgc2VjcmV0IHZhbHVlIGZyb20gYSB0ZW1wbGF0ZS5cbiAqIHNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5hd3Nfc2VjcmV0c21hbmFnZXItcmVhZG1lLmh0bWxcbiAqIEBwYXJhbSBzY29wZSBUaGUgbmFtZSBvZiB0aGUgcGFyZW50IGNvbnN0cnVjdCdzIHN0YWNrIGlzIHVzZWQgYXMgYSBwcmVmaXggaW4gdGhlIHNlY3JldCBuYW1lXG4gKiBAcGFyYW0gdGVtcGxhdGUgQSBqc29uIG9iamVjdCBjb250YWluaW5nIGtleXMgYW5kIHZhbHVlcyB0byBiZSB1c2VkIGluIHRoZSBzZWNyZXRcbiAqIEBwYXJhbSBnZW5lcmF0b3IgQWxsb3dzIHlvdSB0byBvdmVycmlkZSBkZWZhdWx0cyBmb3Igc2VjcmV0IGdlbmVyYXRpb24sIGUuZy4geW91IGNhbiBzZXQgcGFzc3dvcmRMZW5ndGhcbiAqIEBwYXJhbSBnZW5lcmF0ZVN0cmluZ0tleSBBIGtleSBpbiB0aGUgcmVzdWx0aW5nIHNlY3JldCB3aG9zZSB2YWx1ZSB3aWxsIGF1dG9uYXRpY2FsbHkgYmUgZ2VuZXJhdGVkIGFjY29yZGluZyB0byBhbnkgdmFsdWVzIHBhc3NlZCBpbiB0aGUgZ2VuZXJhdG9yIHBhcmFtZXRlclxuICogQHJldHVybnMgQSBqc29uIHNlY3JldC4gVGhlIHZhbHVlcyBvZiB0aGUga2V5cyBpbiB0aGUgdGVtcGxhdGUgY2FuIGJlIGFjY2Vzc2VkIGFzIFNlY3JldEpzb24uc2VjcmV0VmFsdWVGcm9tSnNvbihrZXkpXG4gKi9cbmV4cG9ydCBjbGFzcyBTZWNyZXRKc29uIGV4dGVuZHMgU2VjcmV0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgdGVtcGxhdGU6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4sIGdlbmVyYXRlU3RyaW5nS2V5Pzogc3RyaW5nLCBnZW5lcmF0b3I/OiBQYXJ0aWFsPFNlY3JldFN0cmluZ0dlbmVyYXRvcj4pIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBgJHtTdGFjay5vZihzY29wZSkuc3RhY2tOYW1lfS8ke2lkfWAsXG4gICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICBzZWNyZXRTdHJpbmdUZW1wbGF0ZTogSlNPTi5zdHJpbmdpZnkodGVtcGxhdGUpLFxuICAgICAgICBnZW5lcmF0ZVN0cmluZ0tleTogZ2VuZXJhdGVTdHJpbmdLZXkgfHwgJ3Bhc3N3b3JkJyxcbiAgICAgICAgLi4uZ2VuZXJhdG9yLFxuICAgICAgfSxcbiAgICB9KTtcbiAgfVxufVxuIl19