@fjall/components-infrastructure 2.30.3 → 2.32.0

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 (118) hide show
  1. package/dist/lib/app.d.ts +27 -1
  2. package/dist/lib/app.js +35 -4
  3. package/dist/lib/config/aws/identityCenterMembership.d.ts +11 -0
  4. package/dist/lib/config/aws/identityCenterMembership.js +61 -0
  5. package/dist/lib/config/aws/oidcConnector.js +11 -3
  6. package/dist/lib/lambda-assets/cert-generator/asset/index.js +12 -3
  7. package/dist/lib/patterns/aws/compute.d.ts +2 -2
  8. package/dist/lib/patterns/aws/compute.js +18 -9
  9. package/dist/lib/patterns/aws/computeLambda.d.ts +15 -1
  10. package/dist/lib/patterns/aws/computeLambda.js +18 -2
  11. package/dist/lib/patterns/aws/computePropApplicability.d.ts +20 -0
  12. package/dist/lib/patterns/aws/computePropApplicability.js +87 -0
  13. package/dist/lib/patterns/aws/database.d.ts +19 -1
  14. package/dist/lib/patterns/aws/database.js +22 -3
  15. package/dist/lib/patterns/aws/devSubstrate.d.ts +85 -0
  16. package/dist/lib/patterns/aws/devSubstrate.js +390 -0
  17. package/dist/lib/patterns/aws/devSubstrate.waker.source.cjs +13 -0
  18. package/dist/lib/resources/aws/compute/applicationLoadBalancer.d.ts +17 -0
  19. package/dist/lib/resources/aws/compute/applicationLoadBalancer.js +23 -0
  20. package/dist/lib/resources/aws/compute/ecsImages.js +7 -2
  21. package/dist/lib/resources/aws/compute/ecsNetworking.d.ts +4 -10
  22. package/dist/lib/resources/aws/compute/ecsNetworking.js +13 -48
  23. package/dist/lib/resources/aws/compute/ecsRoles.d.ts +25 -0
  24. package/dist/lib/resources/aws/compute/ecsRoles.js +39 -20
  25. package/dist/lib/resources/aws/compute/hostHeaderListenerRule.d.ts +23 -0
  26. package/dist/lib/resources/aws/compute/hostHeaderListenerRule.js +59 -0
  27. package/dist/lib/resources/aws/compute/imageTagParameter.d.ts +18 -1
  28. package/dist/lib/resources/aws/compute/imageTagParameter.js +32 -2
  29. package/dist/lib/resources/aws/compute/lambda.d.ts +1 -1
  30. package/dist/lib/resources/aws/compute/lambda.js +6 -4
  31. package/dist/lib/resources/aws/compute/lambdaAlbTarget.d.ts +17 -0
  32. package/dist/lib/resources/aws/compute/lambdaAlbTarget.js +18 -0
  33. package/dist/lib/resources/aws/compute/listenerRouting.d.ts +21 -0
  34. package/dist/lib/resources/aws/compute/listenerRouting.js +20 -0
  35. package/dist/lib/resources/aws/database/rdsAurora.d.ts +16 -0
  36. package/dist/lib/resources/aws/database/rdsAurora.js +57 -3
  37. package/dist/lib/resources/aws/database/rdsDefaults.d.ts +28 -0
  38. package/dist/lib/resources/aws/database/rdsDefaults.js +28 -0
  39. package/dist/lib/resources/aws/iam/identityCenter/user.js +5 -1
  40. package/dist/lib/resources/aws/logging/index.d.ts +1 -0
  41. package/dist/lib/resources/aws/logging/index.js +1 -0
  42. package/dist/lib/resources/aws/logging/logGroup.d.ts +7 -0
  43. package/dist/lib/resources/aws/logging/logGroup.js +7 -0
  44. package/dist/lib/resources/aws/logging/singletonLogGroup.d.ts +15 -0
  45. package/dist/lib/resources/aws/logging/singletonLogGroup.js +24 -0
  46. package/dist/lib/resources/aws/networking/vpcPeeringConnection.js +2 -1
  47. package/dist/lib/resources/aws/storage/bucketDeployment.d.ts +5 -6
  48. package/dist/lib/resources/aws/storage/bucketDeployment.js +14 -7
  49. package/dist/lib/resources/aws/utilities/awsCustomResource.js +5 -0
  50. package/dist/lib/resources/aws/utilities/customResource.js +5 -1
  51. package/dist/lib/utils/addSuffixToEmail.js +1 -5
  52. package/dist/lib/utils/devSubstrateTags.d.ts +22 -0
  53. package/dist/lib/utils/devSubstrateTags.js +22 -0
  54. package/dist/lib/utils/validationLogger.d.ts +2 -2
  55. package/dist/lib/utils/validationLogger.js +4 -4
  56. package/package.json +5 -5
  57. package/dist/lib/__tests__/setup.d.ts +0 -48
  58. package/dist/lib/__tests__/setup.js +0 -1
  59. package/dist/lib/config/aws/accountId.d.ts +0 -6
  60. package/dist/lib/config/aws/accountId.js +0 -33
  61. package/dist/lib/config/aws/backupGlobalSettings.d.ts +0 -29
  62. package/dist/lib/config/aws/backupGlobalSettings.js +0 -51
  63. package/dist/lib/config/aws/costAllocationTags.d.ts +0 -12
  64. package/dist/lib/config/aws/costAllocationTags.js +0 -48
  65. package/dist/lib/config/aws/eventBus.d.ts +0 -7
  66. package/dist/lib/config/aws/eventBus.js +0 -24
  67. package/dist/lib/config/aws/identityCenterGroupMembership.d.ts +0 -10
  68. package/dist/lib/config/aws/identityCenterGroupMembership.js +0 -115
  69. package/dist/lib/config/aws/ipamDelegateAdmin.d.ts +0 -8
  70. package/dist/lib/config/aws/ipamDelegateAdmin.js +0 -58
  71. package/dist/lib/config/aws/ipamPoolId.d.ts +0 -10
  72. package/dist/lib/config/aws/ipamPoolId.js +0 -39
  73. package/dist/lib/config/aws/organisation.d.ts +0 -30
  74. package/dist/lib/config/aws/organisation.js +0 -95
  75. package/dist/lib/config/aws/organisationId.d.ts +0 -7
  76. package/dist/lib/config/aws/organisationId.js +0 -46
  77. package/dist/lib/config/aws/organisationsAccess.d.ts +0 -10
  78. package/dist/lib/config/aws/organisationsAccess.js +0 -50
  79. package/dist/lib/config/aws/ramSharing.d.ts +0 -4
  80. package/dist/lib/config/aws/ramSharing.js +0 -35
  81. package/dist/lib/config/monitoring.d.ts +0 -18
  82. package/dist/lib/config/monitoring.js +0 -22
  83. package/dist/lib/patterns/aws/cicdRole.d.ts +0 -67
  84. package/dist/lib/patterns/aws/cicdRole.js +0 -68
  85. package/dist/lib/patterns/aws/hostedZone.d.ts +0 -28
  86. package/dist/lib/patterns/aws/hostedZone.js +0 -150
  87. package/dist/lib/patterns/aws/managedAccount.d.ts +0 -9
  88. package/dist/lib/patterns/aws/managedAccount.js +0 -55
  89. package/dist/lib/patterns/aws/managedIdentityCenter.d.ts +0 -4
  90. package/dist/lib/patterns/aws/managedIdentityCenter.js +0 -24
  91. package/dist/lib/patterns/aws/managedOrganisation.d.ts +0 -36
  92. package/dist/lib/patterns/aws/managedOrganisation.js +0 -97
  93. package/dist/lib/patterns/aws/managedPlatform.d.ts +0 -12
  94. package/dist/lib/patterns/aws/managedPlatform.js +0 -29
  95. package/dist/lib/patterns/aws/subdomainHostedZone.d.ts +0 -9
  96. package/dist/lib/patterns/aws/subdomainHostedZone.js +0 -39
  97. package/dist/lib/resources/aws/cicd/cicdRole.d.ts +0 -65
  98. package/dist/lib/resources/aws/cicd/cicdRole.js +0 -191
  99. package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +0 -75
  100. package/dist/lib/resources/aws/compute/ecsFreeTier.js +0 -1
  101. package/dist/lib/resources/aws/compute/ecsSpot.d.ts +0 -75
  102. package/dist/lib/resources/aws/compute/ecsSpot.js +0 -1
  103. package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.d.ts +0 -20
  104. package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.js +0 -1
  105. package/dist/lib/resources/aws/database/database.d.ts +0 -14
  106. package/dist/lib/resources/aws/database/database.js +0 -28
  107. package/dist/lib/resources/aws/database/databaseInstance.d.ts +0 -15
  108. package/dist/lib/resources/aws/database/databaseInstance.js +0 -30
  109. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.d.ts +0 -13
  110. package/dist/lib/resources/aws/iam/identityCenter/attachManagedPolicy.js +0 -52
  111. package/dist/lib/resources/aws/iam/securityGroup.d.ts +0 -5
  112. package/dist/lib/resources/aws/iam/securityGroup.js +0 -14
  113. package/dist/lib/resources/aws/monitoring/monitoringRole.d.ts +0 -28
  114. package/dist/lib/resources/aws/monitoring/monitoringRole.js +0 -125
  115. package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +0 -5
  116. package/dist/lib/resources/aws/utilities/cfnOutput.js +0 -1
  117. package/dist/lib/utils/capitalizeString.d.ts +0 -1
  118. package/dist/lib/utils/capitalizeString.js +0 -7
