@fjall/components-infrastructure 0.86.0 → 0.87.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/dist/lib/app.d.ts +166 -6
- package/dist/lib/app.js +212 -20
- package/dist/lib/aspects/resourceInventory.d.ts +4 -4
- package/dist/lib/aspects/resourceInventory.js +3 -3
- package/dist/lib/config/aws/backupGlobalSettings.js +1 -2
- package/dist/lib/config/aws/identityCenter.js +1 -5
- package/dist/lib/config/aws/organisation.js +1 -4
- package/dist/lib/index.d.ts +1 -0
- package/dist/lib/index.js +7 -1
- package/dist/lib/patterns/aws/buildkite.js +3 -2
- package/dist/lib/patterns/aws/cdn.d.ts +164 -0
- package/dist/lib/patterns/aws/cdn.js +264 -0
- package/dist/lib/patterns/aws/compute.d.ts +278 -59
- package/dist/lib/patterns/aws/compute.js +384 -188
- package/dist/lib/patterns/aws/connections.d.ts +46 -0
- package/dist/lib/patterns/aws/connections.js +159 -0
- package/dist/lib/patterns/aws/database.d.ts +124 -11
- package/dist/lib/patterns/aws/database.js +188 -66
- package/dist/lib/patterns/aws/hostedZone.js +1 -1
- package/dist/lib/patterns/aws/index.d.ts +3 -0
- package/dist/lib/patterns/aws/index.js +4 -1
- package/dist/lib/patterns/aws/interfaces/compute.d.ts +121 -0
- package/dist/lib/patterns/aws/interfaces/compute.js +48 -0
- package/dist/lib/patterns/aws/interfaces/connector.d.ts +183 -0
- package/dist/lib/patterns/aws/interfaces/connector.js +117 -0
- package/dist/lib/patterns/aws/interfaces/database.d.ts +136 -0
- package/dist/lib/patterns/aws/interfaces/database.js +65 -0
- package/dist/lib/patterns/aws/interfaces/index.d.ts +12 -0
- package/dist/lib/patterns/aws/interfaces/index.js +49 -0
- package/dist/lib/patterns/aws/interfaces/messaging.d.ts +146 -0
- package/dist/lib/patterns/aws/interfaces/messaging.js +56 -0
- package/dist/lib/patterns/aws/interfaces/pattern.d.ts +403 -0
- package/dist/lib/patterns/aws/interfaces/pattern.js +36 -0
- package/dist/lib/patterns/aws/interfaces/storage.d.ts +136 -0
- package/dist/lib/patterns/aws/interfaces/storage.js +48 -0
- package/dist/lib/patterns/aws/messaging.d.ts +183 -0
- package/dist/lib/patterns/aws/messaging.js +239 -0
- package/dist/lib/patterns/aws/network.js +4 -4
- package/dist/lib/patterns/aws/pattern.d.ts +67 -0
- package/dist/lib/patterns/aws/pattern.js +69 -0
- package/dist/lib/patterns/aws/payload.d.ts +87 -0
- package/dist/lib/patterns/aws/payload.js +526 -0
- package/dist/lib/patterns/aws/storage.d.ts +127 -15
- package/dist/lib/patterns/aws/storage.js +234 -38
- package/dist/lib/resources/aws/backup/backupPlan.js +1 -6
- package/dist/lib/resources/aws/backup/backupVault.js +1 -2
- package/dist/lib/resources/aws/base/awsStack.d.ts +0 -2
- package/dist/lib/resources/aws/base/awsStack.js +1 -7
- package/dist/lib/resources/aws/cdn/cloudFront.d.ts +71 -0
- package/dist/lib/resources/aws/cdn/cloudFront.js +176 -0
- package/dist/lib/resources/aws/cdn/index.d.ts +1 -0
- package/dist/lib/resources/aws/cdn/index.js +18 -0
- package/dist/lib/resources/aws/compute/ec2.d.ts +5 -0
- package/dist/lib/resources/aws/compute/ec2.js +33 -6
- package/dist/lib/resources/aws/compute/ecs.d.ts +32 -25
- package/dist/lib/resources/aws/compute/ecs.js +31 -115
- package/dist/lib/resources/aws/compute/lambda.d.ts +94 -5
- package/dist/lib/resources/aws/compute/lambda.js +209 -32
- package/dist/lib/resources/aws/database/database.js +1 -1
- package/dist/lib/resources/aws/database/dynamodb.d.ts +70 -0
- package/dist/lib/resources/aws/database/dynamodb.js +181 -0
- package/dist/lib/resources/aws/database/index.d.ts +1 -0
- package/dist/lib/resources/aws/database/index.js +2 -1
- package/dist/lib/resources/aws/database/migrationLambda.d.ts +80 -0
- package/dist/lib/resources/aws/database/migrationLambda.js +119 -0
- package/dist/lib/resources/aws/database/rdsAurora.d.ts +15 -0
- package/dist/lib/resources/aws/database/rdsAurora.js +41 -18
- package/dist/lib/resources/aws/database/rdsAuroraGlobal.js +12 -8
- package/dist/lib/resources/aws/database/rdsInstance.js +2 -2
- package/dist/lib/resources/aws/index.d.ts +2 -0
- package/dist/lib/resources/aws/index.js +3 -1
- package/dist/lib/resources/aws/messaging/eventbridge.d.ts +28 -0
- package/dist/lib/resources/aws/messaging/eventbridge.js +53 -0
- package/dist/lib/resources/aws/messaging/index.d.ts +3 -0
- package/dist/lib/resources/aws/messaging/index.js +20 -0
- package/dist/lib/resources/aws/messaging/sns.d.ts +35 -0
- package/dist/lib/resources/aws/messaging/sns.js +70 -0
- package/dist/lib/resources/aws/messaging/sqs.d.ts +105 -0
- package/dist/lib/resources/aws/messaging/sqs.js +231 -0
- package/dist/lib/resources/aws/messaging/utils.d.ts +3 -0
- package/dist/lib/resources/aws/messaging/utils.js +7 -0
- package/dist/lib/resources/aws/networking/ipam.js +1 -2
- package/dist/lib/resources/aws/networking/ipamPool.js +3 -2
- package/dist/lib/resources/aws/networking/vpc.js +1 -2
- package/dist/lib/resources/aws/storage/ecr.js +8 -5
- package/dist/lib/resources/aws/storage/s3.js +1 -2
- package/dist/lib/resources/aws/utilities/awsCustomResource.js +1 -1
- package/dist/lib/resources/aws/utilities/customResource.js +1 -1
- package/dist/lib/utils/getConfig.js +3 -2
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.js +2 -1
- package/dist/lib/utils/manifestWriter.d.ts +174 -0
- package/dist/lib/utils/manifestWriter.js +233 -0
- package/dist/lib/utils/standardTagsAspect.js +1 -8
- package/dist/lib/utils/validationLogger.d.ts +34 -0
- package/dist/lib/utils/validationLogger.js +83 -0
- package/package.json +3 -3
- package/dist/lib/__tests__/setup.d.ts +0 -48
- package/dist/lib/__tests__/setup.js +0 -1
- package/dist/lib/patterns/aws/cicdRole.d.ts +0 -67
- package/dist/lib/patterns/aws/cicdRole.js +0 -68
- package/dist/lib/resources/aws/cicd/cicdRole.d.ts +0 -65
- package/dist/lib/resources/aws/cicd/cicdRole.js +0 -191
- package/dist/lib/resources/aws/compute/ecsFreeTier.d.ts +0 -75
- package/dist/lib/resources/aws/compute/ecsFreeTier.js +0 -1
- package/dist/lib/resources/aws/compute/ecsSpot.d.ts +0 -75
- package/dist/lib/resources/aws/compute/ecsSpot.js +0 -1
- package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.d.ts +0 -20
- package/dist/lib/resources/aws/compute/utilities/capacityProviderDrainWaiter.js +0 -1
- package/dist/lib/resources/aws/utilities/cfnOutput.d.ts +0 -5
- package/dist/lib/resources/aws/utilities/cfnOutput.js +0 -1
|
@@ -19,4 +19,6 @@ __exportStar(require("./storage"), exports);
|
|
|
19
19
|
__exportStar(require("./base"), exports);
|
|
20
20
|
__exportStar(require("./backup"), exports);
|
|
21
21
|
__exportStar(require("./monitoring"), exports);
|
|
22
|
-
|
|
22
|
+
__exportStar(require("./cdn"), exports);
|
|
23
|
+
__exportStar(require("./messaging"), exports);
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0NBQTZCO0FBQzdCLDRDQUEwQjtBQUMxQix5Q0FBdUI7QUFDdkIsMkNBQXlCO0FBQ3pCLCtDQUE2QjtBQUM3Qix3Q0FBc0I7QUFDdEIsOENBQTRCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vbmV0d29ya2luZ1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RvcmFnZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFja3VwXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9tb25pdG9yaW5nXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9jZG5cIjtcbmV4cG9ydCAqIGZyb20gXCIuL21lc3NhZ2luZ1wiO1xuIl19
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { type IEventBus } from "aws-cdk-lib/aws-events";
|
|
3
|
+
import { type IGrantable, type Grant } from "aws-cdk-lib/aws-iam";
|
|
4
|
+
export interface EventBridgeBusProps {
|
|
5
|
+
eventBusName?: string;
|
|
6
|
+
removalPolicy?: "DESTROY" | "RETAIN";
|
|
7
|
+
}
|
|
8
|
+
export declare class EventBridgeBus extends Construct {
|
|
9
|
+
readonly id: string;
|
|
10
|
+
private eventBus;
|
|
11
|
+
constructor(scope: Construct, id: string, props: EventBridgeBusProps);
|
|
12
|
+
/**
|
|
13
|
+
* Get the event bus ARN.
|
|
14
|
+
*/
|
|
15
|
+
getEventBusArn(): string;
|
|
16
|
+
/**
|
|
17
|
+
* Get the event bus name.
|
|
18
|
+
*/
|
|
19
|
+
getEventBusName(): string;
|
|
20
|
+
/**
|
|
21
|
+
* Get the underlying CDK EventBus construct.
|
|
22
|
+
*/
|
|
23
|
+
getEventBus(): IEventBus;
|
|
24
|
+
/**
|
|
25
|
+
* Grant put events permissions to the grantee.
|
|
26
|
+
*/
|
|
27
|
+
grantPutEventsTo(grantee: IGrantable): Grant;
|
|
28
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EventBridgeBus = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const aws_events_1 = require("aws-cdk-lib/aws-events");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
class EventBridgeBus extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
this.id = id;
|
|
12
|
+
this.eventBus = new aws_events_1.EventBus(this, `${id}EventBus`, {
|
|
13
|
+
eventBusName: props.eventBusName
|
|
14
|
+
});
|
|
15
|
+
this.eventBus.applyRemovalPolicy((0, utils_1.toRemovalPolicy)(props.removalPolicy));
|
|
16
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}EventBusArn`, {
|
|
17
|
+
key: `${id}EventBusArn`,
|
|
18
|
+
value: this.eventBus.eventBusArn,
|
|
19
|
+
description: `EventBridge event bus ARN for ${id}`
|
|
20
|
+
});
|
|
21
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}EventBusName`, {
|
|
22
|
+
key: `${id}EventBusName`,
|
|
23
|
+
value: this.eventBus.eventBusName,
|
|
24
|
+
description: `EventBridge event bus name for ${id}`
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Get the event bus ARN.
|
|
29
|
+
*/
|
|
30
|
+
getEventBusArn() {
|
|
31
|
+
return this.eventBus.eventBusArn;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get the event bus name.
|
|
35
|
+
*/
|
|
36
|
+
getEventBusName() {
|
|
37
|
+
return this.eventBus.eventBusName;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Get the underlying CDK EventBus construct.
|
|
41
|
+
*/
|
|
42
|
+
getEventBus() {
|
|
43
|
+
return this.eventBus;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Grant put events permissions to the grantee.
|
|
47
|
+
*/
|
|
48
|
+
grantPutEventsTo(grantee) {
|
|
49
|
+
return this.eventBus.grantPutEventsTo(grantee);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
exports.EventBridgeBus = EventBridgeBus;
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRicmlkZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvZXZlbnRicmlkZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMkNBQXVDO0FBQ3ZDLDZDQUF3QztBQUN4Qyx1REFBa0U7QUFFbEUsbUNBQTBDO0FBTzFDLE1BQWEsY0FBZSxTQUFRLHNCQUFTO0lBSTNDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNqQixJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUViLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxxQkFBUSxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsVUFBVSxFQUFFO1lBQ2xELFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtTQUNqQyxDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLElBQUEsdUJBQWUsRUFBQyxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQztRQUV2RSxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxhQUFhLEVBQUU7WUFDdEMsR0FBRyxFQUFFLEdBQUcsRUFBRSxhQUFhO1lBQ3ZCLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVc7WUFDaEMsV0FBVyxFQUFFLGlDQUFpQyxFQUFFLEVBQUU7U0FDbkQsQ0FBQyxDQUFDO1FBRUgsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFO1lBQ3ZDLEdBQUcsRUFBRSxHQUFHLEVBQUUsY0FBYztZQUN4QixLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZO1lBQ2pDLFdBQVcsRUFBRSxrQ0FBa0MsRUFBRSxFQUFFO1NBQ3BELENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWM7UUFDbkIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQztJQUNuQyxDQUFDO0lBRUQ7O09BRUc7SUFDSSxlQUFlO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUM7SUFDcEMsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDdkIsQ0FBQztJQUVEOztPQUVHO0lBQ0ksZ0JBQWdCLENBQUMsT0FBbUI7UUFDekMsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2pELENBQUM7Q0FDRjtBQXRERCx3Q0FzREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBFdmVudEJ1cywgdHlwZSBJRXZlbnRCdXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWV2ZW50c1wiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHRvUmVtb3ZhbFBvbGljeSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRXZlbnRCcmlkZ2VCdXNQcm9wcyB7XG4gIGV2ZW50QnVzTmFtZT86IHN0cmluZztcbiAgcmVtb3ZhbFBvbGljeT86IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZW50QnJpZGdlQnVzIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgZXZlbnRCdXM6IEV2ZW50QnVzO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFdmVudEJyaWRnZUJ1c1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICB0aGlzLmV2ZW50QnVzID0gbmV3IEV2ZW50QnVzKHRoaXMsIGAke2lkfUV2ZW50QnVzYCwge1xuICAgICAgZXZlbnRCdXNOYW1lOiBwcm9wcy5ldmVudEJ1c05hbWVcbiAgICB9KTtcblxuICAgIHRoaXMuZXZlbnRCdXMuYXBwbHlSZW1vdmFsUG9saWN5KHRvUmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUV2ZW50QnVzQXJuYCwge1xuICAgICAga2V5OiBgJHtpZH1FdmVudEJ1c0FybmAsXG4gICAgICB2YWx1ZTogdGhpcy5ldmVudEJ1cy5ldmVudEJ1c0FybixcbiAgICAgIGRlc2NyaXB0aW9uOiBgRXZlbnRCcmlkZ2UgZXZlbnQgYnVzIEFSTiBmb3IgJHtpZH1gXG4gICAgfSk7XG5cbiAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfUV2ZW50QnVzTmFtZWAsIHtcbiAgICAgIGtleTogYCR7aWR9RXZlbnRCdXNOYW1lYCxcbiAgICAgIHZhbHVlOiB0aGlzLmV2ZW50QnVzLmV2ZW50QnVzTmFtZSxcbiAgICAgIGRlc2NyaXB0aW9uOiBgRXZlbnRCcmlkZ2UgZXZlbnQgYnVzIG5hbWUgZm9yICR7aWR9YFxuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXZlbnQgYnVzIEFSTi5cbiAgICovXG4gIHB1YmxpYyBnZXRFdmVudEJ1c0FybigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmV2ZW50QnVzLmV2ZW50QnVzQXJuO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZXZlbnQgYnVzIG5hbWUuXG4gICAqL1xuICBwdWJsaWMgZ2V0RXZlbnRCdXNOYW1lKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCdXMuZXZlbnRCdXNOYW1lO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgdW5kZXJseWluZyBDREsgRXZlbnRCdXMgY29uc3RydWN0LlxuICAgKi9cbiAgcHVibGljIGdldEV2ZW50QnVzKCk6IElFdmVudEJ1cyB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCdXM7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgcHV0IGV2ZW50cyBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFB1dEV2ZW50c1RvKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMuZXZlbnRCdXMuZ3JhbnRQdXRFdmVudHNUbyhncmFudGVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./sqs"), exports);
|
|
18
|
+
__exportStar(require("./sns"), exports);
|
|
19
|
+
__exportStar(require("./eventbridge"), exports);
|
|
20
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHdDQUFzQjtBQUN0Qix3Q0FBc0I7QUFDdEIsZ0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vc3FzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zbnNcIjtcbmV4cG9ydCAqIGZyb20gXCIuL2V2ZW50YnJpZGdlXCI7XG4iXX0=
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { type ITopic } from "aws-cdk-lib/aws-sns";
|
|
3
|
+
import { type IGrantable, type Grant } from "aws-cdk-lib/aws-iam";
|
|
4
|
+
export interface SNSTopicProps {
|
|
5
|
+
topicName?: string;
|
|
6
|
+
displayName?: string;
|
|
7
|
+
fifo?: boolean;
|
|
8
|
+
contentBasedDeduplication?: boolean;
|
|
9
|
+
removalPolicy?: "DESTROY" | "RETAIN";
|
|
10
|
+
}
|
|
11
|
+
export declare class SNSTopic extends Construct {
|
|
12
|
+
readonly id: string;
|
|
13
|
+
private topic;
|
|
14
|
+
constructor(scope: Construct, id: string, props: SNSTopicProps);
|
|
15
|
+
/**
|
|
16
|
+
* Get the SNS topic ARN.
|
|
17
|
+
*/
|
|
18
|
+
getTopicArn(): string;
|
|
19
|
+
/**
|
|
20
|
+
* Get the SNS topic name.
|
|
21
|
+
*/
|
|
22
|
+
getTopicName(): string;
|
|
23
|
+
/**
|
|
24
|
+
* Get the underlying CDK Topic construct.
|
|
25
|
+
*/
|
|
26
|
+
getTopic(): ITopic;
|
|
27
|
+
/**
|
|
28
|
+
* Grant publish permissions to the grantee.
|
|
29
|
+
*/
|
|
30
|
+
grantPublish(grantee: IGrantable): Grant;
|
|
31
|
+
/**
|
|
32
|
+
* Grant subscribe permissions to the grantee.
|
|
33
|
+
*/
|
|
34
|
+
grantSubscribe(grantee: IGrantable): Grant;
|
|
35
|
+
}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SNSTopic = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const aws_sns_1 = require("aws-cdk-lib/aws-sns");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
class SNSTopic extends constructs_1.Construct {
|
|
9
|
+
constructor(scope, id, props) {
|
|
10
|
+
super(scope, id);
|
|
11
|
+
this.id = id;
|
|
12
|
+
const isFifo = props.fifo === true;
|
|
13
|
+
const topicName = props.topicName
|
|
14
|
+
? isFifo
|
|
15
|
+
? `${props.topicName}.fifo`
|
|
16
|
+
: props.topicName
|
|
17
|
+
: undefined;
|
|
18
|
+
this.topic = new aws_sns_1.Topic(this, `${id}Topic`, {
|
|
19
|
+
topicName,
|
|
20
|
+
displayName: props.displayName,
|
|
21
|
+
fifo: isFifo,
|
|
22
|
+
contentBasedDeduplication: isFifo
|
|
23
|
+
? (props.contentBasedDeduplication ?? true)
|
|
24
|
+
: undefined
|
|
25
|
+
});
|
|
26
|
+
this.topic.applyRemovalPolicy((0, utils_1.toRemovalPolicy)(props.removalPolicy));
|
|
27
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}TopicArn`, {
|
|
28
|
+
key: `${id}TopicArn`,
|
|
29
|
+
value: this.topic.topicArn,
|
|
30
|
+
description: `SNS topic ARN for ${id}`
|
|
31
|
+
});
|
|
32
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}TopicName`, {
|
|
33
|
+
key: `${id}TopicName`,
|
|
34
|
+
value: this.topic.topicName,
|
|
35
|
+
description: `SNS topic name for ${id}`
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Get the SNS topic ARN.
|
|
40
|
+
*/
|
|
41
|
+
getTopicArn() {
|
|
42
|
+
return this.topic.topicArn;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get the SNS topic name.
|
|
46
|
+
*/
|
|
47
|
+
getTopicName() {
|
|
48
|
+
return this.topic.topicName;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get the underlying CDK Topic construct.
|
|
52
|
+
*/
|
|
53
|
+
getTopic() {
|
|
54
|
+
return this.topic;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Grant publish permissions to the grantee.
|
|
58
|
+
*/
|
|
59
|
+
grantPublish(grantee) {
|
|
60
|
+
return this.topic.grantPublish(grantee);
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Grant subscribe permissions to the grantee.
|
|
64
|
+
*/
|
|
65
|
+
grantSubscribe(grantee) {
|
|
66
|
+
return this.topic.grantSubscribe(grantee);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
exports.SNSTopic = SNSTopic;
|
|
70
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL3Nucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQXdDO0FBQ3hDLGlEQUF5RDtBQUV6RCxtQ0FBMEM7QUFVMUMsTUFBYSxRQUFTLFNBQVEsc0JBQVM7SUFJckMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFvQjtRQUM1RCxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQ2pCLElBQUksQ0FBQyxFQUFFLEdBQUcsRUFBRSxDQUFDO1FBRWIsTUFBTSxNQUFNLEdBQUcsS0FBSyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFDbkMsTUFBTSxTQUFTLEdBQUcsS0FBSyxDQUFDLFNBQVM7WUFDL0IsQ0FBQyxDQUFDLE1BQU07Z0JBQ04sQ0FBQyxDQUFDLEdBQUcsS0FBSyxDQUFDLFNBQVMsT0FBTztnQkFDM0IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxTQUFTO1lBQ25CLENBQUMsQ0FBQyxTQUFTLENBQUM7UUFFZCxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksZUFBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFO1lBQ3pDLFNBQVM7WUFDVCxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsSUFBSSxFQUFFLE1BQU07WUFDWix5QkFBeUIsRUFBRSxNQUFNO2dCQUMvQixDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMseUJBQXlCLElBQUksSUFBSSxDQUFDO2dCQUMzQyxDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsSUFBQSx1QkFBZSxFQUFDLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO1FBRXBFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLFVBQVUsRUFBRTtZQUNuQyxHQUFHLEVBQUUsR0FBRyxFQUFFLFVBQVU7WUFDcEIsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUTtZQUMxQixXQUFXLEVBQUUscUJBQXFCLEVBQUUsRUFBRTtTQUN2QyxDQUFDLENBQUM7UUFFSCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxXQUFXLEVBQUU7WUFDcEMsR0FBRyxFQUFFLEdBQUcsRUFBRSxXQUFXO1lBQ3JCLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVM7WUFDM0IsV0FBVyxFQUFFLHNCQUFzQixFQUFFLEVBQUU7U0FDeEMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOztPQUVHO0lBQ0ksV0FBVztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDO0lBQzdCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVk7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztJQUM5QixDQUFDO0lBRUQ7O09BRUc7SUFDSSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFFRDs7T0FFRztJQUNJLFlBQVksQ0FBQyxPQUFtQjtRQUNyQyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFFRDs7T0FFRztJQUNJLGNBQWMsQ0FBQyxPQUFtQjtRQUN2QyxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzVDLENBQUM7Q0FDRjtBQXpFRCw0QkF5RUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0IHsgQ2ZuT3V0cHV0IH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBUb3BpYywgdHlwZSBJVG9waWMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNuc1wiO1xuaW1wb3J0IHsgdHlwZSBJR3JhbnRhYmxlLCB0eXBlIEdyYW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7IHRvUmVtb3ZhbFBvbGljeSB9IGZyb20gXCIuL3V0aWxzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU05TVG9waWNQcm9wcyB7XG4gIHRvcGljTmFtZT86IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIGZpZm8/OiBib29sZWFuO1xuICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uPzogYm9vbGVhbjtcbiAgcmVtb3ZhbFBvbGljeT86IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcbn1cblxuZXhwb3J0IGNsYXNzIFNOU1RvcGljIGV4dGVuZHMgQ29uc3RydWN0IHtcbiAgcHVibGljIHJlYWRvbmx5IGlkOiBzdHJpbmc7XG4gIHByaXZhdGUgdG9waWM6IFRvcGljO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTTlNUb3BpY1Byb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcbiAgICB0aGlzLmlkID0gaWQ7XG5cbiAgICBjb25zdCBpc0ZpZm8gPSBwcm9wcy5maWZvID09PSB0cnVlO1xuICAgIGNvbnN0IHRvcGljTmFtZSA9IHByb3BzLnRvcGljTmFtZVxuICAgICAgPyBpc0ZpZm9cbiAgICAgICAgPyBgJHtwcm9wcy50b3BpY05hbWV9LmZpZm9gXG4gICAgICAgIDogcHJvcHMudG9waWNOYW1lXG4gICAgICA6IHVuZGVmaW5lZDtcblxuICAgIHRoaXMudG9waWMgPSBuZXcgVG9waWModGhpcywgYCR7aWR9VG9waWNgLCB7XG4gICAgICB0b3BpY05hbWUsXG4gICAgICBkaXNwbGF5TmFtZTogcHJvcHMuZGlzcGxheU5hbWUsXG4gICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOiBpc0ZpZm9cbiAgICAgICAgPyAocHJvcHMuY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiA/PyB0cnVlKVxuICAgICAgICA6IHVuZGVmaW5lZFxuICAgIH0pO1xuXG4gICAgdGhpcy50b3BpYy5hcHBseVJlbW92YWxQb2xpY3kodG9SZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpKTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9VG9waWNBcm5gLCB7XG4gICAgICBrZXk6IGAke2lkfVRvcGljQXJuYCxcbiAgICAgIHZhbHVlOiB0aGlzLnRvcGljLnRvcGljQXJuLFxuICAgICAgZGVzY3JpcHRpb246IGBTTlMgdG9waWMgQVJOIGZvciAke2lkfWBcbiAgICB9KTtcblxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgYCR7aWR9VG9waWNOYW1lYCwge1xuICAgICAga2V5OiBgJHtpZH1Ub3BpY05hbWVgLFxuICAgICAgdmFsdWU6IHRoaXMudG9waWMudG9waWNOYW1lLFxuICAgICAgZGVzY3JpcHRpb246IGBTTlMgdG9waWMgbmFtZSBmb3IgJHtpZH1gXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTTlMgdG9waWMgQVJOLlxuICAgKi9cbiAgcHVibGljIGdldFRvcGljQXJuKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMudG9waWMudG9waWNBcm47XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSBTTlMgdG9waWMgbmFtZS5cbiAgICovXG4gIHB1YmxpYyBnZXRUb3BpY05hbWUoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy50b3BpYy50b3BpY05hbWU7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRoZSB1bmRlcmx5aW5nIENESyBUb3BpYyBjb25zdHJ1Y3QuXG4gICAqL1xuICBwdWJsaWMgZ2V0VG9waWMoKTogSVRvcGljIHtcbiAgICByZXR1cm4gdGhpcy50b3BpYztcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdWJsaXNoIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50UHVibGlzaChncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnRvcGljLmdyYW50UHVibGlzaChncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzdWJzY3JpYmUgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTdWJzY3JpYmUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy50b3BpYy5ncmFudFN1YnNjcmliZShncmFudGVlKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { type IQueue } from "aws-cdk-lib/aws-sqs";
|
|
3
|
+
import { type IGrantable, type Grant } from "aws-cdk-lib/aws-iam";
|
|
4
|
+
/**
|
|
5
|
+
* AWS SQS service limits and defaults.
|
|
6
|
+
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-quotas.html
|
|
7
|
+
*/
|
|
8
|
+
declare const SQS_LIMITS: {
|
|
9
|
+
readonly VISIBILITY_TIMEOUT: {
|
|
10
|
+
readonly MIN_SECONDS: 0;
|
|
11
|
+
readonly MAX_SECONDS: 43200;
|
|
12
|
+
readonly DEFAULT_SECONDS: 30;
|
|
13
|
+
};
|
|
14
|
+
readonly MESSAGE_RETENTION: {
|
|
15
|
+
readonly MIN_SECONDS: 60;
|
|
16
|
+
readonly MAX_SECONDS: 1209600;
|
|
17
|
+
readonly DEFAULT_SECONDS: 345600;
|
|
18
|
+
readonly DEFAULT_DAYS: 4;
|
|
19
|
+
};
|
|
20
|
+
readonly DELAY: {
|
|
21
|
+
readonly MIN_SECONDS: 0;
|
|
22
|
+
readonly MAX_SECONDS: 900;
|
|
23
|
+
};
|
|
24
|
+
readonly RECEIVE_WAIT_TIME: {
|
|
25
|
+
readonly MIN_SECONDS: 0;
|
|
26
|
+
readonly MAX_SECONDS: 20;
|
|
27
|
+
};
|
|
28
|
+
readonly MESSAGE_SIZE: {
|
|
29
|
+
readonly MIN_BYTES: 1;
|
|
30
|
+
readonly MAX_BYTES: 262144;
|
|
31
|
+
};
|
|
32
|
+
readonly DEAD_LETTER_QUEUE: {
|
|
33
|
+
readonly MIN_RECEIVE_COUNT: 1;
|
|
34
|
+
readonly MAX_RECEIVE_COUNT: 1000;
|
|
35
|
+
readonly DEFAULT_RECEIVE_COUNT: 3;
|
|
36
|
+
readonly DEFAULT_RETENTION_DAYS: 14;
|
|
37
|
+
};
|
|
38
|
+
readonly BATCH: {
|
|
39
|
+
readonly MIN_SIZE: 1;
|
|
40
|
+
readonly MAX_SIZE: 10;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export { SQS_LIMITS };
|
|
44
|
+
export interface SQSQueueProps {
|
|
45
|
+
queueName?: string;
|
|
46
|
+
queueType?: "standard" | "fifo";
|
|
47
|
+
visibilityTimeout?: number;
|
|
48
|
+
messageRetentionPeriod?: number;
|
|
49
|
+
receiveMessageWaitTime?: number;
|
|
50
|
+
maxMessageSize?: number;
|
|
51
|
+
deliveryDelay?: number;
|
|
52
|
+
deadLetterQueue?: {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
maxReceiveCount?: number;
|
|
55
|
+
queue?: IQueue;
|
|
56
|
+
};
|
|
57
|
+
encryption?: "SSE_SQS" | "SSE_KMS" | "NONE";
|
|
58
|
+
kmsKeyArn?: string;
|
|
59
|
+
contentBasedDeduplication?: boolean;
|
|
60
|
+
fifoThroughputLimit?: "perQueue" | "perMessageGroupId";
|
|
61
|
+
deduplicationScope?: "queue" | "messageGroup";
|
|
62
|
+
removalPolicy?: "DESTROY" | "RETAIN";
|
|
63
|
+
}
|
|
64
|
+
export declare class SQSQueue extends Construct {
|
|
65
|
+
readonly id: string;
|
|
66
|
+
private queue;
|
|
67
|
+
private dlq?;
|
|
68
|
+
constructor(scope: Construct, id: string, props: SQSQueueProps);
|
|
69
|
+
/**
|
|
70
|
+
* Get the SQS queue URL.
|
|
71
|
+
*/
|
|
72
|
+
getQueueUrl(): string;
|
|
73
|
+
/**
|
|
74
|
+
* Get the SQS queue ARN.
|
|
75
|
+
*/
|
|
76
|
+
getQueueArn(): string;
|
|
77
|
+
/**
|
|
78
|
+
* Get the SQS queue name.
|
|
79
|
+
*/
|
|
80
|
+
getQueueName(): string;
|
|
81
|
+
/**
|
|
82
|
+
* Get the underlying CDK Queue construct.
|
|
83
|
+
*/
|
|
84
|
+
getQueue(): IQueue;
|
|
85
|
+
/**
|
|
86
|
+
* Get the dead letter queue if configured.
|
|
87
|
+
*/
|
|
88
|
+
getDeadLetterQueue(): IQueue | undefined;
|
|
89
|
+
/**
|
|
90
|
+
* Grant send message permissions to the grantee.
|
|
91
|
+
*/
|
|
92
|
+
grantSend(grantee: IGrantable): Grant;
|
|
93
|
+
/**
|
|
94
|
+
* Grant consume (receive and delete) message permissions to the grantee.
|
|
95
|
+
*/
|
|
96
|
+
grantConsume(grantee: IGrantable): Grant;
|
|
97
|
+
/**
|
|
98
|
+
* Grant purge queue permissions to the grantee.
|
|
99
|
+
*/
|
|
100
|
+
grantPurge(grantee: IGrantable): Grant;
|
|
101
|
+
/**
|
|
102
|
+
* Grant send and consume message permissions to the grantee.
|
|
103
|
+
*/
|
|
104
|
+
grantSendAndConsume(grantee: IGrantable): Grant;
|
|
105
|
+
}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SQSQueue = exports.SQS_LIMITS = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
7
|
+
const utils_1 = require("./utils");
|
|
8
|
+
/**
|
|
9
|
+
* AWS SQS service limits and defaults.
|
|
10
|
+
* @see https://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-quotas.html
|
|
11
|
+
*/
|
|
12
|
+
const SQS_LIMITS = {
|
|
13
|
+
VISIBILITY_TIMEOUT: {
|
|
14
|
+
MIN_SECONDS: 0,
|
|
15
|
+
MAX_SECONDS: 43200, // 12 hours
|
|
16
|
+
DEFAULT_SECONDS: 30
|
|
17
|
+
},
|
|
18
|
+
MESSAGE_RETENTION: {
|
|
19
|
+
MIN_SECONDS: 60, // 1 minute
|
|
20
|
+
MAX_SECONDS: 1209600, // 14 days
|
|
21
|
+
DEFAULT_SECONDS: 345600, // 4 days
|
|
22
|
+
DEFAULT_DAYS: 4
|
|
23
|
+
},
|
|
24
|
+
DELAY: {
|
|
25
|
+
MIN_SECONDS: 0,
|
|
26
|
+
MAX_SECONDS: 900 // 15 minutes
|
|
27
|
+
},
|
|
28
|
+
RECEIVE_WAIT_TIME: {
|
|
29
|
+
MIN_SECONDS: 0,
|
|
30
|
+
MAX_SECONDS: 20
|
|
31
|
+
},
|
|
32
|
+
MESSAGE_SIZE: {
|
|
33
|
+
MIN_BYTES: 1,
|
|
34
|
+
MAX_BYTES: 262144 // 256 KB
|
|
35
|
+
},
|
|
36
|
+
DEAD_LETTER_QUEUE: {
|
|
37
|
+
MIN_RECEIVE_COUNT: 1,
|
|
38
|
+
MAX_RECEIVE_COUNT: 1000,
|
|
39
|
+
DEFAULT_RECEIVE_COUNT: 3,
|
|
40
|
+
DEFAULT_RETENTION_DAYS: 14
|
|
41
|
+
},
|
|
42
|
+
BATCH: {
|
|
43
|
+
MIN_SIZE: 1,
|
|
44
|
+
MAX_SIZE: 10
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
exports.SQS_LIMITS = SQS_LIMITS;
|
|
48
|
+
function toEncryption(encryption) {
|
|
49
|
+
switch (encryption) {
|
|
50
|
+
case "SSE_KMS":
|
|
51
|
+
return aws_sqs_1.QueueEncryption.KMS;
|
|
52
|
+
case "NONE":
|
|
53
|
+
return aws_sqs_1.QueueEncryption.UNENCRYPTED;
|
|
54
|
+
case "SSE_SQS":
|
|
55
|
+
default:
|
|
56
|
+
return aws_sqs_1.QueueEncryption.SQS_MANAGED;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function toFifoThroughputLimit(limit) {
|
|
60
|
+
switch (limit) {
|
|
61
|
+
case "perQueue":
|
|
62
|
+
return aws_sqs_1.FifoThroughputLimit.PER_QUEUE;
|
|
63
|
+
case "perMessageGroupId":
|
|
64
|
+
return aws_sqs_1.FifoThroughputLimit.PER_MESSAGE_GROUP_ID;
|
|
65
|
+
default:
|
|
66
|
+
return undefined;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function toDeduplicationScope(scope) {
|
|
70
|
+
switch (scope) {
|
|
71
|
+
case "queue":
|
|
72
|
+
return aws_sqs_1.DeduplicationScope.QUEUE;
|
|
73
|
+
case "messageGroup":
|
|
74
|
+
return aws_sqs_1.DeduplicationScope.MESSAGE_GROUP;
|
|
75
|
+
default:
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
class SQSQueue extends constructs_1.Construct {
|
|
80
|
+
constructor(scope, id, props) {
|
|
81
|
+
super(scope, id);
|
|
82
|
+
this.id = id;
|
|
83
|
+
const isFifo = props.queueType === "fifo";
|
|
84
|
+
const queueName = props.queueName
|
|
85
|
+
? isFifo
|
|
86
|
+
? `${props.queueName}.fifo`
|
|
87
|
+
: props.queueName
|
|
88
|
+
: undefined;
|
|
89
|
+
// Create Dead Letter Queue if enabled
|
|
90
|
+
let deadLetterQueue;
|
|
91
|
+
if (props.deadLetterQueue?.enabled) {
|
|
92
|
+
if (props.deadLetterQueue.queue) {
|
|
93
|
+
deadLetterQueue = {
|
|
94
|
+
queue: props.deadLetterQueue.queue,
|
|
95
|
+
maxReceiveCount: props.deadLetterQueue.maxReceiveCount ??
|
|
96
|
+
SQS_LIMITS.DEAD_LETTER_QUEUE.DEFAULT_RECEIVE_COUNT
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
const dlqName = queueName
|
|
101
|
+
? isFifo
|
|
102
|
+
? `${props.queueName}-dlq.fifo`
|
|
103
|
+
: `${props.queueName}-dlq`
|
|
104
|
+
: undefined;
|
|
105
|
+
this.dlq = new aws_sqs_1.Queue(this, `${id}DeadLetterQueue`, {
|
|
106
|
+
queueName: dlqName,
|
|
107
|
+
fifo: isFifo,
|
|
108
|
+
encryption: toEncryption(props.encryption),
|
|
109
|
+
retentionPeriod: aws_cdk_lib_1.Duration.days(SQS_LIMITS.DEAD_LETTER_QUEUE.DEFAULT_RETENTION_DAYS),
|
|
110
|
+
removalPolicy: (0, utils_1.toRemovalPolicy)(props.removalPolicy)
|
|
111
|
+
});
|
|
112
|
+
deadLetterQueue = {
|
|
113
|
+
queue: this.dlq,
|
|
114
|
+
maxReceiveCount: props.deadLetterQueue.maxReceiveCount ??
|
|
115
|
+
SQS_LIMITS.DEAD_LETTER_QUEUE.DEFAULT_RECEIVE_COUNT
|
|
116
|
+
};
|
|
117
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}DeadLetterQueueUrl`, {
|
|
118
|
+
key: `${id}DeadLetterQueueUrl`,
|
|
119
|
+
value: this.dlq.queueUrl,
|
|
120
|
+
description: `Dead letter queue URL for ${id}`
|
|
121
|
+
});
|
|
122
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}DeadLetterQueueArn`, {
|
|
123
|
+
key: `${id}DeadLetterQueueArn`,
|
|
124
|
+
value: this.dlq.queueArn,
|
|
125
|
+
description: `Dead letter queue ARN for ${id}`
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
this.queue = new aws_sqs_1.Queue(this, `${id}Queue`, {
|
|
130
|
+
queueName,
|
|
131
|
+
fifo: isFifo,
|
|
132
|
+
visibilityTimeout: props.visibilityTimeout
|
|
133
|
+
? aws_cdk_lib_1.Duration.seconds(props.visibilityTimeout)
|
|
134
|
+
: undefined,
|
|
135
|
+
retentionPeriod: props.messageRetentionPeriod
|
|
136
|
+
? aws_cdk_lib_1.Duration.seconds(props.messageRetentionPeriod)
|
|
137
|
+
: undefined,
|
|
138
|
+
receiveMessageWaitTime: props.receiveMessageWaitTime
|
|
139
|
+
? aws_cdk_lib_1.Duration.seconds(props.receiveMessageWaitTime)
|
|
140
|
+
: undefined,
|
|
141
|
+
maxMessageSizeBytes: props.maxMessageSize,
|
|
142
|
+
deliveryDelay: props.deliveryDelay
|
|
143
|
+
? aws_cdk_lib_1.Duration.seconds(props.deliveryDelay)
|
|
144
|
+
: undefined,
|
|
145
|
+
deadLetterQueue,
|
|
146
|
+
encryption: toEncryption(props.encryption),
|
|
147
|
+
contentBasedDeduplication: isFifo
|
|
148
|
+
? (props.contentBasedDeduplication ?? true)
|
|
149
|
+
: undefined,
|
|
150
|
+
fifoThroughputLimit: isFifo
|
|
151
|
+
? toFifoThroughputLimit(props.fifoThroughputLimit)
|
|
152
|
+
: undefined,
|
|
153
|
+
deduplicationScope: isFifo
|
|
154
|
+
? toDeduplicationScope(props.deduplicationScope)
|
|
155
|
+
: undefined,
|
|
156
|
+
removalPolicy: (0, utils_1.toRemovalPolicy)(props.removalPolicy)
|
|
157
|
+
});
|
|
158
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueUrl`, {
|
|
159
|
+
key: `${id}QueueUrl`,
|
|
160
|
+
value: this.queue.queueUrl,
|
|
161
|
+
description: `SQS queue URL for ${id}`
|
|
162
|
+
});
|
|
163
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueArn`, {
|
|
164
|
+
key: `${id}QueueArn`,
|
|
165
|
+
value: this.queue.queueArn,
|
|
166
|
+
description: `SQS queue ARN for ${id}`
|
|
167
|
+
});
|
|
168
|
+
new aws_cdk_lib_1.CfnOutput(this, `${id}QueueName`, {
|
|
169
|
+
key: `${id}QueueName`,
|
|
170
|
+
value: this.queue.queueName,
|
|
171
|
+
description: `SQS queue name for ${id}`
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Get the SQS queue URL.
|
|
176
|
+
*/
|
|
177
|
+
getQueueUrl() {
|
|
178
|
+
return this.queue.queueUrl;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get the SQS queue ARN.
|
|
182
|
+
*/
|
|
183
|
+
getQueueArn() {
|
|
184
|
+
return this.queue.queueArn;
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Get the SQS queue name.
|
|
188
|
+
*/
|
|
189
|
+
getQueueName() {
|
|
190
|
+
return this.queue.queueName;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get the underlying CDK Queue construct.
|
|
194
|
+
*/
|
|
195
|
+
getQueue() {
|
|
196
|
+
return this.queue;
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* Get the dead letter queue if configured.
|
|
200
|
+
*/
|
|
201
|
+
getDeadLetterQueue() {
|
|
202
|
+
return this.dlq;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Grant send message permissions to the grantee.
|
|
206
|
+
*/
|
|
207
|
+
grantSend(grantee) {
|
|
208
|
+
return this.queue.grantSendMessages(grantee);
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Grant consume (receive and delete) message permissions to the grantee.
|
|
212
|
+
*/
|
|
213
|
+
grantConsume(grantee) {
|
|
214
|
+
return this.queue.grantConsumeMessages(grantee);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Grant purge queue permissions to the grantee.
|
|
218
|
+
*/
|
|
219
|
+
grantPurge(grantee) {
|
|
220
|
+
return this.queue.grantPurge(grantee);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Grant send and consume message permissions to the grantee.
|
|
224
|
+
*/
|
|
225
|
+
grantSendAndConsume(grantee) {
|
|
226
|
+
this.queue.grantSendMessages(grantee);
|
|
227
|
+
return this.queue.grantConsumeMessages(grantee);
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
exports.SQSQueue = SQSQueue;
|
|
231
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3FzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vbGliL3Jlc291cmNlcy9hd3MvbWVzc2FnaW5nL3Nxcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBdUM7QUFDdkMsNkNBQWtEO0FBQ2xELGlEQU82QjtBQUU3QixtQ0FBMEM7QUFFMUM7OztHQUdHO0FBQ0gsTUFBTSxVQUFVLEdBQUc7SUFDakIsa0JBQWtCLEVBQUU7UUFDbEIsV0FBVyxFQUFFLENBQUM7UUFDZCxXQUFXLEVBQUUsS0FBSyxFQUFFLFdBQVc7UUFDL0IsZUFBZSxFQUFFLEVBQUU7S0FDcEI7SUFDRCxpQkFBaUIsRUFBRTtRQUNqQixXQUFXLEVBQUUsRUFBRSxFQUFFLFdBQVc7UUFDNUIsV0FBVyxFQUFFLE9BQU8sRUFBRSxVQUFVO1FBQ2hDLGVBQWUsRUFBRSxNQUFNLEVBQUUsU0FBUztRQUNsQyxZQUFZLEVBQUUsQ0FBQztLQUNoQjtJQUNELEtBQUssRUFBRTtRQUNMLFdBQVcsRUFBRSxDQUFDO1FBQ2QsV0FBVyxFQUFFLEdBQUcsQ0FBQyxhQUFhO0tBQy9CO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsV0FBVyxFQUFFLENBQUM7UUFDZCxXQUFXLEVBQUUsRUFBRTtLQUNoQjtJQUNELFlBQVksRUFBRTtRQUNaLFNBQVMsRUFBRSxDQUFDO1FBQ1osU0FBUyxFQUFFLE1BQU0sQ0FBQyxTQUFTO0tBQzVCO0lBQ0QsaUJBQWlCLEVBQUU7UUFDakIsaUJBQWlCLEVBQUUsQ0FBQztRQUNwQixpQkFBaUIsRUFBRSxJQUFJO1FBQ3ZCLHFCQUFxQixFQUFFLENBQUM7UUFDeEIsc0JBQXNCLEVBQUUsRUFBRTtLQUMzQjtJQUNELEtBQUssRUFBRTtRQUNMLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLEVBQUU7S0FDYjtDQUNPLENBQUM7QUFFRixnQ0FBVTtBQXVCbkIsU0FBUyxZQUFZLENBQ25CLFVBQTJDO0lBRTNDLFFBQVEsVUFBVSxF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QkFBb0IsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNsRCxDQUFDO0NBQ0Y7QUFoTEQsNEJBZ0xDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7IENmbk91dHB1dCwgRHVyYXRpb24gfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7XG4gIFF1ZXVlLFxuICB0eXBlIElRdWV1ZSxcbiAgdHlwZSBEZWFkTGV0dGVyUXVldWUsXG4gIFF1ZXVlRW5jcnlwdGlvbixcbiAgRmlmb1Rocm91Z2hwdXRMaW1pdCxcbiAgRGVkdXBsaWNhdGlvblNjb3BlXG59IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3FzXCI7XG5pbXBvcnQgeyB0eXBlIElHcmFudGFibGUsIHR5cGUgR3JhbnQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWlhbVwiO1xuaW1wb3J0IHsgdG9SZW1vdmFsUG9saWN5IH0gZnJvbSBcIi4vdXRpbHNcIjtcblxuLyoqXG4gKiBBV1MgU1FTIHNlcnZpY2UgbGltaXRzIGFuZCBkZWZhdWx0cy5cbiAqIEBzZWUgaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FXU1NpbXBsZVF1ZXVlU2VydmljZS9sYXRlc3QvU1FTRGV2ZWxvcGVyR3VpZGUvc3FzLXF1b3Rhcy5odG1sXG4gKi9cbmNvbnN0IFNRU19MSU1JVFMgPSB7XG4gIFZJU0lCSUxJVFlfVElNRU9VVDoge1xuICAgIE1JTl9TRUNPTkRTOiAwLFxuICAgIE1BWF9TRUNPTkRTOiA0MzIwMCwgLy8gMTIgaG91cnNcbiAgICBERUZBVUxUX1NFQ09ORFM6IDMwXG4gIH0sXG4gIE1FU1NBR0VfUkVURU5USU9OOiB7XG4gICAgTUlOX1NFQ09ORFM6IDYwLCAvLyAxIG1pbnV0ZVxuICAgIE1BWF9TRUNPTkRTOiAxMjA5NjAwLCAvLyAxNCBkYXlzXG4gICAgREVGQVVMVF9TRUNPTkRTOiAzNDU2MDAsIC8vIDQgZGF5c1xuICAgIERFRkFVTFRfREFZUzogNFxuICB9LFxuICBERUxBWToge1xuICAgIE1JTl9TRUNPTkRTOiAwLFxuICAgIE1BWF9TRUNPTkRTOiA5MDAgLy8gMTUgbWludXRlc1xuICB9LFxuICBSRUNFSVZFX1dBSVRfVElNRToge1xuICAgIE1JTl9TRUNPTkRTOiAwLFxuICAgIE1BWF9TRUNPTkRTOiAyMFxuICB9LFxuICBNRVNTQUdFX1NJWkU6IHtcbiAgICBNSU5fQllURVM6IDEsXG4gICAgTUFYX0JZVEVTOiAyNjIxNDQgLy8gMjU2IEtCXG4gIH0sXG4gIERFQURfTEVUVEVSX1FVRVVFOiB7XG4gICAgTUlOX1JFQ0VJVkVfQ09VTlQ6IDEsXG4gICAgTUFYX1JFQ0VJVkVfQ09VTlQ6IDEwMDAsXG4gICAgREVGQVVMVF9SRUNFSVZFX0NPVU5UOiAzLFxuICAgIERFRkFVTFRfUkVURU5USU9OX0RBWVM6IDE0XG4gIH0sXG4gIEJBVENIOiB7XG4gICAgTUlOX1NJWkU6IDEsXG4gICAgTUFYX1NJWkU6IDEwXG4gIH1cbn0gYXMgY29uc3Q7XG5cbmV4cG9ydCB7IFNRU19MSU1JVFMgfTtcblxuZXhwb3J0IGludGVyZmFjZSBTUVNRdWV1ZVByb3BzIHtcbiAgcXVldWVOYW1lPzogc3RyaW5nO1xuICBxdWV1ZVR5cGU/OiBcInN0YW5kYXJkXCIgfCBcImZpZm9cIjtcbiAgdmlzaWJpbGl0eVRpbWVvdXQ/OiBudW1iZXI7XG4gIG1lc3NhZ2VSZXRlbnRpb25QZXJpb2Q/OiBudW1iZXI7XG4gIHJlY2VpdmVNZXNzYWdlV2FpdFRpbWU/OiBudW1iZXI7XG4gIG1heE1lc3NhZ2VTaXplPzogbnVtYmVyO1xuICBkZWxpdmVyeURlbGF5PzogbnVtYmVyO1xuICBkZWFkTGV0dGVyUXVldWU/OiB7XG4gICAgZW5hYmxlZDogYm9vbGVhbjtcbiAgICBtYXhSZWNlaXZlQ291bnQ/OiBudW1iZXI7XG4gICAgcXVldWU/OiBJUXVldWU7XG4gIH07XG4gIGVuY3J5cHRpb24/OiBcIlNTRV9TUVNcIiB8IFwiU1NFX0tNU1wiIHwgXCJOT05FXCI7XG4gIGttc0tleUFybj86IHN0cmluZztcbiAgY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbj86IGJvb2xlYW47XG4gIGZpZm9UaHJvdWdocHV0TGltaXQ/OiBcInBlclF1ZXVlXCIgfCBcInBlck1lc3NhZ2VHcm91cElkXCI7XG4gIGRlZHVwbGljYXRpb25TY29wZT86IFwicXVldWVcIiB8IFwibWVzc2FnZUdyb3VwXCI7XG4gIHJlbW92YWxQb2xpY3k/OiBcIkRFU1RST1lcIiB8IFwiUkVUQUlOXCI7XG59XG5cbmZ1bmN0aW9uIHRvRW5jcnlwdGlvbihcbiAgZW5jcnlwdGlvbj86IFwiU1NFX1NRU1wiIHwgXCJTU0VfS01TXCIgfCBcIk5PTkVcIlxuKTogUXVldWVFbmNyeXB0aW9uIHtcbiAgc3dpdGNoIChlbmNyeXB0aW9uKSB7XG4gICAgY2FzZSBcIlNTRV9LTVNcIjpcbiAgICAgIHJldHVybiBRdWV1ZUVuY3J5cHRpb24uS01TO1xuICAgIGNhc2UgXCJOT05FXCI6XG4gICAgICByZXR1cm4gUXVldWVFbmNyeXB0aW9uLlVORU5DUllQVEVEO1xuICAgIGNhc2UgXCJTU0VfU1FTXCI6XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBRdWV1ZUVuY3J5cHRpb24uU1FTX01BTkFHRUQ7XG4gIH1cbn1cblxuZnVuY3Rpb24gdG9GaWZvVGhyb3VnaHB1dExpbWl0KFxuICBsaW1pdD86IFwicGVyUXVldWVcIiB8IFwicGVyTWVzc2FnZUdyb3VwSWRcIlxuKTogRmlmb1Rocm91Z2hwdXRMaW1pdCB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAobGltaXQpIHtcbiAgICBjYXNlIFwicGVyUXVldWVcIjpcbiAgICAgIHJldHVybiBGaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9RVUVVRTtcbiAgICBjYXNlIFwicGVyTWVzc2FnZUdyb3VwSWRcIjpcbiAgICAgIHJldHVybiBGaWZvVGhyb3VnaHB1dExpbWl0LlBFUl9NRVNTQUdFX0dST1VQX0lEO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmZ1bmN0aW9uIHRvRGVkdXBsaWNhdGlvblNjb3BlKFxuICBzY29wZT86IFwicXVldWVcIiB8IFwibWVzc2FnZUdyb3VwXCJcbik6IERlZHVwbGljYXRpb25TY29wZSB8IHVuZGVmaW5lZCB7XG4gIHN3aXRjaCAoc2NvcGUpIHtcbiAgICBjYXNlIFwicXVldWVcIjpcbiAgICAgIHJldHVybiBEZWR1cGxpY2F0aW9uU2NvcGUuUVVFVUU7XG4gICAgY2FzZSBcIm1lc3NhZ2VHcm91cFwiOlxuICAgICAgcmV0dXJuIERlZHVwbGljYXRpb25TY29wZS5NRVNTQUdFX0dST1VQO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTUVNRdWV1ZSBleHRlbmRzIENvbnN0cnVjdCB7XG4gIHB1YmxpYyByZWFkb25seSBpZDogc3RyaW5nO1xuICBwcml2YXRlIHF1ZXVlOiBRdWV1ZTtcbiAgcHJpdmF0ZSBkbHE/OiBRdWV1ZTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU1FTUXVldWVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5pZCA9IGlkO1xuXG4gICAgY29uc3QgaXNGaWZvID0gcHJvcHMucXVldWVUeXBlID09PSBcImZpZm9cIjtcbiAgICBjb25zdCBxdWV1ZU5hbWUgPSBwcm9wcy5xdWV1ZU5hbWVcbiAgICAgID8gaXNGaWZvXG4gICAgICAgID8gYCR7cHJvcHMucXVldWVOYW1lfS5maWZvYFxuICAgICAgICA6IHByb3BzLnF1ZXVlTmFtZVxuICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAvLyBDcmVhdGUgRGVhZCBMZXR0ZXIgUXVldWUgaWYgZW5hYmxlZFxuICAgIGxldCBkZWFkTGV0dGVyUXVldWU6IERlYWRMZXR0ZXJRdWV1ZSB8IHVuZGVmaW5lZDtcbiAgICBpZiAocHJvcHMuZGVhZExldHRlclF1ZXVlPy5lbmFibGVkKSB7XG4gICAgICBpZiAocHJvcHMuZGVhZExldHRlclF1ZXVlLnF1ZXVlKSB7XG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZSA9IHtcbiAgICAgICAgICBxdWV1ZTogcHJvcHMuZGVhZExldHRlclF1ZXVlLnF1ZXVlLFxuICAgICAgICAgIG1heFJlY2VpdmVDb3VudDpcbiAgICAgICAgICAgIHByb3BzLmRlYWRMZXR0ZXJRdWV1ZS5tYXhSZWNlaXZlQ291bnQgPz9cbiAgICAgICAgICAgIFNRU19MSU1JVFMuREVBRF9MRVRURVJfUVVFVUUuREVGQVVMVF9SRUNFSVZFX0NPVU5UXG4gICAgICAgIH07XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBkbHFOYW1lID0gcXVldWVOYW1lXG4gICAgICAgICAgPyBpc0ZpZm9cbiAgICAgICAgICAgID8gYCR7cHJvcHMucXVldWVOYW1lfS1kbHEuZmlmb2BcbiAgICAgICAgICAgIDogYCR7cHJvcHMucXVldWVOYW1lfS1kbHFgXG4gICAgICAgICAgOiB1bmRlZmluZWQ7XG5cbiAgICAgICAgdGhpcy5kbHEgPSBuZXcgUXVldWUodGhpcywgYCR7aWR9RGVhZExldHRlclF1ZXVlYCwge1xuICAgICAgICAgIHF1ZXVlTmFtZTogZGxxTmFtZSxcbiAgICAgICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICAgICAgZW5jcnlwdGlvbjogdG9FbmNyeXB0aW9uKHByb3BzLmVuY3J5cHRpb24pLFxuICAgICAgICAgIHJldGVudGlvblBlcmlvZDogRHVyYXRpb24uZGF5cyhcbiAgICAgICAgICAgIFNRU19MSU1JVFMuREVBRF9MRVRURVJfUVVFVUUuREVGQVVMVF9SRVRFTlRJT05fREFZU1xuICAgICAgICAgICksXG4gICAgICAgICAgcmVtb3ZhbFBvbGljeTogdG9SZW1vdmFsUG9saWN5KHByb3BzLnJlbW92YWxQb2xpY3kpXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZSA9IHtcbiAgICAgICAgICBxdWV1ZTogdGhpcy5kbHEsXG4gICAgICAgICAgbWF4UmVjZWl2ZUNvdW50OlxuICAgICAgICAgICAgcHJvcHMuZGVhZExldHRlclF1ZXVlLm1heFJlY2VpdmVDb3VudCA/P1xuICAgICAgICAgICAgU1FTX0xJTUlUUy5ERUFEX0xFVFRFUl9RVUVVRS5ERUZBVUxUX1JFQ0VJVkVfQ09VTlRcbiAgICAgICAgfTtcblxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsIGAke2lkfURlYWRMZXR0ZXJRdWV1ZVVybGAsIHtcbiAgICAgICAgICBrZXk6IGAke2lkfURlYWRMZXR0ZXJRdWV1ZVVybGAsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuZGxxLnF1ZXVlVXJsLFxuICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRGVhZCBsZXR0ZXIgcXVldWUgVVJMIGZvciAke2lkfWBcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1EZWFkTGV0dGVyUXVldWVBcm5gLCB7XG4gICAgICAgICAga2V5OiBgJHtpZH1EZWFkTGV0dGVyUXVldWVBcm5gLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLmRscS5xdWV1ZUFybixcbiAgICAgICAgICBkZXNjcmlwdGlvbjogYERlYWQgbGV0dGVyIHF1ZXVlIEFSTiBmb3IgJHtpZH1gXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMucXVldWUgPSBuZXcgUXVldWUodGhpcywgYCR7aWR9UXVldWVgLCB7XG4gICAgICBxdWV1ZU5hbWUsXG4gICAgICBmaWZvOiBpc0ZpZm8sXG4gICAgICB2aXNpYmlsaXR5VGltZW91dDogcHJvcHMudmlzaWJpbGl0eVRpbWVvdXRcbiAgICAgICAgPyBEdXJhdGlvbi5zZWNvbmRzKHByb3BzLnZpc2liaWxpdHlUaW1lb3V0KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJldGVudGlvblBlcmlvZDogcHJvcHMubWVzc2FnZVJldGVudGlvblBlcmlvZFxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMubWVzc2FnZVJldGVudGlvblBlcmlvZClcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICByZWNlaXZlTWVzc2FnZVdhaXRUaW1lOiBwcm9wcy5yZWNlaXZlTWVzc2FnZVdhaXRUaW1lXG4gICAgICAgID8gRHVyYXRpb24uc2Vjb25kcyhwcm9wcy5yZWNlaXZlTWVzc2FnZVdhaXRUaW1lKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG1heE1lc3NhZ2VTaXplQnl0ZXM6IHByb3BzLm1heE1lc3NhZ2VTaXplLFxuICAgICAgZGVsaXZlcnlEZWxheTogcHJvcHMuZGVsaXZlcnlEZWxheVxuICAgICAgICA/IER1cmF0aW9uLnNlY29uZHMocHJvcHMuZGVsaXZlcnlEZWxheSlcbiAgICAgICAgOiB1bmRlZmluZWQsXG4gICAgICBkZWFkTGV0dGVyUXVldWUsXG4gICAgICBlbmNyeXB0aW9uOiB0b0VuY3J5cHRpb24ocHJvcHMuZW5jcnlwdGlvbiksXG4gICAgICBjb250ZW50QmFzZWREZWR1cGxpY2F0aW9uOiBpc0ZpZm9cbiAgICAgICAgPyAocHJvcHMuY29udGVudEJhc2VkRGVkdXBsaWNhdGlvbiA/PyB0cnVlKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGZpZm9UaHJvdWdocHV0TGltaXQ6IGlzRmlmb1xuICAgICAgICA/IHRvRmlmb1Rocm91Z2hwdXRMaW1pdChwcm9wcy5maWZvVGhyb3VnaHB1dExpbWl0KVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIGRlZHVwbGljYXRpb25TY29wZTogaXNGaWZvXG4gICAgICAgID8gdG9EZWR1cGxpY2F0aW9uU2NvcGUocHJvcHMuZGVkdXBsaWNhdGlvblNjb3BlKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIHJlbW92YWxQb2xpY3k6IHRvUmVtb3ZhbFBvbGljeShwcm9wcy5yZW1vdmFsUG9saWN5KVxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZVVybGAsIHtcbiAgICAgIGtleTogYCR7aWR9UXVldWVVcmxgLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVVcmwsXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBVUkwgZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZUFybmAsIHtcbiAgICAgIGtleTogYCR7aWR9UXVldWVBcm5gLFxuICAgICAgdmFsdWU6IHRoaXMucXVldWUucXVldWVBcm4sXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBBUk4gZm9yICR7aWR9YFxuICAgIH0pO1xuXG4gICAgbmV3IENmbk91dHB1dCh0aGlzLCBgJHtpZH1RdWV1ZU5hbWVgLCB7XG4gICAgICBrZXk6IGAke2lkfVF1ZXVlTmFtZWAsXG4gICAgICB2YWx1ZTogdGhpcy5xdWV1ZS5xdWV1ZU5hbWUsXG4gICAgICBkZXNjcmlwdGlvbjogYFNRUyBxdWV1ZSBuYW1lIGZvciAke2lkfWBcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBVUkwuXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVldWVVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZVVybDtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBBUk4uXG4gICAqL1xuICBwdWJsaWMgZ2V0UXVldWVBcm4oKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5xdWV1ZUFybjtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIFNRUyBxdWV1ZSBuYW1lLlxuICAgKi9cbiAgcHVibGljIGdldFF1ZXVlTmFtZSgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLnF1ZXVlTmFtZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdGhlIHVuZGVybHlpbmcgQ0RLIFF1ZXVlIGNvbnN0cnVjdC5cbiAgICovXG4gIHB1YmxpYyBnZXRRdWV1ZSgpOiBJUXVldWUge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCB0aGUgZGVhZCBsZXR0ZXIgcXVldWUgaWYgY29uZmlndXJlZC5cbiAgICovXG4gIHB1YmxpYyBnZXREZWFkTGV0dGVyUXVldWUoKTogSVF1ZXVlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5kbHE7XG4gIH1cblxuICAvKipcbiAgICogR3JhbnQgc2VuZCBtZXNzYWdlIHBlcm1pc3Npb25zIHRvIHRoZSBncmFudGVlLlxuICAgKi9cbiAgcHVibGljIGdyYW50U2VuZChncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHJldHVybiB0aGlzLnF1ZXVlLmdyYW50U2VuZE1lc3NhZ2VzKGdyYW50ZWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdyYW50IGNvbnN1bWUgKHJlY2VpdmUgYW5kIGRlbGV0ZSkgbWVzc2FnZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudENvbnN1bWUoZ3JhbnRlZTogSUdyYW50YWJsZSk6IEdyYW50IHtcbiAgICByZXR1cm4gdGhpcy5xdWV1ZS5ncmFudENvbnN1bWVNZXNzYWdlcyhncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBwdXJnZSBxdWV1ZSBwZXJtaXNzaW9ucyB0byB0aGUgZ3JhbnRlZS5cbiAgICovXG4gIHB1YmxpYyBncmFudFB1cmdlKGdyYW50ZWU6IElHcmFudGFibGUpOiBHcmFudCB7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ3JhbnRQdXJnZShncmFudGVlKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHcmFudCBzZW5kIGFuZCBjb25zdW1lIG1lc3NhZ2UgcGVybWlzc2lvbnMgdG8gdGhlIGdyYW50ZWUuXG4gICAqL1xuICBwdWJsaWMgZ3JhbnRTZW5kQW5kQ29uc3VtZShncmFudGVlOiBJR3JhbnRhYmxlKTogR3JhbnQge1xuICAgIHRoaXMucXVldWUuZ3JhbnRTZW5kTWVzc2FnZXMoZ3JhbnRlZSk7XG4gICAgcmV0dXJuIHRoaXMucXVldWUuZ3JhbnRDb25zdW1lTWVzc2FnZXMoZ3JhbnRlZSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.toRemovalPolicy = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const toRemovalPolicy = (policy) => policy === "RETAIN" ? aws_cdk_lib_1.RemovalPolicy.RETAIN : aws_cdk_lib_1.RemovalPolicy.DESTROY;
|
|
6
|
+
exports.toRemovalPolicy = toRemovalPolicy;
|
|
7
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9saWIvcmVzb3VyY2VzL2F3cy9tZXNzYWdpbmcvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTRDO0FBSXJDLE1BQU0sZUFBZSxHQUFHLENBQUMsTUFBNEIsRUFBaUIsRUFBRSxDQUM3RSxNQUFNLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQywyQkFBYSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsMkJBQWEsQ0FBQyxPQUFPLENBQUM7QUFEeEQsUUFBQSxlQUFlLG1CQUN5QyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlbW92YWxQb2xpY3kgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcblxuZXhwb3J0IHR5cGUgUmVtb3ZhbFBvbGljeVN0cmluZyA9IFwiREVTVFJPWVwiIHwgXCJSRVRBSU5cIjtcblxuZXhwb3J0IGNvbnN0IHRvUmVtb3ZhbFBvbGljeSA9IChwb2xpY3k/OiBSZW1vdmFsUG9saWN5U3RyaW5nKTogUmVtb3ZhbFBvbGljeSA9PlxuICBwb2xpY3kgPT09IFwiUkVUQUlOXCIgPyBSZW1vdmFsUG9saWN5LlJFVEFJTiA6IFJlbW92YWxQb2xpY3kuREVTVFJPWTtcbiJdfQ==
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Ipam = void 0;
|
|
4
4
|
const ec2 = require("aws-cdk-lib/aws-ec2");
|
|
5
|
-
// Enable IPAM
|
|
6
5
|
class Ipam extends ec2.CfnIPAM {
|
|
7
6
|
constructor(scope, id, props) {
|
|
8
7
|
super(scope, id, {
|
|
@@ -12,4 +11,4 @@ class Ipam extends ec2.CfnIPAM {
|
|
|
12
11
|
}
|
|
13
12
|
}
|
|
14
13
|
exports.Ipam = Ipam;
|
|
15
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
14
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaXBhbS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYi9yZXNvdXJjZXMvYXdzL25ldHdvcmtpbmcvaXBhbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSwyQ0FBMkM7QUFFM0MsTUFBYSxJQUFLLFNBQVEsR0FBRyxDQUFDLE9BQU87SUFDbkMsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUF3QjtRQUNoRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsRUFBRTtZQUNmLEdBQUcsS0FBSyxFQUFFLCtFQUErRTtZQUN6RixXQUFXLEVBQUUsYUFBYTtTQUMzQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0Y7QUFQRCxvQkFPQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgQ29uc3RydWN0IH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCAqIGFzIGVjMiBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWVjMlwiO1xuXG5leHBvcnQgY2xhc3MgSXBhbSBleHRlbmRzIGVjMi5DZm5JUEFNIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBlYzIuQ2ZuSVBBTVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCB7XG4gICAgICAuLi5wcm9wcywgLy8gaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5hd3NfZWMyLkNmbklQQU0uaHRtbFxuICAgICAgZGVzY3JpcHRpb246IGBFbmFibGUgSVBBTWBcbiAgICB9KTtcbiAgfVxufVxuIl19
|