@fjall/components-infrastructure 0.1.16 → 0.1.18

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.
Files changed (70) hide show
  1. package/dist/lib/config/aws/ecrDefaultImage.js +3 -3
  2. package/dist/lib/config/aws/identityCenter.d.ts +1 -2
  3. package/dist/lib/config/aws/identityCenter.js +7 -2
  4. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +10 -0
  5. package/dist/lib/config/aws/identityCenterGroupMembership.js +96 -0
  6. package/dist/lib/config/aws/index.d.ts +0 -1
  7. package/dist/lib/config/aws/index.js +1 -2
  8. package/dist/lib/config/aws/ipamPoolId.d.ts +1 -1
  9. package/dist/lib/config/aws/ipamPoolId.js +3 -3
  10. package/dist/lib/config/aws/organisationsAccess.d.ts +10 -0
  11. package/dist/lib/config/aws/organisationsAccess.js +40 -0
  12. package/dist/lib/patterns/aws/basicApp.d.ts +0 -1
  13. package/dist/lib/patterns/aws/basicApp.js +4 -4
  14. package/dist/lib/patterns/aws/buildkite.d.ts +1 -1
  15. package/dist/lib/patterns/aws/buildkite.js +2 -2
  16. package/dist/lib/patterns/aws/freeTierApp.d.ts +0 -1
  17. package/dist/lib/patterns/aws/freeTierApp.js +2 -4
  18. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -1
  19. package/dist/lib/patterns/aws/managedAccount.js +8 -8
  20. package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +4 -0
  21. package/dist/lib/patterns/aws/managedIdentityCenter.js +24 -0
  22. package/dist/lib/patterns/aws/managedOrganisation.d.ts +1 -2
  23. package/dist/lib/patterns/aws/managedOrganisation.js +11 -12
  24. package/dist/lib/resources/aws/compute/ecs.js +2 -4
  25. package/dist/lib/resources/aws/database/rdsFreeTier.js +2 -3
  26. package/dist/lib/resources/aws/networking/ipamPool.js +11 -12
  27. package/dist/lib/resources/aws/networking/vpc.d.ts +7 -2
  28. package/dist/lib/resources/aws/networking/vpc.js +23 -19
  29. package/dist/lib/utils/getAccountId.js +2 -2
  30. package/dist/lib/utils/getConfig.d.ts +4 -5
  31. package/dist/lib/utils/getConfig.js +23 -45
  32. package/package.json +23 -23
  33. package/dist/lib/config/aws/delegateHostedZoneRole.d.ts +0 -5
  34. package/dist/lib/config/aws/delegateHostedZoneRole.js +0 -77
  35. package/dist/lib/config/aws/identityCenterUser.d.ts +0 -16
  36. package/dist/lib/config/aws/identityCenterUser.js +0 -125
  37. package/dist/lib/config/aws/ipamPool.d.ts +0 -5
  38. package/dist/lib/config/aws/ipamPool.js +0 -56
  39. package/dist/lib/config/aws/ipamPoolResourceShare.d.ts +0 -5
  40. package/dist/lib/config/aws/ipamPoolResourceShare.js +0 -42
  41. package/dist/lib/config/aws/ramEnableSharing.d.ts +0 -5
  42. package/dist/lib/config/aws/ramEnableSharing.js +0 -35
  43. package/dist/lib/config/aws/users.d.ts +0 -5
  44. package/dist/lib/config/aws/users.js +0 -126
  45. package/dist/lib/config/fjall/hostedZones/fjall.io.d.ts +0 -10
  46. package/dist/lib/config/fjall/hostedZones/fjall.io.js +0 -25
  47. package/dist/lib/resources/aws/constant/ecr.d.ts +0 -12
  48. package/dist/lib/resources/aws/constant/ecr.js +0 -30
  49. package/dist/lib/resources/aws/constant/vpc.d.ts +0 -26
  50. package/dist/lib/resources/aws/constant/vpc.js +0 -63
  51. package/dist/lib/resources/aws/networking/hostedZone.d.ts +0 -21
  52. package/dist/lib/resources/aws/networking/hostedZone.js +0 -68
  53. package/dist/lib/resources/aws/store/alias.d.ts +0 -5
  54. package/dist/lib/resources/aws/store/alias.js +0 -13
  55. package/dist/lib/resources/aws/store/database.d.ts +0 -18
  56. package/dist/lib/resources/aws/store/database.js +0 -33
  57. package/dist/lib/resources/aws/store/index.d.ts +0 -7
  58. package/dist/lib/resources/aws/store/index.js +0 -24
  59. package/dist/lib/resources/aws/store/kms.d.ts +0 -14
  60. package/dist/lib/resources/aws/store/kms.js +0 -34
  61. package/dist/lib/resources/aws/store/parameter.d.ts +0 -26
  62. package/dist/lib/resources/aws/store/parameter.js +0 -100
  63. package/dist/lib/resources/aws/store/rds.d.ts +0 -25
  64. package/dist/lib/resources/aws/store/rds.js +0 -132
  65. package/dist/lib/resources/aws/store/s3.d.ts +0 -11
  66. package/dist/lib/resources/aws/store/s3.js +0 -43
  67. package/dist/lib/resources/aws/store/secret.d.ts +0 -26
  68. package/dist/lib/resources/aws/store/secret.js +0 -55
  69. package/dist/lib/utils/usersConfig.d.ts +0 -7
  70. package/dist/lib/utils/usersConfig.js +0 -18