@@ -1,14 +0,0 @@
1
- import { type Connections, type IConnectable, type Vpc } from "aws-cdk-lib/aws-ec2";
2
- import { Construct } from "constructs";
3
- import { type StackBuilder } from "../base/awsStack";
4
- interface DatabaseProps {
5
- vpc: Vpc;
6
- }
7
- export default class Database extends Construct implements IConnectable {
8
- private readonly resource;
9
- connections: Connections;
10
- databaseSecretName: string;
11
- constructor(scope: Construct, id: string, props: DatabaseProps);
12
- static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
13
- }
14
- export {};
@@ -1,28 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const constructs_1 = require("constructs");
4
- const _1 = require("./");
5
- class Database extends constructs_1.Construct {
6
- constructor(scope, id, props) {
7
- super(scope, id);
8
- this.resource = new _1.RdsAurora(scope, `${id}Rds`, {
9
- vpc: props.vpc,
10
- databaseName: id.replace("Database", "")
11
- });
12
- this.connections = this.resource.connections;
13
- }
14
- //todo: move to generic 'resource' class
15
- static build(id, props) {
16
- return (sb) => {
17
- const newProps = {
18
- ...props,
19
- ...{
20
- vpc: sb.getNetwork() || props?.vpc
21
- }
22
- };
23
- return new this(sb.getStack(), id, newProps);
24
- };
25
- }
26
- }
27
- exports.default = Database;
28
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9kYXRhYmFzZS9kYXRhYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUtBLDJDQUF1QztBQUd2Qyx5QkFBK0I7QUFNL0IsTUFBcUIsUUFBUyxTQUFRLHNCQUFTO0lBSzdDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDNUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksWUFBUyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsS0FBSyxFQUFFO1lBQy9DLEdBQUcsRUFBRSxLQUFLLENBQUMsR0FBRztZQUNkLFlBQVksRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUM7U0FDekMsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLFdBQVcsR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUMvQyxDQUFDO0lBRUQsd0NBQXdDO0lBQ3hDLE1BQU0sQ0FBQyxLQUFLLENBQ1YsRUFBVSxFQUNWLEtBQThCO1FBRTlCLE9BQU8sQ0FBQyxFQUFnQixFQUFFLEVBQUU7WUFDMUIsTUFBTSxRQUFRLEdBQWtCO2dCQUM5QixHQUFHLEtBQUs7Z0JBQ1IsR0FBRztvQkFDRCxHQUFHLEVBQUcsRUFBRSxDQUFDLFVBQVUsRUFBVSxJQUFJLEtBQUssRUFBRSxHQUFHO2lCQUM1QzthQUNGLENBQUM7WUFFRixPQUFPLElBQUksSUFBSSxDQUFDLEVBQUUsQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDL0MsQ0FBQyxDQUFDO0lBQ0osQ0FBQztDQUNGO0FBaENELDJCQWdDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIHR5cGUgQ29ubmVjdGlvbnMsXG4gIHR5cGUgSUNvbm5lY3RhYmxlLFxuICB0eXBlIFZwY1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgUmRzQXVyb3JhIH0gZnJvbSBcIi4vXCI7XG5cbmludGVyZmFjZSBEYXRhYmFzZVByb3BzIHtcbiAgdnBjOiBWcGM7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIERhdGFiYXNlIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUNvbm5lY3RhYmxlIHtcbiAgcHJpdmF0ZSByZWFkb25seSByZXNvdXJjZTogUmRzQXVyb3JhO1xuICBwdWJsaWMgY29ubmVjdGlvbnM6IENvbm5lY3Rpb25zO1xuICBwdWJsaWMgZGF0YWJhc2VTZWNyZXROYW1lOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERhdGFiYXNlUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgdGhpcy5yZXNvdXJjZSA9IG5ldyBSZHNBdXJvcmEoc2NvcGUsIGAke2lkfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBpZC5yZXBsYWNlKFwiRGF0YWJhc2VcIiwgXCJcIilcbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlc291cmNlLmNvbm5lY3Rpb25zO1xuICB9XG5cbiAgLy90b2RvOiBtb3ZlIHRvIGdlbmVyaWMgJ3Jlc291cmNlJyBjbGFzc1xuICBzdGF0aWMgYnVpbGQoXG4gICAgaWQ6IHN0cmluZyxcbiAgICBwcm9wcz86IFBhcnRpYWw8RGF0YWJhc2VQcm9wcz5cbiAgKTogKHNiOiBTdGFja0J1aWxkZXIpID0+IENvbnN0cnVjdCB7XG4gICAgcmV0dXJuIChzYjogU3RhY2tCdWlsZGVyKSA9PiB7XG4gICAgICBjb25zdCBuZXdQcm9wczogRGF0YWJhc2VQcm9wcyA9IHtcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICAgIC4uLntcbiAgICAgICAgICB2cGM6IChzYi5nZXROZXR3b3JrKCkgYXMgVnBjKSB8fCBwcm9wcz8udnBjXG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIHJldHVybiBuZXcgdGhpcyhzYi5nZXRTdGFjaygpLCBpZCwgbmV3UHJvcHMpO1xuICAgIH07XG4gIH1cbn1cbiJdfQ==
@@ -1,15 +0,0 @@
1
- import { type Connections, type IConnectable, type SecurityGroup, type Vpc } from "aws-cdk-lib/aws-ec2";
2
- import { Construct } from "constructs";
3
- import { type StackBuilder } from "../base/awsStack";
4
- interface DatabaseProps {
5
- vpc: Vpc;
6
- }
7
- export default class Database extends Construct implements IConnectable {
8
- private readonly resource;
9
- connections: Connections;
10
- databaseSecurityGroup: SecurityGroup;
11
- databaseSecretName: string;
12
- constructor(scope: Construct, id: string, props: DatabaseProps);
13
- static build(id: string, props?: Partial<DatabaseProps>): (sb: StackBuilder) => Construct;
14
- }
15
- export {};
@@ -1,30 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const constructs_1 = require("constructs");
4
- const _1 = require("./");
5
- class Database extends constructs_1.Construct {
6
- constructor(scope, id, props) {
7
- super(scope, id);
8
- this.resource = new _1.RdsInstance(scope, `${id}Rds`, {
9
- vpc: props.vpc,
10
- databaseName: id.replace("Database", ""),
11
- readReplica: {}
12
- });
13
- this.connections = this.resource.connections;
14
- this.databaseSecurityGroup = this.resource.databaseSecurityGroup;
15
- }
16
- //todo: move to generic 'resource' class
17
- static build(id, props) {
18
- return (sb) => {
19
- const newProps = {
20
- ...props,
21
- ...{
22
- vpc: sb.getNetwork() || props?.vpc
23
- }
24
- };
25
- return new this(sb.getStack(), id, newProps);
26
- };
27
- }
28
- }
29
- exports.default = Database;
30
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2VJbnN0YW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2RhdGFiYXNlL2RhdGFiYXNlSW5zdGFuY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFNQSwyQ0FBdUM7QUFHdkMseUJBQWlDO0FBTWpDLE1BQXFCLFFBQVMsU0FBUSxzQkFBUztJQU03QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQW9CO1FBQzVELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLGNBQVcsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtZQUNqRCxHQUFHLEVBQUUsS0FBSyxDQUFDLEdBQUc7WUFDZCxZQUFZLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDO1lBQ3hDLFdBQVcsRUFBRSxFQUFFO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUM7UUFDN0MsSUFBSSxDQUFDLHFCQUFxQixHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMscUJBQXFCLENBQUM7SUFDbkUsQ0FBQztJQUVELHdDQUF3QztJQUN4QyxNQUFNLENBQUMsS0FBSyxDQUNWLEVBQVUsRUFDVixLQUE4QjtRQUU5QixPQUFPLENBQUMsRUFBZ0IsRUFBRSxFQUFFO1lBQzFCLE1BQU0sUUFBUSxHQUFrQjtnQkFDOUIsR0FBRyxLQUFLO2dCQUNSLEdBQUc7b0JBQ0QsR0FBRyxFQUFHLEVBQUUsQ0FBQyxVQUFVLEVBQVUsSUFBSSxLQUFLLEVBQUUsR0FBRztpQkFDNUM7YUFDRixDQUFDO1lBRUYsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQy9DLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQW5DRCwyQkFtQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICB0eXBlIENvbm5lY3Rpb25zLFxuICB0eXBlIElDb25uZWN0YWJsZSxcbiAgdHlwZSBTZWN1cml0eUdyb3VwLFxuICB0eXBlIFZwY1xufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcblxuaW1wb3J0IHsgdHlwZSBTdGFja0J1aWxkZXIgfSBmcm9tIFwiLi4vYmFzZS9hd3NTdGFja1wiO1xuaW1wb3J0IHsgUmRzSW5zdGFuY2UgfSBmcm9tIFwiLi9cIjtcblxuaW50ZXJmYWNlIERhdGFiYXNlUHJvcHMge1xuICB2cGM6IFZwYztcbn1cblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRGF0YWJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3QgaW1wbGVtZW50cyBJQ29ubmVjdGFibGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlc291cmNlOiBSZHNJbnN0YW5jZTtcbiAgcHVibGljIGNvbm5lY3Rpb25zOiBDb25uZWN0aW9ucztcbiAgcHVibGljIGRhdGFiYXNlU2VjdXJpdHlHcm91cDogU2VjdXJpdHlHcm91cDtcbiAgcHVibGljIGRhdGFiYXNlU2VjcmV0TmFtZTogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhYmFzZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIHRoaXMucmVzb3VyY2UgPSBuZXcgUmRzSW5zdGFuY2Uoc2NvcGUsIGAke2lkfVJkc2AsIHtcbiAgICAgIHZwYzogcHJvcHMudnBjLFxuICAgICAgZGF0YWJhc2VOYW1lOiBpZC5yZXBsYWNlKFwiRGF0YWJhc2VcIiwgXCJcIiksXG4gICAgICByZWFkUmVwbGljYToge31cbiAgICB9KTtcblxuICAgIHRoaXMuY29ubmVjdGlvbnMgPSB0aGlzLnJlc291cmNlLmNvbm5lY3Rpb25zO1xuICAgIHRoaXMuZGF0YWJhc2VTZWN1cml0eUdyb3VwID0gdGhpcy5yZXNvdXJjZS5kYXRhYmFzZVNlY3VyaXR5R3JvdXA7XG4gIH1cblxuICAvL3RvZG86IG1vdmUgdG8gZ2VuZXJpYyAncmVzb3VyY2UnIGNsYXNzXG4gIHN0YXRpYyBidWlsZChcbiAgICBpZDogc3RyaW5nLFxuICAgIHByb3BzPzogUGFydGlhbDxEYXRhYmFzZVByb3BzPlxuICApOiAoc2I6IFN0YWNrQnVpbGRlcikgPT4gQ29uc3RydWN0IHtcbiAgICByZXR1cm4gKHNiOiBTdGFja0J1aWxkZXIpID0+IHtcbiAgICAgIGNvbnN0IG5ld1Byb3BzOiBEYXRhYmFzZVByb3BzID0ge1xuICAgICAgICAuLi5wcm9wcyxcbiAgICAgICAgLi4ue1xuICAgICAgICAgIHZwYzogKHNiLmdldE5ldHdvcmsoKSBhcyBWcGMpIHx8IHByb3BzPy52cGNcbiAgICAgICAgfVxuICAgICAgfTtcblxuICAgICAgcmV0dXJuIG5ldyB0aGlzKHNiLmdldFN0YWNrKCksIGlkLCBuZXdQcm9wcyk7XG4gICAgfTtcbiAgfVxufVxuIl19
@@ -1,13 +0,0 @@
1
- import { Construct } from "constructs";
2
- import { type Role } from "..";
3
- interface AttachManagedPolicyProps {
4
- instanceArn: string;
5
- permissionSet: string;
6
- permissionSetArn: string;
7
- managedPolicyArn: string;
8
- role: Role;
9
- }
10
- export declare class AttachManagedPolicy extends Construct {
11
- constructor(scope: Construct, id: string, props: AttachManagedPolicyProps);
12
- }
13
- export {};
@@ -1,52 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AttachManagedPolicy = void 0;
4
- const constructs_1 = require("constructs");
5
- const customResources = require("aws-cdk-lib/custom-resources");
6
- const awsCustomResource_1 = require("../../utilities/awsCustomResource");
7
- class AttachManagedPolicy extends constructs_1.Construct {
8
- constructor(scope, id, props) {
9
- super(scope, id);
10
- new awsCustomResource_1.AwsCustomResource(this, "attachManagedPolicy", {
11
- functionName: `attachPolicyToPermissionSet${props.permissionSet}`,
12
- onCreate: {
13
- service: "sso-admin",
14
- action: "AttachManagedPolicyToPermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/AttachManagedPolicyToPermissionSetCommand
15
- parameters: {
16
- InstanceArn: props.instanceArn,
17
- PermissionSetArn: props.permissionSetArn,
18
- ManagedPolicyArn: props.managedPolicyArn
19
- },
20
- physicalResourceId: customResources.PhysicalResourceId.of(`attachManagedPolicyToPermissionSet${props.permissionSet}`)
21
- },
22
- onDelete: {
23
- service: "sso-admin",
24
- action: "DetachManagedPolicyFromPermissionSet", // https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/client/sso-admin/command/DetachManagedPolicyFromPermissionSetCommand/
25
- parameters: {
26
- InstanceArn: props.instanceArn,
27
- PermissionSetArn: props.permissionSetArn,
28
- ManagedPolicyArn: props.managedPolicyArn
29
- }
30
- },
31
- policy: customResources.AwsCustomResourcePolicy.fromSdkCalls({
32
- resources: ["*"]
33
- }),
34
- // TODO: Lock down permissions, when we're ready to troubleshoot intermittent policy errors
35
- // role: props.role,
36
- // policy: customResources.AwsCustomResourcePolicy.fromStatements([
37
- // new PolicyStatement({
38
- // actions: [
39
- // "sso:ProvisionPermissionSet",
40
- // "sso:AttachManagedPolicyToPermissionSet",
41
- // "sso:DetachManagedPolicyFromPermissionSet",
42
- // "sso:TagResource"
43
- // ],
44
- // resources: ["*"]
45
- // })
46
- // ]),
47
- resourceType: "Custom::PermissionSet"
48
- });
49
- }
50
- }
51
- exports.AttachManagedPolicy = AttachManagedPolicy;
52
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXR0YWNoTWFuYWdlZFBvbGljeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9pZGVudGl0eUNlbnRlci9hdHRhY2hNYW5hZ2VkUG9saWN5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUF1QztBQUN2QyxnRUFBZ0U7QUFDaEUseUVBQXNFO0FBV3RFLE1BQWEsbUJBQW9CLFNBQVEsc0JBQVM7SUFDaEQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUErQjtRQUN2RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBRWpCLElBQUkscUNBQWlCLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ2pELFlBQVksRUFBRSw4QkFBOEIsS0FBSyxDQUFDLGFBQWEsRUFBRTtZQUNqRSxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLE1BQU0sRUFBRSxvQ0FBb0MsRUFBRSw0SEFBNEg7Z0JBQzFLLFVBQVUsRUFBRTtvQkFDVixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7b0JBQ3hDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7aUJBQ3pDO2dCQUNELGtCQUFrQixFQUFFLGVBQWUsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQ3ZELHFDQUFxQyxLQUFLLENBQUMsYUFBYSxFQUFFLENBQzNEO2FBQ0Y7WUFDRCxRQUFRLEVBQUU7Z0JBQ1IsT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLE1BQU0sRUFBRSxzQ0FBc0MsRUFBRSwrSEFBK0g7Z0JBQy9LLFVBQVUsRUFBRTtvQkFDVixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7b0JBQzlCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7b0JBQ3hDLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxnQkFBZ0I7aUJBQ3pDO2FBQ0Y7WUFDRCxNQUFNLEVBQUUsZUFBZSxDQUFDLHVCQUF1QixDQUFDLFlBQVksQ0FBQztnQkFDM0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO2FBQ2pCLENBQUM7WUFDRiwyRkFBMkY7WUFDM0Ysb0JBQW9CO1lBQ3BCLG1FQUFtRTtZQUNuRSwwQkFBMEI7WUFDMUIsaUJBQWlCO1lBQ2pCLHNDQUFzQztZQUN0QyxrREFBa0Q7WUFDbEQsb0RBQW9EO1lBQ3BELDBCQUEwQjtZQUMxQixTQUFTO1lBQ1QsdUJBQXVCO1lBQ3ZCLE9BQU87WUFDUCxNQUFNO1lBQ04sWUFBWSxFQUFFLHVCQUF1QjtTQUN0QyxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUE5Q0Qsa0RBOENDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGN1c3RvbVJlc291cmNlcyBmcm9tIFwiYXdzLWNkay1saWIvY3VzdG9tLXJlc291cmNlc1wiO1xuaW1wb3J0IHsgQXdzQ3VzdG9tUmVzb3VyY2UgfSBmcm9tIFwiLi4vLi4vdXRpbGl0aWVzL2F3c0N1c3RvbVJlc291cmNlXCI7XG5pbXBvcnQgeyB0eXBlIFJvbGUgfSBmcm9tIFwiLi5cIjtcblxuaW50ZXJmYWNlIEF0dGFjaE1hbmFnZWRQb2xpY3lQcm9wcyB7XG4gIGluc3RhbmNlQXJuOiBzdHJpbmc7XG4gIHBlcm1pc3Npb25TZXQ6IHN0cmluZztcbiAgcGVybWlzc2lvblNldEFybjogc3RyaW5nO1xuICBtYW5hZ2VkUG9saWN5QXJuOiBzdHJpbmc7XG4gIHJvbGU6IFJvbGU7XG59XG5cbmV4cG9ydCBjbGFzcyBBdHRhY2hNYW5hZ2VkUG9saWN5IGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEF0dGFjaE1hbmFnZWRQb2xpY3lQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBuZXcgQXdzQ3VzdG9tUmVzb3VyY2UodGhpcywgXCJhdHRhY2hNYW5hZ2VkUG9saWN5XCIsIHtcbiAgICAgIGZ1bmN0aW9uTmFtZTogYGF0dGFjaFBvbGljeVRvUGVybWlzc2lvblNldCR7cHJvcHMucGVybWlzc2lvblNldH1gLFxuICAgICAgb25DcmVhdGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXRcIiwgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU0phdmFTY3JpcHRTREsvdjMvbGF0ZXN0L2NsaWVudC9zc28tYWRtaW4vY29tbWFuZC9BdHRhY2hNYW5hZ2VkUG9saWN5VG9QZXJtaXNzaW9uU2V0Q29tbWFuZFxuICAgICAgICBwYXJhbWV0ZXJzOiB7XG4gICAgICAgICAgSW5zdGFuY2VBcm46IHByb3BzLmluc3RhbmNlQXJuLFxuICAgICAgICAgIFBlcm1pc3Npb25TZXRBcm46IHByb3BzLnBlcm1pc3Npb25TZXRBcm4sXG4gICAgICAgICAgTWFuYWdlZFBvbGljeUFybjogcHJvcHMubWFuYWdlZFBvbGljeUFyblxuICAgICAgICB9LFxuICAgICAgICBwaHlzaWNhbFJlc291cmNlSWQ6IGN1c3RvbVJlc291cmNlcy5QaHlzaWNhbFJlc291cmNlSWQub2YoXG4gICAgICAgICAgYGF0dGFjaE1hbmFnZWRQb2xpY3lUb1Blcm1pc3Npb25TZXQke3Byb3BzLnBlcm1pc3Npb25TZXR9YFxuICAgICAgICApXG4gICAgICB9LFxuICAgICAgb25EZWxldGU6IHtcbiAgICAgICAgc2VydmljZTogXCJzc28tYWRtaW5cIixcbiAgICAgICAgYWN0aW9uOiBcIkRldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldFwiLCAvLyBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTSmF2YVNjcmlwdFNESy92My9sYXRlc3QvY2xpZW50L3Nzby1hZG1pbi9jb21tYW5kL0RldGFjaE1hbmFnZWRQb2xpY3lGcm9tUGVybWlzc2lvblNldENvbW1hbmQvXG4gICAgICAgIHBhcmFtZXRlcnM6IHtcbiAgICAgICAgICBJbnN0YW5jZUFybjogcHJvcHMuaW5zdGFuY2VBcm4sXG4gICAgICAgICAgUGVybWlzc2lvblNldEFybjogcHJvcHMucGVybWlzc2lvblNldEFybixcbiAgICAgICAgICBNYW5hZ2VkUG9saWN5QXJuOiBwcm9wcy5tYW5hZ2VkUG9saWN5QXJuXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBwb2xpY3k6IGN1c3RvbVJlc291cmNlcy5Bd3NDdXN0b21SZXNvdXJjZVBvbGljeS5mcm9tU2RrQ2FsbHMoe1xuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIH0pLFxuICAgICAgLy8gVE9ETzogTG9jayBkb3duIHBlcm1pc3Npb25zLCB3aGVuIHdlJ3JlIHJlYWR5IHRvIHRyb3VibGVzaG9vdCBpbnRlcm1pdHRlbnQgcG9saWN5IGVycm9yc1xuICAgICAgLy8gcm9sZTogcHJvcHMucm9sZSxcbiAgICAgIC8vIHBvbGljeTogY3VzdG9tUmVzb3VyY2VzLkF3c0N1c3RvbVJlc291cmNlUG9saWN5LmZyb21TdGF0ZW1lbnRzKFtcbiAgICAgIC8vICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAvLyAgICAgYWN0aW9uczogW1xuICAgICAgLy8gICAgICAgXCJzc286UHJvdmlzaW9uUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286QXR0YWNoTWFuYWdlZFBvbGljeVRvUGVybWlzc2lvblNldFwiLFxuICAgICAgLy8gICAgICAgXCJzc286RGV0YWNoTWFuYWdlZFBvbGljeUZyb21QZXJtaXNzaW9uU2V0XCIsXG4gICAgICAvLyAgICAgICBcInNzbzpUYWdSZXNvdXJjZVwiXG4gICAgICAvLyAgICAgXSxcbiAgICAgIC8vICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgIC8vICAgfSlcbiAgICAgIC8vIF0pLFxuICAgICAgcmVzb3VyY2VUeXBlOiBcIkN1c3RvbTo6UGVybWlzc2lvblNldFwiXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
@@ -1,5 +0,0 @@
1
- import * as ec2 from "aws-cdk-lib/aws-ec2";
2
- import { type Construct } from "constructs";
3
- export declare class SecurityGroup extends ec2.SecurityGroup {
4
- constructor(scope: Construct, id: string, props: ec2.SecurityGroupProps);
5
- }
@@ -1,14 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SecurityGroup = void 0;
4
- const ec2 = require("aws-cdk-lib/aws-ec2");
5
- class SecurityGroup extends ec2.SecurityGroup {
6
- constructor(scope, id, props) {
7
- super(scope, id, {
8
- ...props,
9
- description: props.description || `${id} Security Group`
10
- });
11
- }
12
- }
13
- exports.SecurityGroup = SecurityGroup;
14
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHlHcm91cC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL2lhbS9zZWN1cml0eUdyb3VwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJDQUEyQztBQUczQyxNQUFhLGFBQWMsU0FBUSxHQUFHLENBQUMsYUFBYTtJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTZCO1FBQ3JFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsR0FBRyxLQUFLO1lBQ1IsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXLElBQUksR0FBRyxFQUFFLGlCQUFpQjtTQUN6RCxDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxzQ0FPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgY2xhc3MgU2VjdXJpdHlHcm91cCBleHRlbmRzIGVjMi5TZWN1cml0eUdyb3VwIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IGVjMi5TZWN1cml0eUdyb3VwUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgZGVzY3JpcHRpb246IHByb3BzLmRlc2NyaXB0aW9uIHx8IGAke2lkfSBTZWN1cml0eSBHcm91cGBcbiAgICB9KTtcbiAgfVxufVxuIl19
@@ -1,28 +0,0 @@
1
- import { Role } from "aws-cdk-lib/aws-iam";
2
- import { type Construct } from "constructs";
3
- export interface MonitoringRoleConfig {
4
- /**
5
- * The AWS account ID of the Fjall webapp that will assume this role
6
- */
7
- webappAccountId: string;
8
- /**
9
- * The application name to scope the role's permissions to
10
- */
11
- appName: string;
12
- /**
13
- * Optional role name prefix. Defaults to "FjallMonitoring"
14
- */
15
- roleNamePrefix?: string;
16
- /**
17
- * Optional IAM path for the role. Defaults to "/"
18
- */
19
- rolePath?: string;
20
- }
21
- /**
22
- * Factory to build a cross-account monitoring IAM role that allows the Fjall webapp
23
- * to query CloudWatch metrics, ECS service status, and logs for this application.
24
- */
25
- export declare class MonitoringRoleFactory {
26
- static build(id: string, config: MonitoringRoleConfig): (app: Construct, scope: Construct) => Role;
27
- }
28
- export default MonitoringRoleFactory;
@@ -1,125 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.MonitoringRoleFactory = void 0;
4
- const aws_cdk_lib_1 = require("aws-cdk-lib");
5
- const aws_iam_1 = require("aws-cdk-lib/aws-iam");
6
- /**
7
- * Factory to build a cross-account monitoring IAM role that allows the Fjall webapp
8
- * to query CloudWatch metrics, ECS service status, and logs for this application.
9
- */
10
- class MonitoringRoleFactory {
11
- static build(id, config) {
12
- return (app, scope) => {
13
- const stack = aws_cdk_lib_1.Stack.of(scope);
14
- const role = new aws_iam_1.Role(scope, id, {
15
- roleName: `${config.roleNamePrefix || "FjallMonitoring"}-${config.appName}`,
16
- path: config.rolePath || "/",
17
- assumedBy: new aws_iam_1.AccountPrincipal(config.webappAccountId),
18
- description: `Cross-account monitoring role for Fjall application: ${config.appName}`,
19
- inlinePolicies: {
20
- MonitoringPolicy: new aws_iam_1.PolicyDocument({
21
- statements: [
22
- // CloudWatch Metrics - all resources
23
- new aws_iam_1.PolicyStatement({
24
- effect: aws_iam_1.Effect.ALLOW,
25
- actions: [
26
- "cloudwatch:GetMetricData",
27
- "cloudwatch:GetMetricStatistics",
28
- "cloudwatch:ListMetrics"
29
- ],
30
- resources: ["*"]
31
- }),
32
- // ECS - scoped to app resources
33
- new aws_iam_1.PolicyStatement({
34
- effect: aws_iam_1.Effect.ALLOW,
35
- actions: [
36
- "ecs:DescribeServices",
37
- "ecs:DescribeTasks",
38
- "ecs:ListTasks",
39
- "ecs:DescribeClusters",
40
- "ecs:ListServices"
41
- ],
42
- resources: ["*"],
43
- conditions: {
44
- StringEquals: {
45
- "aws:ResourceTag/fjall:costAllocation:service": config.appName
46
- }
47
- }
48
- }),
49
- // RDS - describe and monitoring
50
- new aws_iam_1.PolicyStatement({
51
- effect: aws_iam_1.Effect.ALLOW,
52
- actions: [
53
- "rds:DescribeDBInstances",
54
- "rds:DescribeDBClusters",
55
- "rds:DescribeDBProxies",
56
- "rds:ListTagsForResource"
57
- ],
58
- resources: ["*"]
59
- }),
60
- // S3 - bucket metrics and listing
61
- new aws_iam_1.PolicyStatement({
62
- effect: aws_iam_1.Effect.ALLOW,
63
- actions: [
64
- "s3:GetBucketLocation",
65
- "s3:GetBucketMetricsConfiguration",
66
- "s3:GetBucketTagging",
67
- "s3:ListBucket",
68
- "s3:ListAllMyBuckets"
69
- ],
70
- resources: ["*"]
71
- }),
72
- // Lambda - function metrics and status
73
- new aws_iam_1.PolicyStatement({
74
- effect: aws_iam_1.Effect.ALLOW,
75
- actions: [
76
- "lambda:GetFunction",
77
- "lambda:GetFunctionConfiguration",
78
- "lambda:ListFunctions",
79
- "lambda:ListTags"
80
- ],
81
- resources: ["*"]
82
- }),
83
- // Application Load Balancer - metrics and health
84
- new aws_iam_1.PolicyStatement({
85
- effect: aws_iam_1.Effect.ALLOW,
86
- actions: [
87
- "elasticloadbalancing:DescribeLoadBalancers",
88
- "elasticloadbalancing:DescribeTargetGroups",
89
- "elasticloadbalancing:DescribeTargetHealth",
90
- "elasticloadbalancing:DescribeTags"
91
- ],
92
- resources: ["*"]
93
- }),
94
- // CloudWatch Logs - read logs for all app resources
95
- new aws_iam_1.PolicyStatement({
96
- effect: aws_iam_1.Effect.ALLOW,
97
- actions: [
98
- "logs:FilterLogEvents",
99
- "logs:GetLogEvents",
100
- "logs:DescribeLogGroups",
101
- "logs:DescribeLogStreams"
102
- ],
103
- resources: [
104
- `arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/ecs/${config.appName}*:*`,
105
- `arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/lambda/${config.appName}*:*`,
106
- `arn:aws:logs:${stack.region}:${stack.account}:log-group:/aws/rds/${config.appName}*:*`
107
- ]
108
- })
109
- ]
110
- })
111
- }
112
- });
113
- // Export the role ARN so it can be retrieved after deployment
114
- new aws_cdk_lib_1.CfnOutput(scope, `${id}Arn`, {
115
- value: role.roleArn,
116
- description: `ARN of the monitoring role for ${config.appName}`,
117
- exportName: `${config.appName}-MonitoringRoleArn`
118
- });
119
- return role;
120
- };
121
- }
122
- }
123
- exports.MonitoringRoleFactory = MonitoringRoleFactory;
124
- exports.default = MonitoringRoleFactory;
125
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9uaXRvcmluZ1JvbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tb25pdG9yaW5nL21vbml0b3JpbmdSb2xlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUErQztBQUMvQyxpREFNNkI7QUF5QjdCOzs7R0FHRztBQUNILE1BQWEscUJBQXFCO0lBQ3pCLE1BQU0sQ0FBQyxLQUFLLENBQ2pCLEVBQVUsRUFDVixNQUE0QjtRQUU1QixPQUFPLENBQUMsR0FBYyxFQUFFLEtBQWdCLEVBQUUsRUFBRTtZQUMxQyxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUU5QixNQUFNLElBQUksR0FBRyxJQUFJLGNBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO2dCQUMvQixRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsY0FBYyxJQUFJLGlCQUFpQixJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQzNFLElBQUksRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLEdBQUc7Z0JBQzVCLFNBQVMsRUFBRSxJQUFJLDBCQUFnQixDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUM7Z0JBQ3ZELFdBQVcsRUFBRSx3REFBd0QsTUFBTSxDQUFDLE9BQU8sRUFBRTtnQkFDckYsY0FBYyxFQUFFO29CQUNkLGdCQUFnQixFQUFFLElBQUksd0JBQWMsQ0FBQzt3QkFDbkMsVUFBVSxFQUFFOzRCQUNWLHFDQUFxQzs0QkFDckMsSUFBSSx5QkFBZSxDQUFDO2dDQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2dDQUNwQixPQUFPLEVBQUU7b0NBQ1AsMEJBQTBCO29DQUMxQixnQ0FBZ0M7b0NBQ2hDLHdCQUF3QjtpQ0FDekI7Z0NBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDOzZCQUNqQixDQUFDOzRCQUNGLGdDQUFnQzs0QkFDaEMsSUFBSSx5QkFBZSxDQUFDO2dDQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2dDQUNwQixPQUFPLEVBQUU7b0NBQ1Asc0JBQXNCO29DQUN0QixtQkFBbUI7b0NBQ25CLGVBQWU7b0NBQ2Ysc0JBQXNCO29DQUN0QixrQkFBa0I7aUNBQ25CO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztnQ0FDaEIsVUFBVSxFQUFFO29DQUNWLFlBQVksRUFBRTt3Q0FDWiw4Q0FBOEMsRUFDNUMsTUFBTSxDQUFDLE9BQU87cUNBQ2pCO2lDQUNGOzZCQUNGLENBQUM7NEJBQ0YsZ0NBQWdDOzRCQUNoQyxJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRTtvQ0FDUCx5QkFBeUI7b0NBQ3pCLHdCQUF3QjtvQ0FDeEIsdUJBQXVCO29DQUN2Qix5QkFBeUI7aUNBQzFCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzs2QkFDakIsQ0FBQzs0QkFDRixrQ0FBa0M7NEJBQ2xDLElBQUkseUJBQWUsQ0FBQztnQ0FDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQ0FDcEIsT0FBTyxFQUFFO29DQUNQLHNCQUFzQjtvQ0FDdEIsa0NBQWtDO29DQUNsQyxxQkFBcUI7b0NBQ3JCLGVBQWU7b0NBQ2YscUJBQXFCO2lDQUN0QjtnQ0FDRCxTQUFTLEVBQUUsQ0FBQyxHQUFHLENBQUM7NkJBQ2pCLENBQUM7NEJBQ0YsdUNBQXVDOzRCQUN2QyxJQUFJLHlCQUFlLENBQUM7Z0NBQ2xCLE1BQU0sRUFBRSxnQkFBTSxDQUFDLEtBQUs7Z0NBQ3BCLE9BQU8sRUFBRTtvQ0FDUCxvQkFBb0I7b0NBQ3BCLGlDQUFpQztvQ0FDakMsc0JBQXNCO29DQUN0QixpQkFBaUI7aUNBQ2xCO2dDQUNELFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQzs2QkFDakIsQ0FBQzs0QkFDRixpREFBaUQ7NEJBQ2pELElBQUkseUJBQWUsQ0FBQztnQ0FDbEIsTUFBTSxFQUFFLGdCQUFNLENBQUMsS0FBSztnQ0FDcEIsT0FBTyxFQUFFO29DQUNQLDRDQUE0QztvQ0FDNUMsMkNBQTJDO29DQUMzQywyQ0FBMkM7b0NBQzNDLG1DQUFtQztpQ0FDcEM7Z0NBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDOzZCQUNqQixDQUFDOzRCQUNGLG9EQUFvRDs0QkFDcEQsSUFBSSx5QkFBZSxDQUFDO2dDQUNsQixNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO2dDQUNwQixPQUFPLEVBQUU7b0NBQ1Asc0JBQXNCO29DQUN0QixtQkFBbUI7b0NBQ25CLHdCQUF3QjtvQ0FDeEIseUJBQXlCO2lDQUMxQjtnQ0FDRCxTQUFTLEVBQUU7b0NBQ1QsZ0JBQWdCLEtBQUssQ0FBQyxNQUFNLElBQUksS0FBSyxDQUFDLE9BQU8sdUJBQXVCLE1BQU0sQ0FBQyxPQUFPLEtBQUs7b0NBQ3ZGLGdCQUFnQixLQUFLLENBQUMsTUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLDBCQUEwQixNQUFNLENBQUMsT0FBTyxLQUFLO29DQUMxRixnQkFBZ0IsS0FBSyxDQUFDLE1BQU0sSUFBSSxLQUFLLENBQUMsT0FBTyx1QkFBdUIsTUFBTSxDQUFDLE9BQU8sS0FBSztpQ0FDeEY7NkJBQ0YsQ0FBQzt5QkFDSDtxQkFDRixDQUFDO2lCQUNIO2FBQ0YsQ0FBQyxDQUFDO1lBRUgsOERBQThEO1lBQzlELElBQUksdUJBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRTtnQkFDL0IsS0FBSyxFQUFFLElBQUksQ0FBQyxPQUFPO2dCQUNuQixXQUFXLEVBQUUsa0NBQWtDLE1BQU0sQ0FBQyxPQUFPLEVBQUU7Z0JBQy9ELFVBQVUsRUFBRSxHQUFHLE1BQU0sQ0FBQyxPQUFPLG9CQUFvQjthQUNsRCxDQUFDLENBQUM7WUFFSCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXZIRCxzREF1SEM7QUFFRCxrQkFBZSxxQkFBcUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENmbk91dHB1dCwgU3RhY2sgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFJvbGUsXG4gIEFjY291bnRQcmluY2lwYWwsXG4gIFBvbGljeURvY3VtZW50LFxuICBQb2xpY3lTdGF0ZW1lbnQsXG4gIEVmZmVjdFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgdHlwZSBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuXG5leHBvcnQgaW50ZXJmYWNlIE1vbml0b3JpbmdSb2xlQ29uZmlnIHtcbiAgLyoqXG4gICAqIFRoZSBBV1MgYWNjb3VudCBJRCBvZiB0aGUgRmphbGwgd2ViYXBwIHRoYXQgd2lsbCBhc3N1bWUgdGhpcyByb2xlXG4gICAqL1xuICB3ZWJhcHBBY2NvdW50SWQ6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGFwcGxpY2F0aW9uIG5hbWUgdG8gc2NvcGUgdGhlIHJvbGUncyBwZXJtaXNzaW9ucyB0b1xuICAgKi9cbiAgYXBwTmFtZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBPcHRpb25hbCByb2xlIG5hbWUgcHJlZml4LiBEZWZhdWx0cyB0byBcIkZqYWxsTW9uaXRvcmluZ1wiXG4gICAqL1xuICByb2xlTmFtZVByZWZpeD86IHN0cmluZztcblxuICAvKipcbiAgICogT3B0aW9uYWwgSUFNIHBhdGggZm9yIHRoZSByb2xlLiBEZWZhdWx0cyB0byBcIi9cIlxuICAgKi9cbiAgcm9sZVBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRmFjdG9yeSB0byBidWlsZCBhIGNyb3NzLWFjY291bnQgbW9uaXRvcmluZyBJQU0gcm9sZSB0aGF0IGFsbG93cyB0aGUgRmphbGwgd2ViYXBwXG4gKiB0byBxdWVyeSBDbG91ZFdhdGNoIG1ldHJpY3MsIEVDUyBzZXJ2aWNlIHN0YXR1cywgYW5kIGxvZ3MgZm9yIHRoaXMgYXBwbGljYXRpb24uXG4gKi9cbmV4cG9ydCBjbGFzcyBNb25pdG9yaW5nUm9sZUZhY3Rvcnkge1xuICBwdWJsaWMgc3RhdGljIGJ1aWxkKFxuICAgIGlkOiBzdHJpbmcsXG4gICAgY29uZmlnOiBNb25pdG9yaW5nUm9sZUNvbmZpZ1xuICApOiAoYXBwOiBDb25zdHJ1Y3QsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IFJvbGUge1xuICAgIHJldHVybiAoYXBwOiBDb25zdHJ1Y3QsIHNjb3BlOiBDb25zdHJ1Y3QpID0+IHtcbiAgICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2Yoc2NvcGUpO1xuXG4gICAgICBjb25zdCByb2xlID0gbmV3IFJvbGUoc2NvcGUsIGlkLCB7XG4gICAgICAgIHJvbGVOYW1lOiBgJHtjb25maWcucm9sZU5hbWVQcmVmaXggfHwgXCJGamFsbE1vbml0b3JpbmdcIn0tJHtjb25maWcuYXBwTmFtZX1gLFxuICAgICAgICBwYXRoOiBjb25maWcucm9sZVBhdGggfHwgXCIvXCIsXG4gICAgICAgIGFzc3VtZWRCeTogbmV3IEFjY291bnRQcmluY2lwYWwoY29uZmlnLndlYmFwcEFjY291bnRJZCksXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQ3Jvc3MtYWNjb3VudCBtb25pdG9yaW5nIHJvbGUgZm9yIEZqYWxsIGFwcGxpY2F0aW9uOiAke2NvbmZpZy5hcHBOYW1lfWAsXG4gICAgICAgIGlubGluZVBvbGljaWVzOiB7XG4gICAgICAgICAgTW9uaXRvcmluZ1BvbGljeTogbmV3IFBvbGljeURvY3VtZW50KHtcbiAgICAgICAgICAgIHN0YXRlbWVudHM6IFtcbiAgICAgICAgICAgICAgLy8gQ2xvdWRXYXRjaCBNZXRyaWNzIC0gYWxsIHJlc291cmNlc1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImNsb3Vkd2F0Y2g6R2V0TWV0cmljRGF0YVwiLFxuICAgICAgICAgICAgICAgICAgXCJjbG91ZHdhdGNoOkdldE1ldHJpY1N0YXRpc3RpY3NcIixcbiAgICAgICAgICAgICAgICAgIFwiY2xvdWR3YXRjaDpMaXN0TWV0cmljc1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIEVDUyAtIHNjb3BlZCB0byBhcHAgcmVzb3VyY2VzXG4gICAgICAgICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlU2VydmljZXNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkRlc2NyaWJlVGFza3NcIixcbiAgICAgICAgICAgICAgICAgIFwiZWNzOkxpc3RUYXNrc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6RGVzY3JpYmVDbHVzdGVyc1wiLFxuICAgICAgICAgICAgICAgICAgXCJlY3M6TGlzdFNlcnZpY2VzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcbiAgICAgICAgICAgICAgICBjb25kaXRpb25zOiB7XG4gICAgICAgICAgICAgICAgICBTdHJpbmdFcXVhbHM6IHtcbiAgICAgICAgICAgICAgICAgICAgXCJhd3M6UmVzb3VyY2VUYWcvZmphbGw6Y29zdEFsbG9jYXRpb246c2VydmljZVwiOlxuICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5hcHBOYW1lXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gUkRTIC0gZGVzY3JpYmUgYW5kIG1vbml0b3JpbmdcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQkluc3RhbmNlc1wiLFxuICAgICAgICAgICAgICAgICAgXCJyZHM6RGVzY3JpYmVEQkNsdXN0ZXJzXCIsXG4gICAgICAgICAgICAgICAgICBcInJkczpEZXNjcmliZURCUHJveGllc1wiLFxuICAgICAgICAgICAgICAgICAgXCJyZHM6TGlzdFRhZ3NGb3JSZXNvdXJjZVwiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIFMzIC0gYnVja2V0IG1ldHJpY3MgYW5kIGxpc3RpbmdcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRMb2NhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRNZXRyaWNzQ29uZmlndXJhdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJzMzpHZXRCdWNrZXRUYWdnaW5nXCIsXG4gICAgICAgICAgICAgICAgICBcInMzOkxpc3RCdWNrZXRcIixcbiAgICAgICAgICAgICAgICAgIFwiczM6TGlzdEFsbE15QnVja2V0c1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIExhbWJkYSAtIGZ1bmN0aW9uIG1ldHJpY3MgYW5kIHN0YXR1c1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpHZXRGdW5jdGlvblwiLFxuICAgICAgICAgICAgICAgICAgXCJsYW1iZGE6R2V0RnVuY3Rpb25Db25maWd1cmF0aW9uXCIsXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpMaXN0RnVuY3Rpb25zXCIsXG4gICAgICAgICAgICAgICAgICBcImxhbWJkYTpMaXN0VGFnc1wiXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgICAgICByZXNvdXJjZXM6IFtcIipcIl1cbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIC8vIEFwcGxpY2F0aW9uIExvYWQgQmFsYW5jZXIgLSBtZXRyaWNzIGFuZCBoZWFsdGhcbiAgICAgICAgICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgICAgICAgICAgZWZmZWN0OiBFZmZlY3QuQUxMT1csXG4gICAgICAgICAgICAgICAgYWN0aW9uczogW1xuICAgICAgICAgICAgICAgICAgXCJlbGFzdGljbG9hZGJhbGFuY2luZzpEZXNjcmliZUxvYWRCYWxhbmNlcnNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYXJnZXRHcm91cHNcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYXJnZXRIZWFsdGhcIixcbiAgICAgICAgICAgICAgICAgIFwiZWxhc3RpY2xvYWRiYWxhbmNpbmc6RGVzY3JpYmVUYWdzXCJcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXVxuICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgLy8gQ2xvdWRXYXRjaCBMb2dzIC0gcmVhZCBsb2dzIGZvciBhbGwgYXBwIHJlc291cmNlc1xuICAgICAgICAgICAgICBuZXcgUG9saWN5U3RhdGVtZW50KHtcbiAgICAgICAgICAgICAgICBlZmZlY3Q6IEVmZmVjdC5BTExPVyxcbiAgICAgICAgICAgICAgICBhY3Rpb25zOiBbXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6RmlsdGVyTG9nRXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6R2V0TG9nRXZlbnRzXCIsXG4gICAgICAgICAgICAgICAgICBcImxvZ3M6RGVzY3JpYmVMb2dHcm91cHNcIixcbiAgICAgICAgICAgICAgICAgIFwibG9nczpEZXNjcmliZUxvZ1N0cmVhbXNcIlxuICAgICAgICAgICAgICAgIF0sXG4gICAgICAgICAgICAgICAgcmVzb3VyY2VzOiBbXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2Vjcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL2xhbWJkYS8ke2NvbmZpZy5hcHBOYW1lfSo6KmAsXG4gICAgICAgICAgICAgICAgICBgYXJuOmF3czpsb2dzOiR7c3RhY2sucmVnaW9ufToke3N0YWNrLmFjY291bnR9OmxvZy1ncm91cDovYXdzL3Jkcy8ke2NvbmZpZy5hcHBOYW1lfSo6KmBcbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICBdXG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEV4cG9ydCB0aGUgcm9sZSBBUk4gc28gaXQgY2FuIGJlIHJldHJpZXZlZCBhZnRlciBkZXBsb3ltZW50XG4gICAgICBuZXcgQ2ZuT3V0cHV0KHNjb3BlLCBgJHtpZH1Bcm5gLCB7XG4gICAgICAgIHZhbHVlOiByb2xlLnJvbGVBcm4sXG4gICAgICAgIGRlc2NyaXB0aW9uOiBgQVJOIG9mIHRoZSBtb25pdG9yaW5nIHJvbGUgZm9yICR7Y29uZmlnLmFwcE5hbWV9YCxcbiAgICAgICAgZXhwb3J0TmFtZTogYCR7Y29uZmlnLmFwcE5hbWV9LU1vbml0b3JpbmdSb2xlQXJuYFxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiByb2xlO1xuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgTW9uaXRvcmluZ1JvbGVGYWN0b3J5O1xuIl19
@@ -1,5 +0,0 @@
1
- import * as cdk from "aws-cdk-lib";
2
- import { type Construct } from "constructs";
3
- export declare class CfnOutput extends cdk.CfnOutput {
4
- constructor(scope: Construct, id: string, props: cdk.CfnOutputProps);
5
- }