@fjall/components-infrastructure 0.1.11 → 0.1.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/config/aws/identityCenter.d.ts +3 -4
- package/dist/lib/config/aws/identityCenter.js +7 -2
- package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +10 -0
- package/dist/lib/config/aws/identityCenterGroupMembership.js +96 -0
- package/dist/lib/config/aws/identityCenterUser.js +3 -3
- package/dist/lib/config/aws/index.d.ts +0 -1
- package/dist/lib/config/aws/index.js +1 -2
- package/dist/lib/config/aws/ipamPoolId.d.ts +1 -0
- package/dist/lib/config/aws/ipamPoolId.js +5 -3
- package/dist/lib/config/aws/organisation.d.ts +9 -9
- package/dist/lib/config/aws/organisation.js +31 -61
- package/dist/lib/config/aws/organisationsAccess.d.ts +10 -0
- package/dist/lib/config/aws/organisationsAccess.js +40 -0
- package/dist/lib/patterns/aws/basicApp.d.ts +3 -2
- package/dist/lib/patterns/aws/basicApp.js +5 -5
- package/dist/lib/patterns/aws/buildkite.d.ts +37 -28
- package/dist/lib/patterns/aws/buildkite.js +66 -40
- package/dist/lib/patterns/aws/freeTierApp.d.ts +2 -1
- package/dist/lib/patterns/aws/freeTierApp.js +5 -5
- package/dist/lib/patterns/aws/managedAccount.js +5 -4
- package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +4 -0
- package/dist/lib/patterns/aws/managedIdentityCenter.js +24 -0
- package/dist/lib/patterns/aws/managedOrganisation.d.ts +8 -7
- package/dist/lib/patterns/aws/managedOrganisation.js +22 -16
- package/dist/lib/patterns/aws/spotInstanceApp.d.ts +1 -0
- package/dist/lib/patterns/aws/spotInstanceApp.js +4 -4
- package/dist/lib/resources/aws/awsStack.d.ts +2 -2
- package/dist/lib/resources/aws/awsStack.js +3 -3
- package/dist/lib/resources/aws/database/rdsFreeTier.js +2 -2
- package/dist/lib/resources/aws/networking/ipamPool.js +21 -18
- package/dist/lib/resources/aws/networking/vpc.d.ts +1 -1
- package/dist/lib/resources/aws/networking/vpc.js +5 -3
- package/dist/lib/resources/aws/secrets/kms.js +2 -2
- package/dist/lib/utils/getAccountId.js +5 -4
- package/dist/lib/utils/getAsync.d.ts +10 -0
- package/dist/lib/utils/getAsync.js +37 -0
- package/dist/lib/utils/getCidr.js +4 -4
- package/dist/lib/utils/getConfig.d.ts +4 -2
- package/dist/lib/utils/getConfig.js +20 -16
- package/dist/lib/utils/usersConfig.js +2 -2
- package/package.json +28 -24
- package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +0 -5
- package/dist/lib/config/aws/delegateHostedZoneRole.js +0 -77
- package/dist/lib/config/aws/ipamPool.d.ts +0 -5
- package/dist/lib/config/aws/ipamPool.js +0 -56
- package/dist/lib/config/aws/ipamPoolResourceShare.d.ts +0 -5
- package/dist/lib/config/aws/ipamPoolResourceShare.js +0 -42
- package/dist/lib/config/aws/ramEnableSharing.d.ts +0 -5
- package/dist/lib/config/aws/ramEnableSharing.js +0 -35
- package/dist/lib/config/aws/users.d.ts +0 -5
- package/dist/lib/config/aws/users.js +0 -126
- package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +0 -10
- package/dist/lib/config/fjall/hostedZones/fjall.io.js +0 -25
- package/dist/lib/resources/aws/constant/ecr.d.ts +0 -12
- package/dist/lib/resources/aws/constant/ecr.js +0 -30
- package/dist/lib/resources/aws/constant/vpc.d.ts +0 -26
- package/dist/lib/resources/aws/constant/vpc.js +0 -63
- package/dist/lib/resources/aws/networking/hostedZone.d.ts +0 -21
- package/dist/lib/resources/aws/networking/hostedZone.js +0 -68
- package/dist/lib/resources/aws/store/alias.d.ts +0 -5
- package/dist/lib/resources/aws/store/alias.js +0 -13
- package/dist/lib/resources/aws/store/database.d.ts +0 -18
- package/dist/lib/resources/aws/store/database.js +0 -33
- package/dist/lib/resources/aws/store/index.d.ts +0 -7
- package/dist/lib/resources/aws/store/index.js +0 -24
- package/dist/lib/resources/aws/store/kms.d.ts +0 -14
- package/dist/lib/resources/aws/store/kms.js +0 -34
- package/dist/lib/resources/aws/store/parameter.d.ts +0 -26
- package/dist/lib/resources/aws/store/parameter.js +0 -100
- package/dist/lib/resources/aws/store/rds.d.ts +0 -25
- package/dist/lib/resources/aws/store/rds.js +0 -132
- package/dist/lib/resources/aws/store/s3.d.ts +0 -11
- package/dist/lib/resources/aws/store/s3.js +0 -43
- package/dist/lib/resources/aws/store/secret.d.ts +0 -26
- package/dist/lib/resources/aws/store/secret.js +0 -55
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
-
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
-
};
|
|
16
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
-
__exportStar(require("./alias"), exports);
|
|
18
|
-
__exportStar(require("./database"), exports);
|
|
19
|
-
__exportStar(require("./kms"), exports);
|
|
20
|
-
__exportStar(require("./parameter"), exports);
|
|
21
|
-
__exportStar(require("./rds"), exports);
|
|
22
|
-
__exportStar(require("./s3"), exports);
|
|
23
|
-
__exportStar(require("./secret"), exports);
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMENBQXdCO0FBQ3hCLDZDQUEyQjtBQUMzQix3Q0FBc0I7QUFDdEIsOENBQTRCO0FBQzVCLHdDQUFzQjtBQUN0Qix1Q0FBcUI7QUFDckIsMkNBQXlCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vYWxpYXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2RhdGFiYXNlXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9rbXNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3BhcmFtZXRlclwiO1xuZXhwb3J0ICogZnJvbSBcIi4vcmRzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zM1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc2VjcmV0XCI7XG4iXX0=
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
import { Alias, Key } from "aws-cdk-lib/aws-kms";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { KeyValue } from "../compute/ecs";
|
|
4
|
-
interface CustomerManagedKeyProps {
|
|
5
|
-
description?: string;
|
|
6
|
-
aliasName?: string;
|
|
7
|
-
tags: KeyValue;
|
|
8
|
-
}
|
|
9
|
-
export declare class CustomerManagedKey extends Construct {
|
|
10
|
-
readonly key: Key;
|
|
11
|
-
readonly alias: Alias;
|
|
12
|
-
constructor(scope: Construct, id: string, props: CustomerManagedKeyProps);
|
|
13
|
-
}
|
|
14
|
-
export {};
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CustomerManagedKey = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_kms_1 = require("aws-cdk-lib/aws-kms");
|
|
6
|
-
const constructs_1 = require("constructs");
|
|
7
|
-
const tagResource_1 = require("../../../utils/tagResource");
|
|
8
|
-
class CustomerManagedKey extends constructs_1.Construct {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id);
|
|
11
|
-
this.key = new aws_kms_1.Key(this, `${id}Key`, {
|
|
12
|
-
description: props.description || `${id} KMS Key`,
|
|
13
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY
|
|
14
|
-
});
|
|
15
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}KeyArn`, {
|
|
16
|
-
key: `${id}Arn`,
|
|
17
|
-
value: this.key.keyArn,
|
|
18
|
-
exportName: `${id}KeyArn`
|
|
19
|
-
});
|
|
20
|
-
(0, tagResource_1.default)(this.key, props.tags);
|
|
21
|
-
this.alias = new aws_kms_1.Alias(this, `${id}KeyAlias`, {
|
|
22
|
-
aliasName: props.aliasName || `cmk/${id}`,
|
|
23
|
-
targetKey: this.key
|
|
24
|
-
});
|
|
25
|
-
new aws_cdk_lib_1.CfnOutput(this, `${id}KeyAliasArn`, {
|
|
26
|
-
key: `${id}AliasArn`,
|
|
27
|
-
value: this.alias.aliasArn,
|
|
28
|
-
exportName: `${id}KeyAliasArn`
|
|
29
|
-
});
|
|
30
|
-
(0, tagResource_1.default)(this.alias, props.tags);
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
exports.CustomerManagedKey = CustomerManagedKey;
|
|
34
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia21zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUva21zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF1RDtBQUN2RCxpREFBaUQ7QUFDakQsMkNBQXVDO0FBQ3ZDLDREQUFxRDtBQVNyRCxNQUFhLGtCQUFtQixTQUFRLHNCQUFTO0lBSS9DLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7UUFDdEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsR0FBRyxHQUFHLElBQUksYUFBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQ25DLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxVQUFVO1lBQ2pELGFBQWEsRUFBRSwyQkFBYSxDQUFDLE9BQU87U0FDckMsQ0FBQyxDQUFDO1FBQ0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFO1lBQ2pDLEdBQUcsRUFBRSxHQUFHLEVBQUUsS0FBSztZQUNmLEtBQUssRUFBRSxJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU07WUFDdEIsVUFBVSxFQUFFLEdBQUcsRUFBRSxRQUFRO1NBQzFCLENBQUMsQ0FBQztRQUVILElBQUEscUJBQVcsRUFBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVsQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQzVDLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUyxJQUFJLE9BQU8sRUFBRSxFQUFFO1lBQ3pDLFNBQVMsRUFBRSxJQUFJLENBQUMsR0FBRztTQUNwQixDQUFDLENBQUM7UUFDSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUU7WUFDdEMsR0FBRyxFQUFFLEdBQUcsRUFBRSxVQUFVO1lBQ3BCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVE7WUFDMUIsVUFBVSxFQUFFLEdBQUcsRUFBRSxhQUFhO1NBQy9CLENBQUMsQ0FBQztRQUNILElBQUEscUJBQVcsRUFBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0NBQ0Y7QUE5QkQsZ0RBOEJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2ZuT3V0cHV0LCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBBbGlhcywgS2V5IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1rbXNcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgdGFnUmVzb3VyY2UgZnJvbSBcIi4uLy4uLy4uL3V0aWxzL3RhZ1Jlc291cmNlXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi9jb21wdXRlL2Vjc1wiO1xuXG5pbnRlcmZhY2UgQ3VzdG9tZXJNYW5hZ2VkS2V5UHJvcHMge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbn1cblxuZXhwb3J0IGNsYXNzIEN1c3RvbWVyTWFuYWdlZEtleSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBrZXk6IEtleTtcbiAgcHVibGljIHJlYWRvbmx5IGFsaWFzOiBBbGlhcztcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogQ3VzdG9tZXJNYW5hZ2VkS2V5UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5rZXkgPSBuZXcgS2V5KHRoaXMsIGAke2lkfUtleWAsIHtcbiAgICAgIGRlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbiB8fCBgJHtpZH0gS01TIEtleWAsXG4gICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LkRFU1RST1lcbiAgICB9KTtcbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUtleUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLmtleS5rZXlBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1LZXlBcm5gXG4gICAgfSk7XG5cbiAgICB0YWdSZXNvdXJjZSh0aGlzLmtleSwgcHJvcHMudGFncyk7XG5cbiAgICB0aGlzLmFsaWFzID0gbmV3IEFsaWFzKHRoaXMsIGAke2lkfUtleUFsaWFzYCwge1xuICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWUgfHwgYGNtay8ke2lkfWAsXG4gICAgICB0YXJnZXRLZXk6IHRoaXMua2V5XG4gICAgfSk7XG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1LZXlBbGlhc0FybmAsIHtcbiAgICAgIGtleTogYCR7aWR9QWxpYXNBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMuYWxpYXMuYWxpYXNBcm4sXG4gICAgICBleHBvcnROYW1lOiBgJHtpZH1LZXlBbGlhc0FybmBcbiAgICB9KTtcbiAgICB0YWdSZXNvdXJjZSh0aGlzLmFsaWFzLCBwcm9wcy50YWdzKTtcbiAgfVxufVxuIl19
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { aws_ssm as ssm } from "aws-cdk-lib";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
import { KeyValue } from "../compute/ecs";
|
|
4
|
-
import { CustomerManagedKey } from "../store";
|
|
5
|
-
import { AwsCustomResource } from "../utilities/awsCustomResource";
|
|
6
|
-
export declare class StringParameter extends ssm.StringParameter {
|
|
7
|
-
constructor(scope: Construct, id: string, props: ssm.StringParameterProps);
|
|
8
|
-
}
|
|
9
|
-
interface SecureStringParameterProps {
|
|
10
|
-
accountId: string;
|
|
11
|
-
aliasName?: string;
|
|
12
|
-
description?: string;
|
|
13
|
-
name: string;
|
|
14
|
-
overwrite?: boolean;
|
|
15
|
-
region: string;
|
|
16
|
-
tags: KeyValue;
|
|
17
|
-
value?: string;
|
|
18
|
-
cmk?: CustomerManagedKey;
|
|
19
|
-
}
|
|
20
|
-
export declare class SecureStringParameter extends Construct {
|
|
21
|
-
readonly cmk: CustomerManagedKey;
|
|
22
|
-
readonly name: string;
|
|
23
|
-
readonly parameter: AwsCustomResource;
|
|
24
|
-
constructor(scope: Construct, id: string, props: SecureStringParameterProps);
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SecureStringParameter = exports.StringParameter = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
6
|
-
const custom_resources_1 = require("aws-cdk-lib/custom-resources");
|
|
7
|
-
const constructs_1 = require("constructs");
|
|
8
|
-
const store_1 = require("../store");
|
|
9
|
-
const awsCustomResource_1 = require("../utilities/awsCustomResource");
|
|
10
|
-
class StringParameter extends aws_cdk_lib_1.aws_ssm.StringParameter {
|
|
11
|
-
constructor(scope, id, props) {
|
|
12
|
-
super(scope, id, {
|
|
13
|
-
...props,
|
|
14
|
-
description: props.description || `${id} SSM Parameter`,
|
|
15
|
-
tier: aws_cdk_lib_1.aws_ssm.ParameterTier.INTELLIGENT_TIERING
|
|
16
|
-
});
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
exports.StringParameter = StringParameter;
|
|
20
|
-
class SecureStringParameter extends constructs_1.Construct {
|
|
21
|
-
constructor(scope, id, props) {
|
|
22
|
-
super(scope, id);
|
|
23
|
-
this.name = props.name;
|
|
24
|
-
if (props.cmk) {
|
|
25
|
-
this.cmk = props.cmk;
|
|
26
|
-
}
|
|
27
|
-
else {
|
|
28
|
-
this.cmk = new store_1.CustomerManagedKey(this, `${id}Key`, {
|
|
29
|
-
description: props.description || `${id} KMS Key`,
|
|
30
|
-
aliasName: props.aliasName,
|
|
31
|
-
tags: props.tags
|
|
32
|
-
});
|
|
33
|
-
}
|
|
34
|
-
this.parameter = new awsCustomResource_1.AwsCustomResource(this, `${id}SecureStringParameter`, {
|
|
35
|
-
resourceType: "Custom::SecureStringParameter",
|
|
36
|
-
functionName: `${id}SecureStringParameter`,
|
|
37
|
-
onCreate: {
|
|
38
|
-
service: "@aws-sdk/client-ssm",
|
|
39
|
-
action: "PutParameter",
|
|
40
|
-
parameters: {
|
|
41
|
-
Name: props.name,
|
|
42
|
-
Description: props.description || `${id} secure parameter`,
|
|
43
|
-
Value: props.value || process.env.CDK_SECURE_STRING || "placeholderValue",
|
|
44
|
-
Type: "SecureString",
|
|
45
|
-
KeyId: this.cmk.alias.keyId
|
|
46
|
-
// TODO: Add tags to the parameter
|
|
47
|
-
},
|
|
48
|
-
physicalResourceId: custom_resources_1.PhysicalResourceId.of("createSecureStringParameter")
|
|
49
|
-
},
|
|
50
|
-
onUpdate: {
|
|
51
|
-
service: "@aws-sdk/client-ssm",
|
|
52
|
-
action: "PutParameter",
|
|
53
|
-
parameters: {
|
|
54
|
-
Name: props.name,
|
|
55
|
-
Description: props.description || `${id} secure parameter`,
|
|
56
|
-
Value: props.value ||
|
|
57
|
-
`process.env.CDK_SECURE_STRING_${id}` ||
|
|
58
|
-
"placeholderValue",
|
|
59
|
-
Overwrite: props.overwrite,
|
|
60
|
-
Type: "SecureString",
|
|
61
|
-
KeyId: this.cmk.alias.keyId
|
|
62
|
-
// TODO: Add tags to the parameter
|
|
63
|
-
},
|
|
64
|
-
physicalResourceId: custom_resources_1.PhysicalResourceId.of("updateSecureStringParameter")
|
|
65
|
-
},
|
|
66
|
-
onDelete: {
|
|
67
|
-
service: "@aws-sdk/client-ssm",
|
|
68
|
-
action: "DeleteParameter",
|
|
69
|
-
parameters: {
|
|
70
|
-
Name: props.name
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
policy: custom_resources_1.AwsCustomResourcePolicy.fromStatements([
|
|
74
|
-
new aws_iam_1.PolicyStatement({
|
|
75
|
-
actions: ["kms:Encrypt"],
|
|
76
|
-
resources: [
|
|
77
|
-
`arn:aws:kms:${props.region}:${props.accountId}:key/${this.cmk.key.keyId}`
|
|
78
|
-
]
|
|
79
|
-
}),
|
|
80
|
-
new aws_iam_1.PolicyStatement({
|
|
81
|
-
actions: [
|
|
82
|
-
"ssm:DeleteParameter",
|
|
83
|
-
"ssm:PutParameter",
|
|
84
|
-
"ssm:AddTagsToResource",
|
|
85
|
-
"logs:DeleteRetentionPolicy",
|
|
86
|
-
"logs:PutRetentionPolicy"
|
|
87
|
-
],
|
|
88
|
-
resources: [
|
|
89
|
-
`arn:aws:ssm:${props.region}:${props.accountId}:parameter${props.name}`
|
|
90
|
-
]
|
|
91
|
-
})
|
|
92
|
-
])
|
|
93
|
-
});
|
|
94
|
-
if (!props.cmk) {
|
|
95
|
-
this.parameter.node.addDependency(this.cmk);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
exports.SecureStringParameter = SecureStringParameter;
|
|
100
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGFyYW1ldGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUvcGFyYW1ldGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUE2QztBQUM3QyxpREFBc0Q7QUFDdEQsbUVBR3NDO0FBQ3RDLDJDQUF1QztBQUV2QyxvQ0FBOEM7QUFDOUMsc0VBQW1FO0FBRW5FLE1BQWEsZUFBZ0IsU0FBUSxxQkFBRyxDQUFDLGVBQWU7SUFDdEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxnQkFBZ0I7WUFDdkQsSUFBSSxFQUFFLHFCQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQjtTQUM1QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFSRCwwQ0FRQztBQWNELE1BQWEscUJBQXNCLFNBQVEsc0JBQVM7SUFLbEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFpQztRQUN6RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztRQUV2QixJQUFJLEtBQUssQ0FBQyxHQUFHLEVBQUU7WUFDYixJQUFJLENBQUMsR0FBRyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDdEI7YUFBTTtZQUNMLElBQUksQ0FBQyxHQUFHLEdBQUcsSUFBSSwwQkFBa0IsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtnQkFDbEQsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLFVBQVU7Z0JBQ2pELFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztnQkFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO2FBQ2pCLENBQUMsQ0FBQztTQUNKO1FBRUQsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLHFDQUFpQixDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsdUJBQXVCLEVBQUU7WUFDekUsWUFBWSxFQUFFLCtCQUErQjtZQUM3QyxZQUFZLEVBQUUsR0FBRyxFQUFFLHVCQUF1QjtZQUMxQyxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGNBQWM7Z0JBQ3RCLFVBQVUsRUFBRTtvQkFDVixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7b0JBQ2hCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVyxJQUFJLEdBQUcsRUFBRSxtQkFBbUI7b0JBQzFELEtBQUssRUFDSCxLQUFLLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUJBQWlCLElBQUksa0JBQWtCO29CQUNwRSxJQUFJLEVBQUUsY0FBYztvQkFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLEtBQUs7b0JBQzNCLGtDQUFrQztpQkFDbkM7Z0JBQ0Qsa0JBQWtCLEVBQUUscUNBQWtCLENBQUMsRUFBRSxDQUFDLDZCQUE2QixDQUFDO2FBQ3pFO1lBQ0QsUUFBUSxFQUFFO2dCQUNSLE9BQU8sRUFBRSxxQkFBcUI7Z0JBQzlCLE1BQU0sRUFBRSxjQUFjO2dCQUN0QixVQUFVLEVBQUU7b0JBQ1YsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO29CQUNoQixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVcsSUFBSSxHQUFHLEVBQUUsbUJBQW1CO29CQUMxRCxLQUFLLEVBQ0gsS0FBSyxDQUFDLEtBQUs7d0JBQ1gsaUNBQWlDLEVBQUUsRUFBRTt3QkFDckMsa0JBQWtCO29CQUNwQixTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7b0JBQzFCLElBQUksRUFBRSxjQUFjO29CQUNwQixLQUFLLEVBQUUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsS0FBSztvQkFDM0Isa0NBQWtDO2lCQUNuQztnQkFDRCxrQkFBa0IsRUFBRSxxQ0FBa0IsQ0FBQyxFQUFFLENBQUMsNkJBQTZCLENBQUM7YUFDekU7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLHFCQUFxQjtnQkFDOUIsTUFBTSxFQUFFLGlCQUFpQjtnQkFDekIsVUFBVSxFQUFFO29CQUNWLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtpQkFDakI7YUFDRjtZQUNELE1BQU0sRUFBRSwwQ0FBdUIsQ0FBQyxjQUFjLENBQUM7Z0JBQzdDLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDO29CQUN4QixTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLFFBQVEsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFO3FCQUMzRTtpQkFDRixDQUFDO2dCQUNGLElBQUkseUJBQWUsQ0FBQztvQkFDbEIsT0FBTyxFQUFFO3dCQUNQLHFCQUFxQjt3QkFDckIsa0JBQWtCO3dCQUNsQix1QkFBdUI7d0JBQ3ZCLDRCQUE0Qjt3QkFDNUIseUJBQXlCO3FCQUMxQjtvQkFDRCxTQUFTLEVBQUU7d0JBQ1QsZUFBZSxLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxTQUFTLGFBQWEsS0FBSyxDQUFDLElBQUksRUFBRTtxQkFDeEU7aUJBQ0YsQ0FBQzthQUNILENBQUM7U0FDSCxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRTtZQUNkLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDN0M7SUFDSCxDQUFDO0NBQ0Y7QUF2RkQsc0RBdUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYXdzX3NzbSBhcyBzc20gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IFBvbGljeVN0YXRlbWVudCB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtaWFtXCI7XG5pbXBvcnQge1xuICBBd3NDdXN0b21SZXNvdXJjZVBvbGljeSxcbiAgUGh5c2ljYWxSZXNvdXJjZUlkXG59IGZyb20gXCJhd3MtY2RrLWxpYi9jdXN0b20tcmVzb3VyY2VzXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgS2V5VmFsdWUgfSBmcm9tIFwiLi4vY29tcHV0ZS9lY3NcIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSB9IGZyb20gXCIuLi9zdG9yZVwiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5cbmV4cG9ydCBjbGFzcyBTdHJpbmdQYXJhbWV0ZXIgZXh0ZW5kcyBzc20uU3RyaW5nUGFyYW1ldGVyIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IHNzbS5TdHJpbmdQYXJhbWV0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24gfHwgYCR7aWR9IFNTTSBQYXJhbWV0ZXJgLFxuICAgICAgdGllcjogc3NtLlBhcmFtZXRlclRpZXIuSU5URUxMSUdFTlRfVElFUklOR1xuICAgIH0pO1xuICB9XG59XG5cbmludGVyZmFjZSBTZWN1cmVTdHJpbmdQYXJhbWV0ZXJQcm9wcyB7XG4gIGFjY291bnRJZDogc3RyaW5nO1xuICBhbGlhc05hbWU/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG92ZXJ3cml0ZT86IGJvb2xlYW47XG4gIHJlZ2lvbjogc3RyaW5nO1xuICB0YWdzOiBLZXlWYWx1ZTtcbiAgdmFsdWU/OiBzdHJpbmc7XG4gIGNtaz86IEN1c3RvbWVyTWFuYWdlZEtleTtcbn1cblxuZXhwb3J0IGNsYXNzIFNlY3VyZVN0cmluZ1BhcmFtZXRlciBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBjbWs6IEN1c3RvbWVyTWFuYWdlZEtleTtcbiAgcHVibGljIHJlYWRvbmx5IG5hbWU6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHBhcmFtZXRlcjogQXdzQ3VzdG9tUmVzb3VyY2U7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFNlY3VyZVN0cmluZ1BhcmFtZXRlclByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMubmFtZSA9IHByb3BzLm5hbWU7XG5cbiAgICBpZiAocHJvcHMuY21rKSB7XG4gICAgICB0aGlzLmNtayA9IHByb3BzLmNtaztcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5jbWsgPSBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KHRoaXMsIGAke2lkfUtleWAsIHtcbiAgICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBLTVMgS2V5YCxcbiAgICAgICAgYWxpYXNOYW1lOiBwcm9wcy5hbGlhc05hbWUsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMucGFyYW1ldGVyID0gbmV3IEF3c0N1c3RvbVJlc291cmNlKHRoaXMsIGAke2lkfVNlY3VyZVN0cmluZ1BhcmFtZXRlcmAsIHtcbiAgICAgIHJlc291cmNlVHlwZTogXCJDdXN0b206OlNlY3VyZVN0cmluZ1BhcmFtZXRlclwiLFxuICAgICAgZnVuY3Rpb25OYW1lOiBgJHtpZH1TZWN1cmVTdHJpbmdQYXJhbWV0ZXJgLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWUsXG4gICAgICAgICAgRGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBzZWN1cmUgcGFyYW1ldGVyYCxcbiAgICAgICAgICBWYWx1ZTpcbiAgICAgICAgICAgIHByb3BzLnZhbHVlIHx8IHByb2Nlc3MuZW52LkNES19TRUNVUkVfU1RSSU5HIHx8IFwicGxhY2Vob2xkZXJWYWx1ZVwiLFxuICAgICAgICAgIFR5cGU6IFwiU2VjdXJlU3RyaW5nXCIsXG4gICAgICAgICAgS2V5SWQ6IHRoaXMuY21rLmFsaWFzLmtleUlkXG4gICAgICAgICAgLy8gVE9ETzogQWRkIHRhZ3MgdG8gdGhlIHBhcmFtZXRlclxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IFBoeXNpY2FsUmVzb3VyY2VJZC5vZihcImNyZWF0ZVNlY3VyZVN0cmluZ1BhcmFtZXRlclwiKVxuICAgICAgfSxcbiAgICAgIG9uVXBkYXRlOiB7XG4gICAgICAgIHNlcnZpY2U6IFwiQGF3cy1zZGsvY2xpZW50LXNzbVwiLFxuICAgICAgICBhY3Rpb246IFwiUHV0UGFyYW1ldGVyXCIsXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBOYW1lOiBwcm9wcy5uYW1lLFxuICAgICAgICAgIERlc2NyaXB0aW9uOiBwcm9wcy5kZXNjcmlwdGlvbiB8fCBgJHtpZH0gc2VjdXJlIHBhcmFtZXRlcmAsXG4gICAgICAgICAgVmFsdWU6XG4gICAgICAgICAgICBwcm9wcy52YWx1ZSB8fFxuICAgICAgICAgICAgYHByb2Nlc3MuZW52LkNES19TRUNVUkVfU1RSSU5HXyR7aWR9YCB8fFxuICAgICAgICAgICAgXCJwbGFjZWhvbGRlclZhbHVlXCIsXG4gICAgICAgICAgT3ZlcndyaXRlOiBwcm9wcy5vdmVyd3JpdGUsXG4gICAgICAgICAgVHlwZTogXCJTZWN1cmVTdHJpbmdcIixcbiAgICAgICAgICBLZXlJZDogdGhpcy5jbWsuYWxpYXMua2V5SWRcbiAgICAgICAgICAvLyBUT0RPOiBBZGQgdGFncyB0byB0aGUgcGFyYW1ldGVyXG4gICAgICAgIH0sXG4gICAgICAgIHBoeXNpY2FsUmVzb3VyY2VJZDogUGh5c2ljYWxSZXNvdXJjZUlkLm9mKFwidXBkYXRlU2VjdXJlU3RyaW5nUGFyYW1ldGVyXCIpXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJAYXdzLXNkay9jbGllbnQtc3NtXCIsXG4gICAgICAgIGFjdGlvbjogXCJEZWxldGVQYXJhbWV0ZXJcIixcbiAgICAgICAgcGFyYW1ldGVyczoge1xuICAgICAgICAgIE5hbWU6IHByb3BzLm5hbWVcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICAgIHBvbGljeTogQXdzQ3VzdG9tUmVzb3VyY2VQb2xpY3kuZnJvbVN0YXRlbWVudHMoW1xuICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICBhY3Rpb25zOiBbXCJrbXM6RW5jcnlwdFwiXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFtcbiAgICAgICAgICAgIGBhcm46YXdzOmttczoke3Byb3BzLnJlZ2lvbn06JHtwcm9wcy5hY2NvdW50SWR9OmtleS8ke3RoaXMuY21rLmtleS5rZXlJZH1gXG4gICAgICAgICAgXVxuICAgICAgICB9KSxcbiAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgXCJzc206RGVsZXRlUGFyYW1ldGVyXCIsXG4gICAgICAgICAgICBcInNzbTpQdXRQYXJhbWV0ZXJcIixcbiAgICAgICAgICAgIFwic3NtOkFkZFRhZ3NUb1Jlc291cmNlXCIsXG4gICAgICAgICAgICBcImxvZ3M6RGVsZXRlUmV0ZW50aW9uUG9saWN5XCIsXG4gICAgICAgICAgICBcImxvZ3M6UHV0UmV0ZW50aW9uUG9saWN5XCJcbiAgICAgICAgICBdLFxuICAgICAgICAgIHJlc291cmNlczogW1xuICAgICAgICAgICAgYGFybjphd3M6c3NtOiR7cHJvcHMucmVnaW9ufToke3Byb3BzLmFjY291bnRJZH06cGFyYW1ldGVyJHtwcm9wcy5uYW1lfWBcbiAgICAgICAgICBdXG4gICAgICAgIH0pXG4gICAgICBdKVxuICAgIH0pO1xuXG4gICAgaWYgKCFwcm9wcy5jbWspIHtcbiAgICAgIHRoaXMucGFyYW1ldGVyLm5vZGUuYWRkRGVwZW5kZW5jeSh0aGlzLmNtayk7XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { Duration } from "aws-cdk-lib";
|
|
2
|
-
import { Connections, IConnectable, Vpc } from "aws-cdk-lib/aws-ec2";
|
|
3
|
-
import { BackupProps, ClusterInstance, IClusterEngine } from "aws-cdk-lib/aws-rds";
|
|
4
|
-
import { Construct } from "constructs";
|
|
5
|
-
import { KeyValue } from "../compute/ecs";
|
|
6
|
-
interface RdsProps {
|
|
7
|
-
vpc: Vpc;
|
|
8
|
-
defaultDatabaseName?: string;
|
|
9
|
-
engine?: IClusterEngine;
|
|
10
|
-
backup?: BackupProps;
|
|
11
|
-
clusterIdentifier?: string;
|
|
12
|
-
monitoringInterval?: Duration;
|
|
13
|
-
preferredMaintenanceWindow?: string;
|
|
14
|
-
port?: number;
|
|
15
|
-
writer?: ClusterInstance;
|
|
16
|
-
readers?: ClusterInstance[];
|
|
17
|
-
tags: KeyValue;
|
|
18
|
-
securityGroupIds?: string[];
|
|
19
|
-
buildkiteRoleArn?: string;
|
|
20
|
-
}
|
|
21
|
-
export default class Rds extends Construct implements IConnectable {
|
|
22
|
-
connections: Connections;
|
|
23
|
-
constructor(scope: Construct, id: string, props: RdsProps);
|
|
24
|
-
}
|
|
25
|
-
export {};
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
5
|
-
const aws_rds_1 = require("aws-cdk-lib/aws-rds");
|
|
6
|
-
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
|
7
|
-
const constructs_1 = require("constructs");
|
|
8
|
-
const iam_1 = require("../iam");
|
|
9
|
-
const kms_1 = require("./kms");
|
|
10
|
-
const secret_1 = require("./secret");
|
|
11
|
-
class Rds extends constructs_1.Construct {
|
|
12
|
-
constructor(scope, id, props) {
|
|
13
|
-
super(scope, id);
|
|
14
|
-
// Database Credentials
|
|
15
|
-
const databaseCredentials = new secret_1.default(this, `${props.defaultDatabaseName}Credentials`, {
|
|
16
|
-
secretName: `${props.defaultDatabaseName}Credentials`,
|
|
17
|
-
generateSecretString: {
|
|
18
|
-
secretStringTemplate: JSON.stringify({
|
|
19
|
-
username: "postgres"
|
|
20
|
-
}),
|
|
21
|
-
excludePunctuation: true,
|
|
22
|
-
includeSpace: false,
|
|
23
|
-
generateStringKey: "password"
|
|
24
|
-
},
|
|
25
|
-
tags: props.tags,
|
|
26
|
-
buildkiteRoleArn: props.buildkiteRoleArn
|
|
27
|
-
});
|
|
28
|
-
// Customer Managed Keys
|
|
29
|
-
const encryptionKey = new kms_1.CustomerManagedKey(this, `${props.defaultDatabaseName}ClusterEncryptionKey`, {
|
|
30
|
-
aliasName: `cmk/rds/${props.defaultDatabaseName}/encryptionKey`,
|
|
31
|
-
tags: props.tags
|
|
32
|
-
});
|
|
33
|
-
const primaryReaderInsightsKey = new kms_1.CustomerManagedKey(this, `${props.defaultDatabaseName}PrimaryReaderInsightsKey`, {
|
|
34
|
-
aliasName: `cmk/rds/${props.defaultDatabaseName}/PrimaryReaderInsightsKey`,
|
|
35
|
-
tags: props.tags
|
|
36
|
-
});
|
|
37
|
-
const secondaryReaderInsightsKey = new kms_1.CustomerManagedKey(this, `${props.defaultDatabaseName}SecondaryReaderInsightsKey`, {
|
|
38
|
-
aliasName: `cmk/rds/${props.defaultDatabaseName}/SecondaryReaderInsightsKey`,
|
|
39
|
-
tags: props.tags
|
|
40
|
-
});
|
|
41
|
-
const primaryWriterPerformanceInsightsKey = new kms_1.CustomerManagedKey(this, `${props.defaultDatabaseName}PrimaryWriterPerformanceInsightsKey`, {
|
|
42
|
-
aliasName: `cmk/rds/${props.defaultDatabaseName}/PrimaryWriterInsightsKey`,
|
|
43
|
-
tags: props.tags
|
|
44
|
-
});
|
|
45
|
-
const clusterSecurityGroup = new iam_1.SecurityGroup(this, `${id}SecurityGroup`, {
|
|
46
|
-
vpc: props.vpc,
|
|
47
|
-
description: `Security group that allows inbound access to the postgres cluster for ${props.defaultDatabaseName}`
|
|
48
|
-
});
|
|
49
|
-
//TODO: Remove this line, that allows the proxy to connect to the database. Replace with seperated security groups
|
|
50
|
-
clusterSecurityGroup.addIngressRule(clusterSecurityGroup, aws_ec2_1.Port.tcp(5432));
|
|
51
|
-
this.connections = clusterSecurityGroup.connections;
|
|
52
|
-
// Database Cluster
|
|
53
|
-
const databaseCluster = new aws_rds_1.DatabaseCluster(scope, `${id}Database`, {
|
|
54
|
-
vpc: props.vpc,
|
|
55
|
-
vpcSubnets: {
|
|
56
|
-
subnetType: aws_ec2_1.SubnetType.PRIVATE_WITH_EGRESS
|
|
57
|
-
},
|
|
58
|
-
securityGroups: [clusterSecurityGroup],
|
|
59
|
-
engine: props.engine ||
|
|
60
|
-
aws_rds_1.DatabaseClusterEngine.auroraPostgres({
|
|
61
|
-
//TODO: Do we update these when we release a new version? Or try to keep them constantly updated?
|
|
62
|
-
version: aws_rds_1.AuroraPostgresEngineVersion.VER_15_6
|
|
63
|
-
}),
|
|
64
|
-
backup: props.backup || {
|
|
65
|
-
retention: aws_cdk_lib_1.Duration.days(14)
|
|
66
|
-
},
|
|
67
|
-
storageEncrypted: true,
|
|
68
|
-
storageEncryptionKey: encryptionKey.key,
|
|
69
|
-
clusterIdentifier: props.clusterIdentifier || `${props.defaultDatabaseName}-cluster`,
|
|
70
|
-
credentials: aws_rds_1.Credentials.fromSecret(databaseCredentials.secret),
|
|
71
|
-
defaultDatabaseName: props.defaultDatabaseName || `${id.replace("Rds", "")}`,
|
|
72
|
-
monitoringInterval: props.monitoringInterval || aws_cdk_lib_1.Duration.minutes(1),
|
|
73
|
-
preferredMaintenanceWindow: props.preferredMaintenanceWindow || "Sat:12:30-Sat:20:30",
|
|
74
|
-
port: props.port || 5432,
|
|
75
|
-
removalPolicy: aws_cdk_lib_1.RemovalPolicy.SNAPSHOT,
|
|
76
|
-
writer: props.writer ||
|
|
77
|
-
aws_rds_1.ClusterInstance.serverlessV2(`${props.defaultDatabaseName}Writer`, {
|
|
78
|
-
enablePerformanceInsights: true,
|
|
79
|
-
performanceInsightEncryptionKey: primaryWriterPerformanceInsightsKey.key,
|
|
80
|
-
instanceIdentifier: `${props.defaultDatabaseName}-primary-writer`,
|
|
81
|
-
//TODO: Do we update these when we release a new version? Or try to keep them constantly updated?
|
|
82
|
-
caCertificate: aws_rds_1.CaCertificate.RDS_CA_RSA4096_G1
|
|
83
|
-
}),
|
|
84
|
-
readers: props.readers || [
|
|
85
|
-
aws_rds_1.ClusterInstance.serverlessV2(`${props.defaultDatabaseName}PrimaryReader`, {
|
|
86
|
-
scaleWithWriter: true,
|
|
87
|
-
enablePerformanceInsights: true,
|
|
88
|
-
performanceInsightEncryptionKey: primaryReaderInsightsKey.key,
|
|
89
|
-
instanceIdentifier: `${props.defaultDatabaseName}-primary-reader`,
|
|
90
|
-
caCertificate: aws_rds_1.CaCertificate.RDS_CA_RSA4096_G1
|
|
91
|
-
}),
|
|
92
|
-
aws_rds_1.ClusterInstance.serverlessV2(`${props.defaultDatabaseName}SecondaryReader`, {
|
|
93
|
-
scaleWithWriter: false,
|
|
94
|
-
enablePerformanceInsights: true,
|
|
95
|
-
performanceInsightEncryptionKey: secondaryReaderInsightsKey.key,
|
|
96
|
-
instanceIdentifier: `${props.defaultDatabaseName}-secondary-reader`,
|
|
97
|
-
caCertificate: aws_rds_1.CaCertificate.RDS_CA_RSA4096_G1
|
|
98
|
-
})
|
|
99
|
-
]
|
|
100
|
-
});
|
|
101
|
-
const databaseProxy = new aws_rds_1.DatabaseProxy(this, `${props.defaultDatabaseName}DatabaseProxy`, {
|
|
102
|
-
proxyTarget: aws_rds_1.ProxyTarget.fromCluster(databaseCluster),
|
|
103
|
-
secrets: [databaseCredentials.secret],
|
|
104
|
-
securityGroups: [clusterSecurityGroup],
|
|
105
|
-
vpc: props.vpc,
|
|
106
|
-
vpcSubnets: {
|
|
107
|
-
subnetType: aws_ec2_1.SubnetType.PUBLIC
|
|
108
|
-
}
|
|
109
|
-
});
|
|
110
|
-
new aws_cdk_lib_1.CfnOutput(this, `${props.defaultDatabaseName}ProxyEndpointOutput`, {
|
|
111
|
-
key: `${props.defaultDatabaseName}ProxyEndpoint`,
|
|
112
|
-
exportName: `${props.defaultDatabaseName}ProxyEndpoint`,
|
|
113
|
-
value: databaseProxy.endpoint
|
|
114
|
-
});
|
|
115
|
-
// Rotate the Secret every 30 days
|
|
116
|
-
const masterSecret = new secret_1.default(this, `${props.defaultDatabaseName}MasterSecret`, {
|
|
117
|
-
secretName: `${props.defaultDatabaseName}MasterSecret`,
|
|
118
|
-
tags: props.tags
|
|
119
|
-
});
|
|
120
|
-
new aws_secretsmanager_1.SecretRotation(this, `${props.defaultDatabaseName}SecretRotation`, {
|
|
121
|
-
application: new aws_secretsmanager_1.SecretRotationApplication("SecretsManagerRDSPostgreSQLRotationMultiUser", "1.1.367", {
|
|
122
|
-
isMultiUser: true
|
|
123
|
-
}),
|
|
124
|
-
secret: databaseCredentials.secret,
|
|
125
|
-
masterSecret: masterSecret.secret,
|
|
126
|
-
target: databaseCluster,
|
|
127
|
-
vpc: databaseCluster.vpc
|
|
128
|
-
});
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
exports.default = Rds;
|
|
132
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUvcmRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQWlFO0FBQ2pFLGlEQU02QjtBQUM3QixpREFXNkI7QUFDN0IsdUVBR3dDO0FBQ3hDLDJDQUF1QztBQUV2QyxnQ0FBdUM7QUFDdkMsK0JBQTJDO0FBQzNDLHFDQUE4QjtBQWtCOUIsTUFBcUIsR0FBSSxTQUFRLHNCQUFTO0lBR3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBZTtRQUN2RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLHVCQUF1QjtRQUN2QixNQUFNLG1CQUFtQixHQUFHLElBQUksZ0JBQU0sQ0FDcEMsSUFBSSxFQUNKLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixhQUFhLEVBQ3pDO1lBQ0UsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixhQUFhO1lBQ3JELG9CQUFvQixFQUFFO2dCQUNwQixvQkFBb0IsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDO29CQUNuQyxRQUFRLEVBQUUsVUFBVTtpQkFDckIsQ0FBQztnQkFDRixrQkFBa0IsRUFBRSxJQUFJO2dCQUN4QixZQUFZLEVBQUUsS0FBSztnQkFDbkIsaUJBQWlCLEVBQUUsVUFBVTthQUM5QjtZQUNELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1NBQ3pDLENBQ0YsQ0FBQztRQUVGLHdCQUF3QjtRQUN4QixNQUFNLGFBQWEsR0FBRyxJQUFJLHdCQUFrQixDQUMxQyxJQUFJLEVBQ0osR0FBRyxLQUFLLENBQUMsbUJBQW1CLHNCQUFzQixFQUNsRDtZQUNFLFNBQVMsRUFBRSxXQUFXLEtBQUssQ0FBQyxtQkFBbUIsZ0JBQWdCO1lBQy9ELElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtTQUNq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QUM7WUFDdEMsR0FBRyxFQUFFLEtBQUssQ0FBQyxHQUFHO1lBQ2QsVUFBVSxFQUFFO2dCQUNWLFVBQVUsRUFBRSxvQkFBVSxDQUFDLE1BQU07YUFDOUI7U0FDRixDQUNGLENBQUM7UUFFRixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixxQkFBcUIsRUFBRTtZQUNyRSxHQUFHLEVBQUUsR0FBRyxLQUFLLENBQUMsbUJBQW1CLGVBQWU7WUFDaEQsVUFBVSxFQUFFLEdBQUcsS0FBSyxDQUFDLG1CQUFtQixlQUFlO1lBQ3ZELEtBQUssRUFBRSxhQUFhLENBQUMsUUFBUTtTQUM5QixDQUFDLENBQUM7UUFFSCxrQ0FBa0M7UUFDbEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxnQkFBTSxDQUM3QixJQUFJLEVBQ0osR0FBRyxLQUFLLENBQUMsbUJBQW1CLGNBQWMsRUFDMUM7WUFDRSxVQUFVLEVBQUUsR0FBRyxLQUFLLENBQUMsbUJBQW1CLGNBQWM7WUFDdEQsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1NBQ2pCLENBQ0YsQ0FBQztRQUVGLElBQUksbUNBQWMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxLQUFLLENBQUMsbUJBQW1CLGdCQUFnQixFQUFFO1lBQ3JFLFdBQVcsRUFBRSxJQUFJLDhDQUF5QixDQUN4Qyw4Q0FBOEMsRUFDOUMsU0FBUyxFQUNUO2dCQUNFLFdBQVcsRUFBRSxJQUFJO2FBQ2xCLENBQ0Y7WUFDRCxNQUFNLEVBQUUsbUJBQW1CLENBQUMsTUFBTTtZQUNsQyxZQUFZLEVBQUUsWUFBWSxDQUFDLE1BQU07WUFDakMsTUFBTSxFQUFFLGVBQWU7WUFDdkIsR0FBRyxFQUFFLGVBQWUsQ0FBQyxHQUFHO1NBQ3pCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQWxMRCxzQkFrTEMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5PdXRwdXQsIER1cmF0aW9uLCBSZW1vdmFsUG9saWN5IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQge1xuICBDb25uZWN0aW9ucyxcbiAgSUNvbm5lY3RhYmxlLFxuICBQb3J0LFxuICBTdWJuZXRUeXBlLFxuICBWcGNcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7XG4gIEF1cm9yYVBvc3RncmVzRW5naW5lVmVyc2lvbixcbiAgQmFja3VwUHJvcHMsXG4gIENhQ2VydGlmaWNhdGUsXG4gIENsdXN0ZXJJbnN0YW5jZSxcbiAgQ3JlZGVudGlhbHMsXG4gIERhdGFiYXNlQ2x1c3RlcixcbiAgRGF0YWJhc2VDbHVzdGVyRW5naW5lLFxuICBEYXRhYmFzZVByb3h5LFxuICBJQ2x1c3RlckVuZ2luZSxcbiAgUHJveHlUYXJnZXRcbn0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yZHNcIjtcbmltcG9ydCB7XG4gIFNlY3JldFJvdGF0aW9uLFxuICBTZWNyZXRSb3RhdGlvbkFwcGxpY2F0aW9uXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXJcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IHsgU2VjdXJpdHlHcm91cCB9IGZyb20gXCIuLi9pYW1cIjtcbmltcG9ydCB7IEN1c3RvbWVyTWFuYWdlZEtleSB9IGZyb20gXCIuL2ttc1wiO1xuaW1wb3J0IFNlY3JldCBmcm9tIFwiLi9zZWNyZXRcIjtcblxuaW50ZXJmYWNlIFJkc1Byb3BzIHtcbiAgdnBjOiBWcGM7XG4gIGRlZmF1bHREYXRhYmFzZU5hbWU/OiBzdHJpbmc7XG4gIGVuZ2luZT86IElDbHVzdGVyRW5naW5lO1xuICBiYWNrdXA/OiBCYWNrdXBQcm9wcztcbiAgY2x1c3RlcklkZW50aWZpZXI/OiBzdHJpbmc7XG4gIG1vbml0b3JpbmdJbnRlcnZhbD86IER1cmF0aW9uO1xuICBwcmVmZXJyZWRNYWludGVuYW5jZVdpbmRvdz86IHN0cmluZztcbiAgcG9ydD86IG51bWJlcjtcbiAgd3JpdGVyPzogQ2x1c3Rlckluc3RhbmNlO1xuICByZWFkZXJzPzogQ2x1c3Rlckluc3RhbmNlW107XG4gIHRhZ3M6IEtleVZhbHVlO1xuICBzZWN1cml0eUdyb3VwSWRzPzogc3RyaW5nW107XG4gIGJ1aWxka2l0ZVJvbGVBcm4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFJkcyBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElDb25uZWN0YWJsZSB7XG4gIHB1YmxpYyBjb25uZWN0aW9uczogQ29ubmVjdGlvbnM7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IFJkc1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIC8vIERhdGFiYXNlIENyZWRlbnRpYWxzXG4gICAgY29uc3QgZGF0YWJhc2VDcmVkZW50aWFscyA9IG5ldyBTZWNyZXQoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1DcmVkZW50aWFsc2AsXG4gICAgICB7XG4gICAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9Q3JlZGVudGlhbHNgLFxuICAgICAgICBnZW5lcmF0ZVNlY3JldFN0cmluZzoge1xuICAgICAgICAgIHNlY3JldFN0cmluZ1RlbXBsYXRlOiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICB1c2VybmFtZTogXCJwb3N0Z3Jlc1wiXG4gICAgICAgICAgfSksXG4gICAgICAgICAgZXhjbHVkZVB1bmN0dWF0aW9uOiB0cnVlLFxuICAgICAgICAgIGluY2x1ZGVTcGFjZTogZmFsc2UsXG4gICAgICAgICAgZ2VuZXJhdGVTdHJpbmdLZXk6IFwicGFzc3dvcmRcIlxuICAgICAgICB9LFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzLFxuICAgICAgICBidWlsZGtpdGVSb2xlQXJuOiBwcm9wcy5idWlsZGtpdGVSb2xlQXJuXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8vIEN1c3RvbWVyIE1hbmFnZWQgS2V5c1xuICAgIGNvbnN0IGVuY3J5cHRpb25LZXkgPSBuZXcgQ3VzdG9tZXJNYW5hZ2VkS2V5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9Q2x1c3RlckVuY3J5cHRpb25LZXlgLFxuICAgICAge1xuICAgICAgICBhbGlhc05hbWU6IGBjbWsvcmRzLyR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX0vZW5jcnlwdGlvbktleWAsXG4gICAgICAgIHRhZ3M6IHByb3BzLnRhZ3NcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY29uc3QgcHJpbWFyeVJlYWRlckluc2lnaHRzS2V5ID0gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfVByaW1hcnlSZWFkZXJJbnNpZ2h0c0tleWAsXG4gICAgICB7XG4gICAgICAgIGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfS9QcmltYXJ5UmVhZGVySW5zaWdodHNLZXlgLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IHNlY29uZGFyeVJlYWRlckluc2lnaHRzS2V5ID0gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfVNlY29uZGFyeVJlYWRlckluc2lnaHRzS2V5YCxcbiAgICAgIHtcbiAgICAgICAgYWxpYXNOYW1lOiBgY21rL3Jkcy8ke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9L1NlY29uZGFyeVJlYWRlckluc2lnaHRzS2V5YCxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfVxuICAgICk7XG5cbiAgICBjb25zdCBwcmltYXJ5V3JpdGVyUGVyZm9ybWFuY2VJbnNpZ2h0c0tleSA9IG5ldyBDdXN0b21lck1hbmFnZWRLZXkoXG4gICAgICB0aGlzLFxuICAgICAgYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1QcmltYXJ5V3JpdGVyUGVyZm9ybWFuY2VJbnNpZ2h0c0tleWAsXG4gICAgICB7XG4gICAgICAgIGFsaWFzTmFtZTogYGNtay9yZHMvJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfS9QcmltYXJ5V3JpdGVySW5zaWdodHNLZXlgLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICB9XG4gICAgKTtcblxuICAgIGNvbnN0IGNsdXN0ZXJTZWN1cml0eUdyb3VwID0gbmV3IFNlY3VyaXR5R3JvdXAodGhpcywgYCR7aWR9U2VjdXJpdHlHcm91cGAsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGVzY3JpcHRpb246IGBTZWN1cml0eSBncm91cCB0aGF0IGFsbG93cyBpbmJvdW5kIGFjY2VzcyB0byB0aGUgcG9zdGdyZXMgY2x1c3RlciBmb3IgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfWBcbiAgICB9KTtcblxuICAgIC8vVE9ETzogUmVtb3ZlIHRoaXMgbGluZSwgdGhhdCBhbGxvd3MgdGhlIHByb3h5IHRvIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlLiBSZXBsYWNlIHdpdGggc2VwZXJhdGVkIHNlY3VyaXR5IGdyb3Vwc1xuICAgIGNsdXN0ZXJTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGNsdXN0ZXJTZWN1cml0eUdyb3VwLCBQb3J0LnRjcCg1NDMyKSk7XG5cbiAgICB0aGlzLmNvbm5lY3Rpb25zID0gY2x1c3RlclNlY3VyaXR5R3JvdXAuY29ubmVjdGlvbnM7XG5cbiAgICAvLyBEYXRhYmFzZSBDbHVzdGVyXG4gICAgY29uc3QgZGF0YWJhc2VDbHVzdGVyID0gbmV3IERhdGFiYXNlQ2x1c3RlcihzY29wZSwgYCR7aWR9RGF0YWJhc2VgLCB7XG4gICAgICB2cGM6IHByb3BzLnZwYyxcbiAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgc3VibmV0VHlwZTogU3VibmV0VHlwZS5QUklWQVRFX1dJVEhfRUdSRVNTXG4gICAgICB9LFxuICAgICAgc2VjdXJpdHlHcm91cHM6IFtjbHVzdGVyU2VjdXJpdHlHcm91cF0sXG4gICAgICBlbmdpbmU6XG4gICAgICAgIHByb3BzLmVuZ2luZSB8fFxuICAgICAgICBEYXRhYmFzZUNsdXN0ZXJFbmdpbmUuYXVyb3JhUG9zdGdyZXMoe1xuICAgICAgICAgIC8vVE9ETzogRG8gd2UgdXBkYXRlIHRoZXNlIHdoZW4gd2UgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uPyBPciB0cnkgdG8ga2VlcCB0aGVtIGNvbnN0YW50bHkgdXBkYXRlZD9cbiAgICAgICAgICB2ZXJzaW9uOiBBdXJvcmFQb3N0Z3Jlc0VuZ2luZVZlcnNpb24uVkVSXzE1XzZcbiAgICAgICAgfSksXG4gICAgICBiYWNrdXA6IHByb3BzLmJhY2t1cCB8fCB7XG4gICAgICAgIHJldGVudGlvbjogRHVyYXRpb24uZGF5cygxNClcbiAgICAgIH0sXG4gICAgICBzdG9yYWdlRW5jcnlwdGVkOiB0cnVlLFxuICAgICAgc3RvcmFnZUVuY3J5cHRpb25LZXk6IGVuY3J5cHRpb25LZXkua2V5LFxuICAgICAgY2x1c3RlcklkZW50aWZpZXI6XG4gICAgICAgIHByb3BzLmNsdXN0ZXJJZGVudGlmaWVyIHx8IGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9LWNsdXN0ZXJgLFxuICAgICAgY3JlZGVudGlhbHM6IENyZWRlbnRpYWxzLmZyb21TZWNyZXQoZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXQpLFxuICAgICAgZGVmYXVsdERhdGFiYXNlTmFtZTpcbiAgICAgICAgcHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZSB8fCBgJHtpZC5yZXBsYWNlKFwiUmRzXCIsIFwiXCIpfWAsXG4gICAgICBtb25pdG9yaW5nSW50ZXJ2YWw6IHByb3BzLm1vbml0b3JpbmdJbnRlcnZhbCB8fCBEdXJhdGlvbi5taW51dGVzKDEpLFxuICAgICAgcHJlZmVycmVkTWFpbnRlbmFuY2VXaW5kb3c6XG4gICAgICAgIHByb3BzLnByZWZlcnJlZE1haW50ZW5hbmNlV2luZG93IHx8IFwiU2F0OjEyOjMwLVNhdDoyMDozMFwiLFxuICAgICAgcG9ydDogcHJvcHMucG9ydCB8fCA1NDMyLFxuICAgICAgcmVtb3ZhbFBvbGljeTogUmVtb3ZhbFBvbGljeS5TTkFQU0hPVCxcbiAgICAgIHdyaXRlcjpcbiAgICAgICAgcHJvcHMud3JpdGVyIHx8XG4gICAgICAgIENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1Xcml0ZXJgLCB7XG4gICAgICAgICAgZW5hYmxlUGVyZm9ybWFuY2VJbnNpZ2h0czogdHJ1ZSxcbiAgICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OlxuICAgICAgICAgICAgcHJpbWFyeVdyaXRlclBlcmZvcm1hbmNlSW5zaWdodHNLZXkua2V5LFxuICAgICAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX0tcHJpbWFyeS13cml0ZXJgLFxuICAgICAgICAgIC8vVE9ETzogRG8gd2UgdXBkYXRlIHRoZXNlIHdoZW4gd2UgcmVsZWFzZSBhIG5ldyB2ZXJzaW9uPyBPciB0cnkgdG8ga2VlcCB0aGVtIGNvbnN0YW50bHkgdXBkYXRlZD9cbiAgICAgICAgICBjYUNlcnRpZmljYXRlOiBDYUNlcnRpZmljYXRlLlJEU19DQV9SU0E0MDk2X0cxXG4gICAgICAgIH0pLFxuICAgICAgcmVhZGVyczogcHJvcHMucmVhZGVycyB8fCBbXG4gICAgICAgIENsdXN0ZXJJbnN0YW5jZS5zZXJ2ZXJsZXNzVjIoXG4gICAgICAgICAgYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1QcmltYXJ5UmVhZGVyYCxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBzY2FsZVdpdGhXcml0ZXI6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVQZXJmb3JtYW5jZUluc2lnaHRzOiB0cnVlLFxuICAgICAgICAgICAgcGVyZm9ybWFuY2VJbnNpZ2h0RW5jcnlwdGlvbktleTogcHJpbWFyeVJlYWRlckluc2lnaHRzS2V5LmtleSxcbiAgICAgICAgICAgIGluc3RhbmNlSWRlbnRpZmllcjogYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX0tcHJpbWFyeS1yZWFkZXJgLFxuICAgICAgICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMVxuICAgICAgICAgIH1cbiAgICAgICAgKSxcbiAgICAgICAgQ2x1c3Rlckluc3RhbmNlLnNlcnZlcmxlc3NWMihcbiAgICAgICAgICBgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfVNlY29uZGFyeVJlYWRlcmAsXG4gICAgICAgICAge1xuICAgICAgICAgICAgc2NhbGVXaXRoV3JpdGVyOiBmYWxzZSxcbiAgICAgICAgICAgIGVuYWJsZVBlcmZvcm1hbmNlSW5zaWdodHM6IHRydWUsXG4gICAgICAgICAgICBwZXJmb3JtYW5jZUluc2lnaHRFbmNyeXB0aW9uS2V5OiBzZWNvbmRhcnlSZWFkZXJJbnNpZ2h0c0tleS5rZXksXG4gICAgICAgICAgICBpbnN0YW5jZUlkZW50aWZpZXI6IGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9LXNlY29uZGFyeS1yZWFkZXJgLFxuICAgICAgICAgICAgY2FDZXJ0aWZpY2F0ZTogQ2FDZXJ0aWZpY2F0ZS5SRFNfQ0FfUlNBNDA5Nl9HMVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgXVxuICAgIH0pO1xuXG4gICAgY29uc3QgZGF0YWJhc2VQcm94eSA9IG5ldyBEYXRhYmFzZVByb3h5KFxuICAgICAgdGhpcyxcbiAgICAgIGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9RGF0YWJhc2VQcm94eWAsXG4gICAgICB7XG4gICAgICAgIHByb3h5VGFyZ2V0OiBQcm94eVRhcmdldC5mcm9tQ2x1c3RlcihkYXRhYmFzZUNsdXN0ZXIpLFxuICAgICAgICBzZWNyZXRzOiBbZGF0YWJhc2VDcmVkZW50aWFscy5zZWNyZXRdLFxuICAgICAgICBzZWN1cml0eUdyb3VwczogW2NsdXN0ZXJTZWN1cml0eUdyb3VwXSxcbiAgICAgICAgdnBjOiBwcm9wcy52cGMsXG4gICAgICAgIHZwY1N1Ym5ldHM6IHtcbiAgICAgICAgICBzdWJuZXRUeXBlOiBTdWJuZXRUeXBlLlBVQkxJQ1xuICAgICAgICB9XG4gICAgICB9XG4gICAgKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50T3V0cHV0YCwge1xuICAgICAga2V5OiBgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfVByb3h5RW5kcG9pbnRgLFxuICAgICAgZXhwb3J0TmFtZTogYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1Qcm94eUVuZHBvaW50YCxcbiAgICAgIHZhbHVlOiBkYXRhYmFzZVByb3h5LmVuZHBvaW50XG4gICAgfSk7XG5cbiAgICAvLyBSb3RhdGUgdGhlIFNlY3JldCBldmVyeSAzMCBkYXlzXG4gICAgY29uc3QgbWFzdGVyU2VjcmV0ID0gbmV3IFNlY3JldChcbiAgICAgIHRoaXMsXG4gICAgICBgJHtwcm9wcy5kZWZhdWx0RGF0YWJhc2VOYW1lfU1hc3RlclNlY3JldGAsXG4gICAgICB7XG4gICAgICAgIHNlY3JldE5hbWU6IGAke3Byb3BzLmRlZmF1bHREYXRhYmFzZU5hbWV9TWFzdGVyU2VjcmV0YCxcbiAgICAgICAgdGFnczogcHJvcHMudGFnc1xuICAgICAgfVxuICAgICk7XG5cbiAgICBuZXcgU2VjcmV0Um90YXRpb24odGhpcywgYCR7cHJvcHMuZGVmYXVsdERhdGFiYXNlTmFtZX1TZWNyZXRSb3RhdGlvbmAsIHtcbiAgICAgIGFwcGxpY2F0aW9uOiBuZXcgU2VjcmV0Um90YXRpb25BcHBsaWNhdGlvbihcbiAgICAgICAgXCJTZWNyZXRzTWFuYWdlclJEU1Bvc3RncmVTUUxSb3RhdGlvbk11bHRpVXNlclwiLFxuICAgICAgICBcIjEuMS4zNjdcIixcbiAgICAgICAge1xuICAgICAgICAgIGlzTXVsdGlVc2VyOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICksXG4gICAgICBzZWNyZXQ6IGRhdGFiYXNlQ3JlZGVudGlhbHMuc2VjcmV0LFxuICAgICAgbWFzdGVyU2VjcmV0OiBtYXN0ZXJTZWNyZXQuc2VjcmV0LFxuICAgICAgdGFyZ2V0OiBkYXRhYmFzZUNsdXN0ZXIsXG4gICAgICB2cGM6IGRhdGFiYXNlQ2x1c3Rlci52cGNcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { Bucket, BucketProps } from "aws-cdk-lib/aws-s3";
|
|
2
|
-
import { Construct } from "constructs";
|
|
3
|
-
export declare class S3Bucket extends Bucket {
|
|
4
|
-
constructor(scope: Construct, id: string, props?: BucketProps);
|
|
5
|
-
}
|
|
6
|
-
export declare class S3WebsiteBucket extends S3Bucket {
|
|
7
|
-
constructor(scope: Construct, id: string, props?: BucketProps);
|
|
8
|
-
}
|
|
9
|
-
export declare class S3PublicReadBucket extends S3Bucket {
|
|
10
|
-
constructor(scope: Construct, id: string, props?: BucketProps);
|
|
11
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.S3PublicReadBucket = exports.S3WebsiteBucket = exports.S3Bucket = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
|
6
|
-
class S3Bucket extends aws_s3_1.Bucket {
|
|
7
|
-
constructor(scope, id, props) {
|
|
8
|
-
super(scope, id, {
|
|
9
|
-
...props,
|
|
10
|
-
autoDeleteObjects: true,
|
|
11
|
-
removalPolicy: props?.removalPolicy || aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
12
|
-
versioned: true
|
|
13
|
-
});
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.S3Bucket = S3Bucket;
|
|
17
|
-
class S3WebsiteBucket extends S3Bucket {
|
|
18
|
-
constructor(scope, id, props) {
|
|
19
|
-
super(scope, id, {
|
|
20
|
-
...props,
|
|
21
|
-
websiteErrorDocument: "error.html",
|
|
22
|
-
websiteIndexDocument: "index.html",
|
|
23
|
-
publicReadAccess: true
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
exports.S3WebsiteBucket = S3WebsiteBucket;
|
|
28
|
-
class S3PublicReadBucket extends S3Bucket {
|
|
29
|
-
constructor(scope, id, props) {
|
|
30
|
-
super(scope, id, {
|
|
31
|
-
...props,
|
|
32
|
-
publicReadAccess: true,
|
|
33
|
-
blockPublicAccess: new aws_s3_1.BlockPublicAccess({
|
|
34
|
-
blockPublicAcls: false,
|
|
35
|
-
blockPublicPolicy: false,
|
|
36
|
-
ignorePublicAcls: false,
|
|
37
|
-
restrictPublicBuckets: false
|
|
38
|
-
})
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.S3PublicReadBucket = S3PublicReadBucket;
|
|
43
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiczMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9zdG9yZS9zMy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw2Q0FBNEM7QUFDNUMsK0NBQTRFO0FBRzVFLE1BQWEsUUFBUyxTQUFRLGVBQU07SUFDbEMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLGlCQUFpQixFQUFFLElBQUk7WUFDdkIsYUFBYSxFQUFFLEtBQUssRUFBRSxhQUFhLElBQUksMkJBQWEsQ0FBQyxPQUFPO1lBQzVELFNBQVMsRUFBRSxJQUFJO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDRCQVNDO0FBRUQsTUFBYSxlQUFnQixTQUFRLFFBQVE7SUFDM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFtQjtRQUMzRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSztZQUNSLG9CQUFvQixFQUFFLFlBQVk7WUFDbEMsb0JBQW9CLEVBQUUsWUFBWTtZQUNsQyxnQkFBZ0IsRUFBRSxJQUFJO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVRELDBDQVNDO0FBRUQsTUFBYSxrQkFBbUIsU0FBUSxRQUFRO0lBQzlDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBbUI7UUFDM0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUU7WUFDZixHQUFHLEtBQUs7WUFDUixnQkFBZ0IsRUFBRSxJQUFJO1lBQ3RCLGlCQUFpQixFQUFFLElBQUksMEJBQWlCLENBQUM7Z0JBQ3ZDLGVBQWUsRUFBRSxLQUFLO2dCQUN0QixpQkFBaUIsRUFBRSxLQUFLO2dCQUN4QixnQkFBZ0IsRUFBRSxLQUFLO2dCQUN2QixxQkFBcUIsRUFBRSxLQUFLO2FBQzdCLENBQUM7U0FDSCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFiRCxnREFhQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IEJsb2NrUHVibGljQWNjZXNzLCBCdWNrZXQsIEJ1Y2tldFByb3BzIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zM1wiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuZXhwb3J0IGNsYXNzIFMzQnVja2V0IGV4dGVuZHMgQnVja2V0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBCdWNrZXRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBhdXRvRGVsZXRlT2JqZWN0czogdHJ1ZSxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHByb3BzPy5yZW1vdmFsUG9saWN5IHx8IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIHZlcnNpb25lZDogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM1dlYnNpdGVCdWNrZXQgZXh0ZW5kcyBTM0J1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgd2Vic2l0ZUVycm9yRG9jdW1lbnQ6IFwiZXJyb3IuaHRtbFwiLFxuICAgICAgd2Vic2l0ZUluZGV4RG9jdW1lbnQ6IFwiaW5kZXguaHRtbFwiLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZVxuICAgIH0pO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTM1B1YmxpY1JlYWRCdWNrZXQgZXh0ZW5kcyBTM0J1Y2tldCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzPzogQnVja2V0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgcHVibGljUmVhZEFjY2VzczogdHJ1ZSxcbiAgICAgIGJsb2NrUHVibGljQWNjZXNzOiBuZXcgQmxvY2tQdWJsaWNBY2Nlc3Moe1xuICAgICAgICBibG9ja1B1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICBibG9ja1B1YmxpY1BvbGljeTogZmFsc2UsXG4gICAgICAgIGlnbm9yZVB1YmxpY0FjbHM6IGZhbHNlLFxuICAgICAgICByZXN0cmljdFB1YmxpY0J1Y2tldHM6IGZhbHNlXG4gICAgICB9KVxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
import { SecretValue } from "aws-cdk-lib";
|
|
2
|
-
import { Secret as CdkSecret, SecretStringGenerator } from "aws-cdk-lib/aws-secretsmanager";
|
|
3
|
-
import { Construct } from "constructs";
|
|
4
|
-
import { StackBuilder } from "../awsStack";
|
|
5
|
-
import { KeyValue } from "../compute/ecs";
|
|
6
|
-
import { CustomerManagedKey } from "./kms";
|
|
7
|
-
interface SecretProps {
|
|
8
|
-
secretName: string;
|
|
9
|
-
secretObjectValue?: {
|
|
10
|
-
[key: string]: SecretValue;
|
|
11
|
-
};
|
|
12
|
-
secretStringValue?: string;
|
|
13
|
-
description?: string;
|
|
14
|
-
aliasName?: string;
|
|
15
|
-
generateSecretString?: SecretStringGenerator;
|
|
16
|
-
tags: KeyValue;
|
|
17
|
-
buildkiteRoleArn?: string;
|
|
18
|
-
}
|
|
19
|
-
export default class Secret extends Construct {
|
|
20
|
-
readonly secret: CdkSecret;
|
|
21
|
-
readonly secretsCustomerManagedKey: CustomerManagedKey;
|
|
22
|
-
constructor(scope: Construct, id: string, props: SecretProps);
|
|
23
|
-
static build(id: string, props: SecretProps): (sb: StackBuilder) => Construct;
|
|
24
|
-
private setupBuildkitePermissions;
|
|
25
|
-
}
|
|
26
|
-
export {};
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
4
|
-
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
|
5
|
-
const constructs_1 = require("constructs");
|
|
6
|
-
const tagResource_1 = require("../../../utils/tagResource");
|
|
7
|
-
const kms_1 = require("./kms");
|
|
8
|
-
class Secret extends constructs_1.Construct {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(scope, id);
|
|
11
|
-
this.secretsCustomerManagedKey = new kms_1.CustomerManagedKey(this, `${id}CustomerManagedKey`, {
|
|
12
|
-
aliasName: `cmk/${id}`,
|
|
13
|
-
tags: props.tags
|
|
14
|
-
});
|
|
15
|
-
/**
|
|
16
|
-
* If a secretStringValue is provided, use it to create the secret.
|
|
17
|
-
*/
|
|
18
|
-
const secretStringValue = props.secretStringValue
|
|
19
|
-
? {
|
|
20
|
-
secretStringValue: aws_cdk_lib_1.SecretValue.unsafePlainText(props.secretStringValue || "")
|
|
21
|
-
}
|
|
22
|
-
: {};
|
|
23
|
-
/**
|
|
24
|
-
* If a generateSecretString is provided, use it to create the secret.
|
|
25
|
-
* If a secretStringValue is provided, ignore the generateSecretString.
|
|
26
|
-
*/
|
|
27
|
-
const generateSecretString = !props.secretStringValue && props.generateSecretString
|
|
28
|
-
? { generateSecretString: props.generateSecretString }
|
|
29
|
-
: {};
|
|
30
|
-
// Construct the base options for CdkSecret
|
|
31
|
-
const secretOptions = {
|
|
32
|
-
secretName: props.secretName,
|
|
33
|
-
secretObjectValue: props.secretObjectValue,
|
|
34
|
-
encryptionKey: this.secretsCustomerManagedKey.key,
|
|
35
|
-
description: props.description,
|
|
36
|
-
...secretStringValue,
|
|
37
|
-
...generateSecretString
|
|
38
|
-
};
|
|
39
|
-
this.secret = new aws_secretsmanager_1.Secret(this, `${id}Secret`, secretOptions);
|
|
40
|
-
(0, tagResource_1.default)(this.secret, props.tags);
|
|
41
|
-
}
|
|
42
|
-
static build(id, props) {
|
|
43
|
-
return (sb) => {
|
|
44
|
-
const newProps = {
|
|
45
|
-
...props
|
|
46
|
-
};
|
|
47
|
-
return new this(sb.getStack(), id, newProps);
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
setupBuildkitePermissions(buildkiteRole) {
|
|
51
|
-
this.secret.grantRead(buildkiteRole);
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
exports.default = Secret;
|
|
55
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjcmV0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3Mvc3RvcmUvc2VjcmV0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsNkNBQTBDO0FBRTFDLHVFQUd3QztBQUN4QywyQ0FBdUM7QUFDdkMsNERBQXFEO0FBR3JELCtCQUEyQztBQWUzQyxNQUFxQixNQUFPLFNBQVEsc0JBQVM7SUFJM0MsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFrQjtRQUMxRCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUksQ0FBQyx5QkFBeUIsR0FBRyxJQUFJLHdCQUFrQixDQUNyRCxJQUFJLEVBQ0osR0FBRyxFQUFFLG9CQUFvQixFQUN6QjtZQUNFLFNBQVMsRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUN0QixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7U0FDakIsQ0FDRixDQUFDO1FBRUY7O1dBRUc7UUFDSCxNQUFNLGlCQUFpQixHQUFHLEtBQUssQ0FBQyxpQkFBaUI7WUFDL0MsQ0FBQyxDQUFDO2dCQUNFLGlCQUFpQixFQUFFLHlCQUFXLENBQUMsZUFBZSxDQUM1QyxLQUFLLENBQUMsaUJBQWlCLElBQUksRUFBRSxDQUM5QjthQUNGO1lBQ0gsQ0FBQyxDQUFDLEVBQUUsQ0FBQztRQUVQOzs7V0FHRztRQUNILE1BQU0sb0JBQW9CLEdBQ3hCLENBQUMsS0FBSyxDQUFDLGlCQUFpQixJQUFJLEtBQUssQ0FBQyxvQkFBb0I7WUFDcEQsQ0FBQyxDQUFDLEVBQUUsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLG9CQUFvQixFQUFFO1lBQ3RELENBQUMsQ0FBQyxFQUFFLENBQUM7UUFFVCwyQ0FBMkM7UUFDM0MsTUFBTSxhQUFhLEdBQUc7WUFDcEIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLGlCQUFpQixFQUFFLEtBQUssQ0FBQyxpQkFBaUI7WUFDMUMsYUFBYSxFQUFFLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxHQUFHO1lBQ2pELFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixHQUFHLGlCQUFpQjtZQUNwQixHQUFHLG9CQUFvQjtTQUN4QixDQUFDO1FBRUYsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLDJCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFFaEUsSUFBQSxxQkFBVyxFQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUFrQjtRQUVsQixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFnQjtnQkFDNUIsR0FBRyxLQUFLO2FBQ1QsQ0FBQztZQUNGLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUUsRUFBRSxRQUFRLENBQUMsQ0FBQztRQUMvQyxDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8seUJBQXlCLENBQUMsYUFBeUI7UUFDekQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDdkMsQ0FBQztDQUNGO0FBbEVELHlCQWtFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlY3JldFZhbHVlIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBJR3JhbnRhYmxlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIFNlY3JldCBhcyBDZGtTZWNyZXQsXG4gIFNlY3JldFN0cmluZ0dlbmVyYXRvclxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHRhZ1Jlc291cmNlIGZyb20gXCIuLi8uLi8uLi91dGlscy90YWdSZXNvdXJjZVwiO1xuaW1wb3J0IHsgU3RhY2tCdWlsZGVyIH0gZnJvbSBcIi4uL2F3c1N0YWNrXCI7XG5pbXBvcnQgeyBLZXlWYWx1ZSB9IGZyb20gXCIuLi9jb21wdXRlL2Vjc1wiO1xuaW1wb3J0IHsgQ3VzdG9tZXJNYW5hZ2VkS2V5IH0gZnJvbSBcIi4va21zXCI7XG5cbmludGVyZmFjZSBTZWNyZXRQcm9wcyB7XG4gIHNlY3JldE5hbWU6IHN0cmluZztcbiAgc2VjcmV0T2JqZWN0VmFsdWU/OiB7XG4gICAgW2tleTogc3RyaW5nXTogU2VjcmV0VmFsdWU7XG4gIH07XG4gIHNlY3JldFN0cmluZ1ZhbHVlPzogc3RyaW5nO1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgYWxpYXNOYW1lPzogc3RyaW5nO1xuICBnZW5lcmF0ZVNlY3JldFN0cmluZz86IFNlY3JldFN0cmluZ0dlbmVyYXRvcjtcbiAgdGFnczogS2V5VmFsdWU7XG4gIGJ1aWxka2l0ZVJvbGVBcm4/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFNlY3JldCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBzZWNyZXQ6IENka1NlY3JldDtcbiAgcHVibGljIHJlYWRvbmx5IHNlY3JldHNDdXN0b21lck1hbmFnZWRLZXk6IEN1c3RvbWVyTWFuYWdlZEtleTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU2VjcmV0UHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5zZWNyZXRzQ3VzdG9tZXJNYW5hZ2VkS2V5ID0gbmV3IEN1c3RvbWVyTWFuYWdlZEtleShcbiAgICAgIHRoaXMsXG4gICAgICBgJHtpZH1DdXN0b21lck1hbmFnZWRLZXlgLFxuICAgICAge1xuICAgICAgICBhbGlhc05hbWU6IGBjbWsvJHtpZH1gLFxuICAgICAgICB0YWdzOiBwcm9wcy50YWdzXG4gICAgICB9XG4gICAgKTtcblxuICAgIC8qKlxuICAgICAqIElmIGEgc2VjcmV0U3RyaW5nVmFsdWUgaXMgcHJvdmlkZWQsIHVzZSBpdCB0byBjcmVhdGUgdGhlIHNlY3JldC5cbiAgICAgKi9cbiAgICBjb25zdCBzZWNyZXRTdHJpbmdWYWx1ZSA9IHByb3BzLnNlY3JldFN0cmluZ1ZhbHVlXG4gICAgICA/IHtcbiAgICAgICAgICBzZWNyZXRTdHJpbmdWYWx1ZTogU2VjcmV0VmFsdWUudW5zYWZlUGxhaW5UZXh0KFxuICAgICAgICAgICAgcHJvcHMuc2VjcmV0U3RyaW5nVmFsdWUgfHwgXCJcIlxuICAgICAgICAgIClcbiAgICAgICAgfVxuICAgICAgOiB7fTtcblxuICAgIC8qKlxuICAgICAqIElmIGEgZ2VuZXJhdGVTZWNyZXRTdHJpbmcgaXMgcHJvdmlkZWQsIHVzZSBpdCB0byBjcmVhdGUgdGhlIHNlY3JldC5cbiAgICAgKiBJZiBhIHNlY3JldFN0cmluZ1ZhbHVlIGlzIHByb3ZpZGVkLCBpZ25vcmUgdGhlIGdlbmVyYXRlU2VjcmV0U3RyaW5nLlxuICAgICAqL1xuICAgIGNvbnN0IGdlbmVyYXRlU2VjcmV0U3RyaW5nID1cbiAgICAgICFwcm9wcy5zZWNyZXRTdHJpbmdWYWx1ZSAmJiBwcm9wcy5nZW5lcmF0ZVNlY3JldFN0cmluZ1xuICAgICAgICA/IHsgZ2VuZXJhdGVTZWNyZXRTdHJpbmc6IHByb3BzLmdlbmVyYXRlU2VjcmV0U3RyaW5nIH1cbiAgICAgICAgOiB7fTtcblxuICAgIC8vIENvbnN0cnVjdCB0aGUgYmFzZSBvcHRpb25zIGZvciBDZGtTZWNyZXRcbiAgICBjb25zdCBzZWNyZXRPcHRpb25zID0ge1xuICAgICAgc2VjcmV0TmFtZTogcHJvcHMuc2VjcmV0TmFtZSxcbiAgICAgIHNlY3JldE9iamVjdFZhbHVlOiBwcm9wcy5zZWNyZXRPYmplY3RWYWx1ZSxcbiAgICAgIGVuY3J5cHRpb25LZXk6IHRoaXMuc2VjcmV0c0N1c3RvbWVyTWFuYWdlZEtleS5rZXksXG4gICAgICBkZXNjcmlwdGlvbjogcHJvcHMuZGVzY3JpcHRpb24sXG4gICAgICAuLi5zZWNyZXRTdHJpbmdWYWx1ZSxcbiAgICAgIC4uLmdlbmVyYXRlU2VjcmV0U3RyaW5nXG4gICAgfTtcblxuICAgIHRoaXMuc2VjcmV0ID0gbmV3IENka1NlY3JldCh0aGlzLCBgJHtpZH1TZWNyZXRgLCBzZWNyZXRPcHRpb25zKTtcblxuICAgIHRhZ1Jlc291cmNlKHRoaXMuc2VjcmV0LCBwcm9wcy50YWdzKTtcbiAgfVxuXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzOiBTZWNyZXRQcm9wc1xuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBTZWNyZXRQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHNcbiAgICAgIH07XG4gICAgICByZXR1cm4gbmV3IHRoaXMoc2IuZ2V0U3RhY2soKSwgaWQsIG5ld1Byb3BzKTtcbiAgICB9O1xuICB9XG5cbiAgcHJpdmF0ZSBzZXR1cEJ1aWxka2l0ZVBlcm1pc3Npb25zKGJ1aWxka2l0ZVJvbGU6IElHcmFudGFibGUpIHtcbiAgICB0aGlzLnNlY3JldC5ncmFudFJlYWQoYnVpbGRraXRlUm9sZSk7XG4gIH1cbn1cbiJdfQ==
|