@@ -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==
@@ -1,7 +0,0 @@
1
- import { User } from "../config/aws/identityCenterUser";
2
- export default class UsersConfig {
3
- private configFile;
4
- users: User[];
5
- constructor();
6
- getUsers(): User[];
7
- }
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const fs = require("fs");
4
- class UsersConfig {
5
- constructor() {
6
- this.configFile = "fjall/users-config.json";
7
- if (!fs.existsSync(this.configFile)) {
8
- throw new Error(`Config file ${this.configFile} does not exist`);
9
- }
10
- const fileContent = fs.readFileSync(this.configFile, "utf-8");
11
- this.users = JSON.parse(fileContent);
12
- }
13
- getUsers() {
14
- return this.users;
15
- }
16
- }
17
- exports.default = UsersConfig;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlcnNDb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9saWIvdXRpbHMvdXNlcnNDb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSx5QkFBeUI7QUFHekIsTUFBcUIsV0FBVztJQUk5QjtRQUhRLGVBQVUsR0FBRyx5QkFBeUIsQ0FBQztRQUk3QyxJQUFJLENBQUMsRUFBRSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEVBQUU7WUFDbkMsTUFBTSxJQUFJLEtBQUssQ0FBQyxlQUFlLElBQUksQ0FBQyxVQUFVLGlCQUFpQixDQUFDLENBQUM7U0FDbEU7UUFFRCxNQUFNLFdBQVcsR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDOUQsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7SUFFRCxRQUFRO1FBQ04sT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7Q0FDRjtBQWhCRCw4QkFnQkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IFVzZXIgfSBmcm9tIFwiLi4vY29uZmlnL2F3cy9pZGVudGl0eUNlbnRlclVzZXJcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgVXNlcnNDb25maWcge1xuICBwcml2YXRlIGNvbmZpZ0ZpbGUgPSBcImZqYWxsL3VzZXJzLWNvbmZpZy5qc29uXCI7XG4gIHB1YmxpYyB1c2VyczogVXNlcltdO1xuXG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIGlmICghZnMuZXhpc3RzU3luYyh0aGlzLmNvbmZpZ0ZpbGUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoYENvbmZpZyBmaWxlICR7dGhpcy5jb25maWdGaWxlfSBkb2VzIG5vdCBleGlzdGApO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbGVDb250ZW50ID0gZnMucmVhZEZpbGVTeW5jKHRoaXMuY29uZmlnRmlsZSwgXCJ1dGYtOFwiKTtcbiAgICB0aGlzLnVzZXJzID0gSlNPTi5wYXJzZShmaWxlQ29udGVudCk7XG4gIH1cblxuICBnZXRVc2VycygpIHtcbiAgICByZXR1cm4gdGhpcy51c2VycztcbiAgfVxufVxuIl19