@btc-embedded/cdk-extensions 0.0.0-alpha.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.
- package/.jsii +5062 -0
- package/API.md +2468 -0
- package/LICENSE +202 -0
- package/README.md +1 -0
- package/lib/extensions/ApiGatewayExtension.d.ts +12 -0
- package/lib/extensions/ApiGatewayExtension.js +65 -0
- package/lib/extensions/ApplicationLoadBalancerExtension.d.ts +25 -0
- package/lib/extensions/ApplicationLoadBalancerExtension.js +103 -0
- package/lib/extensions/CloudMapExtension.d.ts +16 -0
- package/lib/extensions/CloudMapExtension.js +83 -0
- package/lib/extensions/DocumentDbAccessExtension.d.ts +12 -0
- package/lib/extensions/DocumentDbAccessExtension.js +51 -0
- package/lib/extensions/DomainEventMessagingExtension.d.ts +22 -0
- package/lib/extensions/DomainEventMessagingExtension.js +77 -0
- package/lib/extensions/ExtraContainerExtension.d.ts +29 -0
- package/lib/extensions/ExtraContainerExtension.js +61 -0
- package/lib/extensions/ImportValue.d.ts +2 -0
- package/lib/extensions/ImportValue.js +12 -0
- package/lib/extensions/LogExtension.d.ts +7 -0
- package/lib/extensions/LogExtension.js +42 -0
- package/lib/extensions/S3BucketAccessExtension.d.ts +13 -0
- package/lib/extensions/S3BucketAccessExtension.js +32 -0
- package/lib/extensions/TcpKeepAliveExtension.d.ts +11 -0
- package/lib/extensions/TcpKeepAliveExtension.js +59 -0
- package/lib/extensions/index.d.ts +6 -0
- package/lib/extensions/index.js +23 -0
- package/lib/index.d.ts +2 -0
- package/lib/index.js +19 -0
- package/lib/utils/ImportValue.d.ts +2 -0
- package/lib/utils/ImportValue.js +12 -0
- package/lib/utils/index.d.ts +1 -0
- package/lib/utils/index.js +18 -0
- package/package.json +129 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.DocumentDbAccessExtension = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
7
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
8
|
+
const ecs = require("aws-cdk-lib/aws-ecs");
|
|
9
|
+
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
|
10
|
+
const ExtraContainerExtension_1 = require("./ExtraContainerExtension");
|
|
11
|
+
class AddDocumentDbHook extends ecs_service_extensions_1.ContainerMutatingHook {
|
|
12
|
+
constructor(secretArn, scope, name) {
|
|
13
|
+
super();
|
|
14
|
+
this.secretArn = secretArn;
|
|
15
|
+
this.scope = scope;
|
|
16
|
+
this.name = name;
|
|
17
|
+
}
|
|
18
|
+
mutateContainerDefinition(props) {
|
|
19
|
+
const urlSecret = aws_secretsmanager_1.Secret.fromSecretCompleteArn(this.scope, `${this.name}DocumentDbUrlSecret`, this.secretArn);
|
|
20
|
+
return {
|
|
21
|
+
...props,
|
|
22
|
+
secrets: {
|
|
23
|
+
...props.secrets,
|
|
24
|
+
MONGODB_URL: ecs.Secret.fromSecretsManager(urlSecret),
|
|
25
|
+
},
|
|
26
|
+
environment: {
|
|
27
|
+
...props.environment,
|
|
28
|
+
MONGODB_IGNORE_SSL_VALIDATION: 'true',
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
class DocumentDbAccessExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
34
|
+
constructor(props) {
|
|
35
|
+
super('documentdb-access-extension');
|
|
36
|
+
this.props = props;
|
|
37
|
+
}
|
|
38
|
+
addHooks() {
|
|
39
|
+
Object.entries(this.parentService.serviceDescription.extensions)
|
|
40
|
+
.filter(([_, ext]) => (ext instanceof ExtraContainerExtension_1.ExtraContainerExtension && ext.dbAccess) ||
|
|
41
|
+
ext instanceof ecs_service_extensions_1.Container)
|
|
42
|
+
.forEach(([_, extension]) => extension.addContainerMutatingHook(new AddDocumentDbHook(this.props.secretArn, this.scope, `${this.parentService.id}-${extension.name}`)));
|
|
43
|
+
}
|
|
44
|
+
useService(service) {
|
|
45
|
+
aws_ec2_1.SecurityGroup.fromLookupById(this.scope, `${this.parentService.id}DocumentDbSecurityGroup`, this.props.securityGroupId).connections.allowFrom(service, aws_ec2_1.Port.tcp(27017));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
exports.DocumentDbAccessExtension = DocumentDbAccessExtension;
|
|
49
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
50
|
+
DocumentDbAccessExtension[_a] = { fqn: "@btc-embedded/cdk-extensions.DocumentDbAccessExtension", version: "0.0.0-alpha.0" };
|
|
51
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9jdW1lbnREYkFjY2Vzc0V4dGVuc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9leHRlbnNpb25zL0RvY3VtZW50RGJBY2Nlc3NFeHRlbnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSx1RkFJb0Q7QUFDcEQsaURBQTBEO0FBQzFELDJDQUEyQztBQUMzQyx1RUFBd0Q7QUFFeEQsdUVBQW9FO0FBT3BFLE1BQU0saUJBQWtCLFNBQVEsOENBQXFCO0lBQ25ELFlBQ1UsU0FBaUIsRUFDakIsS0FBZ0IsRUFDaEIsSUFBWTtRQUVwQixLQUFLLEVBQUUsQ0FBQztRQUpBLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsVUFBSyxHQUFMLEtBQUssQ0FBVztRQUNoQixTQUFJLEdBQUosSUFBSSxDQUFRO0lBR3RCLENBQUM7SUFFRCx5QkFBeUIsQ0FDdkIsS0FBcUM7UUFFckMsTUFBTSxTQUFTLEdBQUcsMkJBQU0sQ0FBQyxxQkFBcUIsQ0FDNUMsSUFBSSxDQUFDLEtBQUssRUFDVixHQUFHLElBQUksQ0FBQyxJQUFJLHFCQUFxQixFQUNqQyxJQUFJLENBQUMsU0FBUyxDQUNmLENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFO2dCQUNQLEdBQUcsS0FBSyxDQUFDLE9BQU87Z0JBQ2hCLFdBQVcsRUFBRSxHQUFHLENBQUMsTUFBTSxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQzthQUN0RDtZQUNELFdBQVcsRUFBRTtnQkFDWCxHQUFHLEtBQUssQ0FBQyxXQUFXO2dCQUNwQiw2QkFBNkIsRUFBRSxNQUFNO2FBQ3RDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQUVELE1BQWEseUJBQTBCLFNBQVEseUNBQWdCO0lBRzdELFlBQVksS0FBcUM7UUFDL0MsS0FBSyxDQUFDLDZCQUE2QixDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7SUFDckIsQ0FBQztJQUVNLFFBQVE7UUFDYixNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO2FBQzdELE1BQU0sQ0FDTCxDQUFDLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FDWCxDQUFDLEdBQUcsWUFBWSxpREFBdUIsSUFBSSxHQUFHLENBQUMsUUFBUSxDQUFDO1lBQ3hELEdBQUcsWUFBWSxrQ0FBUyxDQUMzQjthQUNBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUUsQ0FDMUIsU0FBUyxDQUFDLHdCQUF3QixDQUNoQyxJQUFJLGlCQUFpQixDQUNuQixJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsRUFDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FDN0MsQ0FDRixDQUNGLENBQUM7SUFDTixDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQTRDO1FBQzVELHVCQUFhLENBQUMsY0FBYyxDQUMxQixJQUFJLENBQUMsS0FBSyxFQUNWLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLHlCQUF5QixFQUNqRCxJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FDM0IsQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLE9BQU8sRUFBRSxjQUFJLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7QUFoQ0gsOERBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGFpbmVyLFxuICBDb250YWluZXJNdXRhdGluZ0hvb2ssXG4gIFNlcnZpY2VFeHRlbnNpb24sXG59IGZyb20gJ0Bhd3MtY2RrLWNvbnRhaW5lcnMvZWNzLXNlcnZpY2UtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBQb3J0LCBTZWN1cml0eUdyb3VwIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgeyBTZWNyZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc2VjcmV0c21hbmFnZXInO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgeyBFeHRyYUNvbnRhaW5lckV4dGVuc2lvbiB9IGZyb20gJy4vRXh0cmFDb250YWluZXJFeHRlbnNpb24nO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvY3VtZW50RGJBY2Nlc3NFeHRlbnNpb25Qcm9wcyB7XG4gIHJlYWRvbmx5IHNlY3JldEFybjogc3RyaW5nO1xuICByZWFkb25seSBzZWN1cml0eUdyb3VwSWQ6IHN0cmluZztcbn1cblxuY2xhc3MgQWRkRG9jdW1lbnREYkhvb2sgZXh0ZW5kcyBDb250YWluZXJNdXRhdGluZ0hvb2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIHNlY3JldEFybjogc3RyaW5nLFxuICAgIHByaXZhdGUgc2NvcGU6IENvbnN0cnVjdCxcbiAgICBwcml2YXRlIG5hbWU6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG11dGF0ZUNvbnRhaW5lckRlZmluaXRpb24oXG4gICAgcHJvcHM6IGVjcy5Db250YWluZXJEZWZpbml0aW9uT3B0aW9ucyxcbiAgKTogZWNzLkNvbnRhaW5lckRlZmluaXRpb25PcHRpb25zIHtcbiAgICBjb25zdCB1cmxTZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldENvbXBsZXRlQXJuKFxuICAgICAgdGhpcy5zY29wZSxcbiAgICAgIGAke3RoaXMubmFtZX1Eb2N1bWVudERiVXJsU2VjcmV0YCxcbiAgICAgIHRoaXMuc2VjcmV0QXJuLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBzZWNyZXRzOiB7XG4gICAgICAgIC4uLnByb3BzLnNlY3JldHMsXG4gICAgICAgIE1PTkdPREJfVVJMOiBlY3MuU2VjcmV0LmZyb21TZWNyZXRzTWFuYWdlcih1cmxTZWNyZXQpLFxuICAgICAgfSxcbiAgICAgIGVudmlyb25tZW50OiB7XG4gICAgICAgIC4uLnByb3BzLmVudmlyb25tZW50LFxuICAgICAgICBNT05HT0RCX0lHTk9SRV9TU0xfVkFMSURBVElPTjogJ3RydWUnLFxuICAgICAgfSxcbiAgICB9O1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudERiQWNjZXNzRXh0ZW5zaW9uIGV4dGVuZHMgU2VydmljZUV4dGVuc2lvbiB7XG4gIHJlYWRvbmx5IHByb3BzOiBEb2N1bWVudERiQWNjZXNzRXh0ZW5zaW9uUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM6IERvY3VtZW50RGJBY2Nlc3NFeHRlbnNpb25Qcm9wcykge1xuICAgIHN1cGVyKCdkb2N1bWVudGRiLWFjY2Vzcy1leHRlbnNpb24nKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gIH1cblxuICBwdWJsaWMgYWRkSG9va3MoKSB7XG4gICAgT2JqZWN0LmVudHJpZXModGhpcy5wYXJlbnRTZXJ2aWNlLnNlcnZpY2VEZXNjcmlwdGlvbi5leHRlbnNpb25zKVxuICAgICAgLmZpbHRlcihcbiAgICAgICAgKFtfLCBleHRdKSA9PlxuICAgICAgICAgIChleHQgaW5zdGFuY2VvZiBFeHRyYUNvbnRhaW5lckV4dGVuc2lvbiAmJiBleHQuZGJBY2Nlc3MpIHx8XG4gICAgICAgICAgZXh0IGluc3RhbmNlb2YgQ29udGFpbmVyLFxuICAgICAgKVxuICAgICAgLmZvckVhY2goKFtfLCBleHRlbnNpb25dKSA9PlxuICAgICAgICBleHRlbnNpb24uYWRkQ29udGFpbmVyTXV0YXRpbmdIb29rKFxuICAgICAgICAgIG5ldyBBZGREb2N1bWVudERiSG9vayhcbiAgICAgICAgICAgIHRoaXMucHJvcHMuc2VjcmV0QXJuLFxuICAgICAgICAgICAgdGhpcy5zY29wZSxcbiAgICAgICAgICAgIGAke3RoaXMucGFyZW50U2VydmljZS5pZH0tJHtleHRlbnNpb24ubmFtZX1gLFxuICAgICAgICAgICksXG4gICAgICAgICksXG4gICAgICApO1xuICB9XG5cbiAgcHVibGljIHVzZVNlcnZpY2Uoc2VydmljZTogZWNzLkVjMlNlcnZpY2UgfCBlY3MuRmFyZ2F0ZVNlcnZpY2UpOiB2b2lkIHtcbiAgICBTZWN1cml0eUdyb3VwLmZyb21Mb29rdXBCeUlkKFxuICAgICAgdGhpcy5zY29wZSxcbiAgICAgIGAke3RoaXMucGFyZW50U2VydmljZS5pZH1Eb2N1bWVudERiU2VjdXJpdHlHcm91cGAsXG4gICAgICB0aGlzLnByb3BzLnNlY3VyaXR5R3JvdXBJZCxcbiAgICApLmNvbm5lY3Rpb25zLmFsbG93RnJvbShzZXJ2aWNlLCBQb3J0LnRjcCgyNzAxNykpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { InjecterExtension, QueueExtension, Service, ServiceExtension } from '@aws-cdk-containers/ecs-service-extensions';
|
|
2
|
+
import { Ec2Service, FargateService, TaskDefinition } from 'aws-cdk-lib/aws-ecs';
|
|
3
|
+
import { ITopic } from 'aws-cdk-lib/aws-sns';
|
|
4
|
+
import { Queue } from 'aws-cdk-lib/aws-sqs';
|
|
5
|
+
import { Construct } from 'constructs';
|
|
6
|
+
export interface EventListenerExtensionProps {
|
|
7
|
+
queue?: Queue;
|
|
8
|
+
}
|
|
9
|
+
export declare class DomainEventMessagingExtension extends ServiceExtension {
|
|
10
|
+
props: EventListenerExtensionProps;
|
|
11
|
+
queueExtension?: QueueExtension;
|
|
12
|
+
injecterExtension?: InjecterExtension;
|
|
13
|
+
subscribeEvents: Array<ITopic>;
|
|
14
|
+
publishEvents: Array<ITopic>;
|
|
15
|
+
constructor(props?: EventListenerExtensionProps);
|
|
16
|
+
prehook(service: Service, scope: Construct): void;
|
|
17
|
+
addHooks(): void;
|
|
18
|
+
useTaskDefinition(taskDefinition: TaskDefinition): void;
|
|
19
|
+
subscribe(topic: ITopic): void;
|
|
20
|
+
publish(topic: ITopic): void;
|
|
21
|
+
useService(_service: Ec2Service | FargateService): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DomainEventMessagingExtension = void 0;
|
|
4
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const aws_iam_1 = require("aws-cdk-lib/aws-iam");
|
|
7
|
+
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
|
8
|
+
class DomainEventMessagingExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
9
|
+
constructor(props) {
|
|
10
|
+
super('event-listener-extension');
|
|
11
|
+
this.subscribeEvents = [];
|
|
12
|
+
this.publishEvents = [];
|
|
13
|
+
this.props = props ?? {};
|
|
14
|
+
}
|
|
15
|
+
prehook(service, scope) {
|
|
16
|
+
if (!this.props.queue) {
|
|
17
|
+
this.props.queue = new aws_sqs_1.Queue(scope, `${service.id}Queue`, {
|
|
18
|
+
deadLetterQueue: {
|
|
19
|
+
queue: new aws_sqs_1.Queue(scope, `${service.id}DeadLetterQueue`, {
|
|
20
|
+
retentionPeriod: aws_cdk_lib_1.Duration.days(14),
|
|
21
|
+
}),
|
|
22
|
+
maxReceiveCount: 3,
|
|
23
|
+
},
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
if (this.subscribeEvents.length > 0) {
|
|
27
|
+
this.queueExtension = new ecs_service_extensions_1.QueueExtension({
|
|
28
|
+
eventsQueue: this.props.queue,
|
|
29
|
+
subscriptions: this.subscribeEvents.map((topic) => new ecs_service_extensions_1.TopicSubscription({ topic })),
|
|
30
|
+
});
|
|
31
|
+
this.queueExtension.prehook(service, scope);
|
|
32
|
+
}
|
|
33
|
+
if (this.publishEvents.length > 0) {
|
|
34
|
+
this.injecterExtension = new ecs_service_extensions_1.InjecterExtension({
|
|
35
|
+
injectables: this.publishEvents.map((topic) => new ecs_service_extensions_1.InjectableTopic({ topic })),
|
|
36
|
+
});
|
|
37
|
+
this.injecterExtension.prehook(service, scope);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
addHooks() {
|
|
41
|
+
this.queueExtension?.addHooks();
|
|
42
|
+
this.injecterExtension?.addHooks();
|
|
43
|
+
}
|
|
44
|
+
useTaskDefinition(taskDefinition) {
|
|
45
|
+
this.queueExtension?.useTaskDefinition(taskDefinition);
|
|
46
|
+
this.injecterExtension?.useTaskDefinition(taskDefinition);
|
|
47
|
+
}
|
|
48
|
+
subscribe(topic) {
|
|
49
|
+
this.subscribeEvents.push(topic);
|
|
50
|
+
// add the topic
|
|
51
|
+
}
|
|
52
|
+
publish(topic) {
|
|
53
|
+
this.publishEvents.push(topic);
|
|
54
|
+
}
|
|
55
|
+
useService(_service) {
|
|
56
|
+
if (!this.props.queue) {
|
|
57
|
+
throw new Error('Queue must be defined');
|
|
58
|
+
}
|
|
59
|
+
// prevent issue with too many specific policy restrictions, see https://github.com/aws/aws-cdk/issues/7732
|
|
60
|
+
const queuePolicy = this.props.queue.node
|
|
61
|
+
.findChild('Policy')
|
|
62
|
+
.node.findChild('Resource');
|
|
63
|
+
queuePolicy.policyDocument = new aws_iam_1.PolicyDocument({
|
|
64
|
+
statements: [
|
|
65
|
+
new aws_iam_1.PolicyStatement({
|
|
66
|
+
actions: ['sqs:SendMessage'],
|
|
67
|
+
principals: [new aws_iam_1.ServicePrincipal('sns.amazonaws.com')],
|
|
68
|
+
resources: [this.props.queue.queueArn],
|
|
69
|
+
sid: 'AllowSNSToSendToSQS',
|
|
70
|
+
}),
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
queuePolicy.queues = [this.props.queue.queueUrl];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.DomainEventMessagingExtension = DomainEventMessagingExtension;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRG9tYWluRXZlbnRNZXNzYWdpbmdFeHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9Eb21haW5FdmVudE1lc3NhZ2luZ0V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1RkFPb0Q7QUFDcEQsNkNBQXVDO0FBTXZDLGlEQUk2QjtBQUU3QixpREFBNEQ7QUFPNUQsTUFBYSw2QkFBOEIsU0FBUSx5Q0FBZ0I7SUFPakUsWUFBWSxLQUFtQztRQUM3QyxLQUFLLENBQUMsMEJBQTBCLENBQUMsQ0FBQztRQUpwQyxvQkFBZSxHQUFrQixFQUFFLENBQUM7UUFDcEMsa0JBQWEsR0FBa0IsRUFBRSxDQUFDO1FBSWhDLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxJQUFJLEVBQUUsQ0FBQztJQUMzQixDQUFDO0lBRUQsT0FBTyxDQUFDLE9BQWdCLEVBQUUsS0FBZ0I7UUFDeEMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLEdBQUcsSUFBSSxlQUFLLENBQUMsS0FBSyxFQUFFLEdBQUcsT0FBTyxDQUFDLEVBQUUsT0FBTyxFQUFFO2dCQUN4RCxlQUFlLEVBQUU7b0JBQ2YsS0FBSyxFQUFFLElBQUksZUFBSyxDQUFDLEtBQUssRUFBRSxHQUFHLE9BQU8sQ0FBQyxFQUFFLGlCQUFpQixFQUFFO3dCQUN0RCxlQUFlLEVBQUUsc0JBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO3FCQUNuQyxDQUFDO29CQUNGLGVBQWUsRUFBRSxDQUFDO2lCQUNuQjthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLElBQUksQ0FBQyxlQUFlLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3BDLElBQUksQ0FBQyxjQUFjLEdBQUcsSUFBSSx1Q0FBYyxDQUFDO2dCQUN2QyxXQUFXLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLO2dCQUM3QixhQUFhLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxHQUFHLENBQ3JDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxJQUFJLDBDQUFpQixDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FDNUM7YUFDRixDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDOUMsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksMENBQWlCLENBQUM7Z0JBQzdDLFdBQVcsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FDakMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksd0NBQWUsQ0FBQyxFQUFFLEtBQUssRUFBRSxDQUFDLENBQzFDO2FBQ0YsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQztJQUNILENBQUM7SUFFRCxRQUFRO1FBQ04sSUFBSSxDQUFDLGNBQWMsRUFBRSxRQUFRLEVBQUUsQ0FBQztRQUNoQyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVELGlCQUFpQixDQUFDLGNBQThCO1FBQzlDLElBQUksQ0FBQyxjQUFjLEVBQUUsaUJBQWlCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDdkQsSUFBSSxDQUFDLGlCQUFpQixFQUFFLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQzVELENBQUM7SUFFTSxTQUFTLENBQUMsS0FBYTtRQUM1QixJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxnQkFBZ0I7SUFDbEIsQ0FBQztJQUVNLE9BQU8sQ0FBQyxLQUFhO1FBQzFCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFTSxVQUFVLENBQUMsUUFBcUM7UUFDckQsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1FBQzNDLENBQUM7UUFFRCwyR0FBMkc7UUFDM0csTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsSUFBSTthQUN0QyxTQUFTLENBQUMsUUFBUSxDQUFDO2FBQ25CLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFtQixDQUFDO1FBQ2hELFdBQVcsQ0FBQyxjQUFjLEdBQUcsSUFBSSx3QkFBYyxDQUFDO1lBQzlDLFVBQVUsRUFBRTtnQkFDVixJQUFJLHlCQUFlLENBQUM7b0JBQ2xCLE9BQU8sRUFBRSxDQUFDLGlCQUFpQixDQUFDO29CQUM1QixVQUFVLEVBQUUsQ0FBQyxJQUFJLDBCQUFnQixDQUFDLG1CQUFtQixDQUFDLENBQUM7b0JBQ3ZELFNBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztvQkFDdEMsR0FBRyxFQUFFLHFCQUFxQjtpQkFDM0IsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUFDO1FBQ0gsV0FBVyxDQUFDLE1BQU0sR0FBRyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Q0FDRjtBQXBGRCxzRUFvRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBJbmplY3RhYmxlVG9waWMsXG4gIEluamVjdGVyRXh0ZW5zaW9uLFxuICBRdWV1ZUV4dGVuc2lvbixcbiAgU2VydmljZSxcbiAgU2VydmljZUV4dGVuc2lvbixcbiAgVG9waWNTdWJzY3JpcHRpb24sXG59IGZyb20gJ0Bhd3MtY2RrLWNvbnRhaW5lcnMvZWNzLXNlcnZpY2UtZXh0ZW5zaW9ucyc7XG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIEVjMlNlcnZpY2UsXG4gIEZhcmdhdGVTZXJ2aWNlLFxuICBUYXNrRGVmaW5pdGlvbixcbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQge1xuICBQb2xpY3lEb2N1bWVudCxcbiAgUG9saWN5U3RhdGVtZW50LFxuICBTZXJ2aWNlUHJpbmNpcGFsLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcbmltcG9ydCB7IElUb3BpYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1zbnMnO1xuaW1wb3J0IHsgQ2ZuUXVldWVQb2xpY3ksIFF1ZXVlIH0gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNxcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBFdmVudExpc3RlbmVyRXh0ZW5zaW9uUHJvcHMge1xuICBxdWV1ZT86IFF1ZXVlO1xufVxuXG5leHBvcnQgY2xhc3MgRG9tYWluRXZlbnRNZXNzYWdpbmdFeHRlbnNpb24gZXh0ZW5kcyBTZXJ2aWNlRXh0ZW5zaW9uIHtcbiAgcHJvcHM6IEV2ZW50TGlzdGVuZXJFeHRlbnNpb25Qcm9wcztcbiAgcXVldWVFeHRlbnNpb24/OiBRdWV1ZUV4dGVuc2lvbjtcbiAgaW5qZWN0ZXJFeHRlbnNpb24/OiBJbmplY3RlckV4dGVuc2lvbjtcbiAgc3Vic2NyaWJlRXZlbnRzOiBBcnJheTxJVG9waWM+ID0gW107XG4gIHB1Ymxpc2hFdmVudHM6IEFycmF5PElUb3BpYz4gPSBbXTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcz86IEV2ZW50TGlzdGVuZXJFeHRlbnNpb25Qcm9wcykge1xuICAgIHN1cGVyKCdldmVudC1saXN0ZW5lci1leHRlbnNpb24nKTtcbiAgICB0aGlzLnByb3BzID0gcHJvcHMgPz8ge307XG4gIH1cblxuICBwcmVob29rKHNlcnZpY2U6IFNlcnZpY2UsIHNjb3BlOiBDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucXVldWUpIHtcbiAgICAgIHRoaXMucHJvcHMucXVldWUgPSBuZXcgUXVldWUoc2NvcGUsIGAke3NlcnZpY2UuaWR9UXVldWVgLCB7XG4gICAgICAgIGRlYWRMZXR0ZXJRdWV1ZToge1xuICAgICAgICAgIHF1ZXVlOiBuZXcgUXVldWUoc2NvcGUsIGAke3NlcnZpY2UuaWR9RGVhZExldHRlclF1ZXVlYCwge1xuICAgICAgICAgICAgcmV0ZW50aW9uUGVyaW9kOiBEdXJhdGlvbi5kYXlzKDE0KSxcbiAgICAgICAgICB9KSxcbiAgICAgICAgICBtYXhSZWNlaXZlQ291bnQ6IDMsXG4gICAgICAgIH0sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5zdWJzY3JpYmVFdmVudHMubGVuZ3RoID4gMCkge1xuICAgICAgdGhpcy5xdWV1ZUV4dGVuc2lvbiA9IG5ldyBRdWV1ZUV4dGVuc2lvbih7XG4gICAgICAgIGV2ZW50c1F1ZXVlOiB0aGlzLnByb3BzLnF1ZXVlLFxuICAgICAgICBzdWJzY3JpcHRpb25zOiB0aGlzLnN1YnNjcmliZUV2ZW50cy5tYXAoXG4gICAgICAgICAgKHRvcGljKSA9PiBuZXcgVG9waWNTdWJzY3JpcHRpb24oeyB0b3BpYyB9KSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5xdWV1ZUV4dGVuc2lvbi5wcmVob29rKHNlcnZpY2UsIHNjb3BlKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wdWJsaXNoRXZlbnRzLmxlbmd0aCA+IDApIHtcbiAgICAgIHRoaXMuaW5qZWN0ZXJFeHRlbnNpb24gPSBuZXcgSW5qZWN0ZXJFeHRlbnNpb24oe1xuICAgICAgICBpbmplY3RhYmxlczogdGhpcy5wdWJsaXNoRXZlbnRzLm1hcChcbiAgICAgICAgICAodG9waWMpID0+IG5ldyBJbmplY3RhYmxlVG9waWMoeyB0b3BpYyB9KSxcbiAgICAgICAgKSxcbiAgICAgIH0pO1xuICAgICAgdGhpcy5pbmplY3RlckV4dGVuc2lvbi5wcmVob29rKHNlcnZpY2UsIHNjb3BlKTtcbiAgICB9XG4gIH1cblxuICBhZGRIb29rcygpOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXVlRXh0ZW5zaW9uPy5hZGRIb29rcygpO1xuICAgIHRoaXMuaW5qZWN0ZXJFeHRlbnNpb24/LmFkZEhvb2tzKCk7XG4gIH1cblxuICB1c2VUYXNrRGVmaW5pdGlvbih0YXNrRGVmaW5pdGlvbjogVGFza0RlZmluaXRpb24pOiB2b2lkIHtcbiAgICB0aGlzLnF1ZXVlRXh0ZW5zaW9uPy51c2VUYXNrRGVmaW5pdGlvbih0YXNrRGVmaW5pdGlvbik7XG4gICAgdGhpcy5pbmplY3RlckV4dGVuc2lvbj8udXNlVGFza0RlZmluaXRpb24odGFza0RlZmluaXRpb24pO1xuICB9XG5cbiAgcHVibGljIHN1YnNjcmliZSh0b3BpYzogSVRvcGljKTogdm9pZCB7XG4gICAgdGhpcy5zdWJzY3JpYmVFdmVudHMucHVzaCh0b3BpYyk7XG4gICAgLy8gYWRkIHRoZSB0b3BpY1xuICB9XG5cbiAgcHVibGljIHB1Ymxpc2godG9waWM6IElUb3BpYykge1xuICAgIHRoaXMucHVibGlzaEV2ZW50cy5wdXNoKHRvcGljKTtcbiAgfVxuXG4gIHB1YmxpYyB1c2VTZXJ2aWNlKF9zZXJ2aWNlOiBFYzJTZXJ2aWNlIHwgRmFyZ2F0ZVNlcnZpY2UpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMucHJvcHMucXVldWUpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUXVldWUgbXVzdCBiZSBkZWZpbmVkJyk7XG4gICAgfVxuXG4gICAgLy8gcHJldmVudCBpc3N1ZSB3aXRoIHRvbyBtYW55IHNwZWNpZmljIHBvbGljeSByZXN0cmljdGlvbnMsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1jZGsvaXNzdWVzLzc3MzJcbiAgICBjb25zdCBxdWV1ZVBvbGljeSA9IHRoaXMucHJvcHMucXVldWUubm9kZVxuICAgICAgLmZpbmRDaGlsZCgnUG9saWN5JylcbiAgICAgIC5ub2RlLmZpbmRDaGlsZCgnUmVzb3VyY2UnKSBhcyBDZm5RdWV1ZVBvbGljeTtcbiAgICBxdWV1ZVBvbGljeS5wb2xpY3lEb2N1bWVudCA9IG5ldyBQb2xpY3lEb2N1bWVudCh7XG4gICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgIG5ldyBQb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgIGFjdGlvbnM6IFsnc3FzOlNlbmRNZXNzYWdlJ10sXG4gICAgICAgICAgcHJpbmNpcGFsczogW25ldyBTZXJ2aWNlUHJpbmNpcGFsKCdzbnMuYW1hem9uYXdzLmNvbScpXSxcbiAgICAgICAgICByZXNvdXJjZXM6IFt0aGlzLnByb3BzLnF1ZXVlLnF1ZXVlQXJuXSxcbiAgICAgICAgICBzaWQ6ICdBbGxvd1NOU1RvU2VuZFRvU1FTJyxcbiAgICAgICAgfSksXG4gICAgICBdLFxuICAgIH0pO1xuICAgIHF1ZXVlUG9saWN5LnF1ZXVlcyA9IFt0aGlzLnByb3BzLnF1ZXVlLnF1ZXVlVXJsXTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { ServiceExtension } from '@aws-cdk-containers/ecs-service-extensions';
|
|
2
|
+
import * as ecs from 'aws-cdk-lib/aws-ecs';
|
|
3
|
+
import * as awslogs from 'aws-cdk-lib/aws-logs';
|
|
4
|
+
export interface ContainerProps extends ecs.ContainerDefinitionOptions {
|
|
5
|
+
/**
|
|
6
|
+
* The log group into which application container logs should be routed.
|
|
7
|
+
*
|
|
8
|
+
* @default - A log group is automatically created for you if the `ECS_SERVICE_EXTENSIONS_ENABLE_DEFAULT_LOG_DRIVER` feature flag is set.
|
|
9
|
+
*/
|
|
10
|
+
readonly logGroup?: awslogs.ILogGroup;
|
|
11
|
+
}
|
|
12
|
+
export interface ExtraContainerExtensionProps {
|
|
13
|
+
readonly container: ContainerProps;
|
|
14
|
+
/**
|
|
15
|
+
* Specify the condition when this container should be considered
|
|
16
|
+
* healthy such that the main container can start. Defaults to ContainerDependencyCondition.HEALTHY.
|
|
17
|
+
*/
|
|
18
|
+
readonly healthCheckCondition?: ecs.ContainerDependencyCondition;
|
|
19
|
+
readonly dbAccess?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare class ExtraContainerExtension extends ServiceExtension {
|
|
22
|
+
readonly containerName: string;
|
|
23
|
+
readonly props: ExtraContainerExtensionProps;
|
|
24
|
+
constructor(name: string, extraContainer: ExtraContainerExtensionProps);
|
|
25
|
+
get dbAccess(): boolean;
|
|
26
|
+
useService(service: ecs.Ec2Service | ecs.FargateService): void;
|
|
27
|
+
useTaskDefinition(taskDefinition: ecs.TaskDefinition): void;
|
|
28
|
+
get healthCondition(): ecs.ContainerDependencyCondition;
|
|
29
|
+
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.ExtraContainerExtension = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
7
|
+
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
|
8
|
+
const ecs = require("aws-cdk-lib/aws-ecs");
|
|
9
|
+
class ExtraContainerExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
10
|
+
constructor(name, extraContainer) {
|
|
11
|
+
super(`${name}-extra-container-extension`);
|
|
12
|
+
this.containerName = name;
|
|
13
|
+
this.props = extraContainer;
|
|
14
|
+
}
|
|
15
|
+
get dbAccess() {
|
|
16
|
+
return this.props.dbAccess ?? false;
|
|
17
|
+
}
|
|
18
|
+
useService(service) {
|
|
19
|
+
this.props.container.portMappings?.forEach((portMapping) => {
|
|
20
|
+
service.connections.allowFrom(service, aws_ec2_1.Port.tcp(portMapping.containerPort));
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
useTaskDefinition(taskDefinition) {
|
|
24
|
+
let containerProps = this.props.container;
|
|
25
|
+
this.containerMutatingHooks.forEach((hook) => {
|
|
26
|
+
containerProps = hook.mutateContainerDefinition(containerProps);
|
|
27
|
+
});
|
|
28
|
+
if (!containerProps.logging) {
|
|
29
|
+
containerProps = {
|
|
30
|
+
...containerProps,
|
|
31
|
+
logging: new ecs.AwsLogDriver({
|
|
32
|
+
streamPrefix: this.parentService.id,
|
|
33
|
+
logGroup: this.props.container.logGroup,
|
|
34
|
+
}),
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
this.container = taskDefinition.addContainer(this.containerName, containerProps);
|
|
38
|
+
const container = taskDefinition.findContainer('app');
|
|
39
|
+
if (!container) {
|
|
40
|
+
throw new Error('You must specify a main container');
|
|
41
|
+
}
|
|
42
|
+
// we want to make sure that the extra container is healthy before starting the main container
|
|
43
|
+
container.addContainerDependencies({
|
|
44
|
+
container: this.container,
|
|
45
|
+
condition: this.healthCondition,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
get healthCondition() {
|
|
49
|
+
if (this.props.healthCheckCondition) {
|
|
50
|
+
return this.props.healthCheckCondition;
|
|
51
|
+
}
|
|
52
|
+
if (!this.props.container.healthCheck) {
|
|
53
|
+
return ecs.ContainerDependencyCondition.START;
|
|
54
|
+
}
|
|
55
|
+
return ecs.ContainerDependencyCondition.HEALTHY;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
exports.ExtraContainerExtension = ExtraContainerExtension;
|
|
59
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
60
|
+
ExtraContainerExtension[_a] = { fqn: "@btc-embedded/cdk-extensions.ExtraContainerExtension", version: "0.0.0-alpha.0" };
|
|
61
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXh0cmFDb250YWluZXJFeHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9FeHRyYUNvbnRhaW5lckV4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLHVGQUVvRDtBQUNwRCxpREFBMkM7QUFDM0MsMkNBQTJDO0FBd0IzQyxNQUFhLHVCQUF3QixTQUFRLHlDQUFnQjtJQUkzRCxZQUFZLElBQVksRUFBRSxjQUE0QztRQUNwRSxLQUFLLENBQUMsR0FBRyxJQUFJLDRCQUE0QixDQUFDLENBQUM7UUFDM0MsSUFBSSxDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUIsSUFBSSxDQUFDLEtBQUssR0FBRyxjQUFjLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksUUFBUTtRQUNWLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksS0FBSyxDQUFDO0lBQ3RDLENBQUM7SUFFRCxVQUFVLENBQUMsT0FBNEM7UUFDckQsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQ3pELE9BQU8sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUMzQixPQUFPLEVBQ1AsY0FBSSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsYUFBYSxDQUFDLENBQ3BDLENBQUM7UUFDSixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxpQkFBaUIsQ0FBQyxjQUFrQztRQUNsRCxJQUFJLGNBQWMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQztRQUUxQyxJQUFJLENBQUMsc0JBQXNCLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDM0MsY0FBYyxHQUFHLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxjQUFjLENBQUMsQ0FBQztRQUNsRSxDQUFDLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDNUIsY0FBYyxHQUFHO2dCQUNmLEdBQUcsY0FBYztnQkFDakIsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztvQkFDNUIsWUFBWSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDbkMsUUFBUSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLFFBQVE7aUJBQ3hDLENBQUM7YUFDSCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksQ0FBQyxTQUFTLEdBQUcsY0FBYyxDQUFDLFlBQVksQ0FDMUMsSUFBSSxDQUFDLGFBQWEsRUFDbEIsY0FBYyxDQUNmLENBQUM7UUFFRixNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNmLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztRQUN2RCxDQUFDO1FBRUQsOEZBQThGO1FBQzlGLFNBQVMsQ0FBQyx3QkFBd0IsQ0FBQztZQUNqQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFNBQVM7WUFDekIsU0FBUyxFQUFFLElBQUksQ0FBQyxlQUFlO1NBQ2hDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRCxJQUFJLGVBQWU7UUFDakIsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixFQUFFLENBQUM7WUFDcEMsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLG9CQUFvQixDQUFDO1FBQ3pDLENBQUM7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsV0FBVyxFQUFFLENBQUM7WUFDdEMsT0FBTyxHQUFHLENBQUMsNEJBQTRCLENBQUMsS0FBSyxDQUFDO1FBQ2hELENBQUM7UUFFRCxPQUFPLEdBQUcsQ0FBQyw0QkFBNEIsQ0FBQyxPQUFPLENBQUM7SUFDbEQsQ0FBQzs7QUFwRUgsMERBcUVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgU2VydmljZUV4dGVuc2lvbixcbn0gZnJvbSAnQGF3cy1jZGstY29udGFpbmVycy9lY3Mtc2VydmljZS1leHRlbnNpb25zJztcbmltcG9ydCB7IFBvcnQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCAqIGFzIGF3c2xvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnRhaW5lclByb3BzIGV4dGVuZHMgZWNzLkNvbnRhaW5lckRlZmluaXRpb25PcHRpb25zIHtcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCBpbnRvIHdoaWNoIGFwcGxpY2F0aW9uIGNvbnRhaW5lciBsb2dzIHNob3VsZCBiZSByb3V0ZWQuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gQSBsb2cgZ3JvdXAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIGZvciB5b3UgaWYgdGhlIGBFQ1NfU0VSVklDRV9FWFRFTlNJT05TX0VOQUJMRV9ERUZBVUxUX0xPR19EUklWRVJgIGZlYXR1cmUgZmxhZyBpcyBzZXQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cD86IGF3c2xvZ3MuSUxvZ0dyb3VwO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEV4dHJhQ29udGFpbmVyRXh0ZW5zaW9uUHJvcHMge1xuICByZWFkb25seSBjb250YWluZXI6IENvbnRhaW5lclByb3BzO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZ5IHRoZSBjb25kaXRpb24gd2hlbiB0aGlzIGNvbnRhaW5lciBzaG91bGQgYmUgY29uc2lkZXJlZFxuICAgKiBoZWFsdGh5IHN1Y2ggdGhhdCB0aGUgbWFpbiBjb250YWluZXIgY2FuIHN0YXJ0LiBEZWZhdWx0cyB0byBDb250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLkhFQUxUSFkuXG4gICAqL1xuICByZWFkb25seSBoZWFsdGhDaGVja0NvbmRpdGlvbj86IGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uO1xuICByZWFkb25seSBkYkFjY2Vzcz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBjbGFzcyBFeHRyYUNvbnRhaW5lckV4dGVuc2lvbiBleHRlbmRzIFNlcnZpY2VFeHRlbnNpb24ge1xuICByZWFkb25seSBjb250YWluZXJOYW1lOiBzdHJpbmc7XG4gIHJlYWRvbmx5IHByb3BzOiBFeHRyYUNvbnRhaW5lckV4dGVuc2lvblByb3BzO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWU6IHN0cmluZywgZXh0cmFDb250YWluZXI6IEV4dHJhQ29udGFpbmVyRXh0ZW5zaW9uUHJvcHMpIHtcbiAgICBzdXBlcihgJHtuYW1lfS1leHRyYS1jb250YWluZXItZXh0ZW5zaW9uYCk7XG4gICAgdGhpcy5jb250YWluZXJOYW1lID0gbmFtZTtcbiAgICB0aGlzLnByb3BzID0gZXh0cmFDb250YWluZXI7XG4gIH1cblxuICBnZXQgZGJBY2Nlc3MoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMucHJvcHMuZGJBY2Nlc3MgPz8gZmFsc2U7XG4gIH1cblxuICB1c2VTZXJ2aWNlKHNlcnZpY2U6IGVjcy5FYzJTZXJ2aWNlIHwgZWNzLkZhcmdhdGVTZXJ2aWNlKTogdm9pZCB7XG4gICAgdGhpcy5wcm9wcy5jb250YWluZXIucG9ydE1hcHBpbmdzPy5mb3JFYWNoKChwb3J0TWFwcGluZykgPT4ge1xuICAgICAgc2VydmljZS5jb25uZWN0aW9ucy5hbGxvd0Zyb20oXG4gICAgICAgIHNlcnZpY2UsXG4gICAgICAgIFBvcnQudGNwKHBvcnRNYXBwaW5nLmNvbnRhaW5lclBvcnQpLFxuICAgICAgKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVzZVRhc2tEZWZpbml0aW9uKHRhc2tEZWZpbml0aW9uOiBlY3MuVGFza0RlZmluaXRpb24pOiB2b2lkIHtcbiAgICBsZXQgY29udGFpbmVyUHJvcHMgPSB0aGlzLnByb3BzLmNvbnRhaW5lcjtcblxuICAgIHRoaXMuY29udGFpbmVyTXV0YXRpbmdIb29rcy5mb3JFYWNoKChob29rKSA9PiB7XG4gICAgICBjb250YWluZXJQcm9wcyA9IGhvb2subXV0YXRlQ29udGFpbmVyRGVmaW5pdGlvbihjb250YWluZXJQcm9wcyk7XG4gICAgfSk7XG5cbiAgICBpZiAoIWNvbnRhaW5lclByb3BzLmxvZ2dpbmcpIHtcbiAgICAgIGNvbnRhaW5lclByb3BzID0ge1xuICAgICAgICAuLi5jb250YWluZXJQcm9wcyxcbiAgICAgICAgbG9nZ2luZzogbmV3IGVjcy5Bd3NMb2dEcml2ZXIoe1xuICAgICAgICAgIHN0cmVhbVByZWZpeDogdGhpcy5wYXJlbnRTZXJ2aWNlLmlkLFxuICAgICAgICAgIGxvZ0dyb3VwOiB0aGlzLnByb3BzLmNvbnRhaW5lci5sb2dHcm91cCxcbiAgICAgICAgfSksXG4gICAgICB9O1xuICAgIH1cblxuICAgIHRoaXMuY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKFxuICAgICAgdGhpcy5jb250YWluZXJOYW1lLFxuICAgICAgY29udGFpbmVyUHJvcHMsXG4gICAgKTtcblxuICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmZpbmRDb250YWluZXIoJ2FwcCcpO1xuXG4gICAgaWYgKCFjb250YWluZXIpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignWW91IG11c3Qgc3BlY2lmeSBhIG1haW4gY29udGFpbmVyJyk7XG4gICAgfVxuXG4gICAgLy8gd2Ugd2FudCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgZXh0cmEgY29udGFpbmVyIGlzIGhlYWx0aHkgYmVmb3JlIHN0YXJ0aW5nIHRoZSBtYWluIGNvbnRhaW5lclxuICAgIGNvbnRhaW5lci5hZGRDb250YWluZXJEZXBlbmRlbmNpZXMoe1xuICAgICAgY29udGFpbmVyOiB0aGlzLmNvbnRhaW5lcixcbiAgICAgIGNvbmRpdGlvbjogdGhpcy5oZWFsdGhDb25kaXRpb24sXG4gICAgfSk7XG4gIH1cblxuICBnZXQgaGVhbHRoQ29uZGl0aW9uKCkge1xuICAgIGlmICh0aGlzLnByb3BzLmhlYWx0aENoZWNrQ29uZGl0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5oZWFsdGhDaGVja0NvbmRpdGlvbjtcbiAgICB9XG5cbiAgICBpZiAoIXRoaXMucHJvcHMuY29udGFpbmVyLmhlYWx0aENoZWNrKSB7XG4gICAgICByZXR1cm4gZWNzLkNvbnRhaW5lckRlcGVuZGVuY3lDb25kaXRpb24uU1RBUlQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIGVjcy5Db250YWluZXJEZXBlbmRlbmN5Q29uZGl0aW9uLkhFQUxUSFk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.importValue = importValue;
|
|
4
|
+
exports.createImporter = createImporter;
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
function importValue(prefix, name) {
|
|
7
|
+
return createImporter(prefix)(name);
|
|
8
|
+
}
|
|
9
|
+
function createImporter(...prefix) {
|
|
10
|
+
return (...parts) => aws_cdk_lib_1.Fn.importValue(`${[...prefix, ...parts].join(':')}`);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9JbXBvcnRWYWx1ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLGtDQUVDO0FBRUQsd0NBR0M7QUFURCw2Q0FBaUM7QUFFakMsU0FBZ0IsV0FBVyxDQUFDLE1BQWMsRUFBRSxJQUFZO0lBQ3RELE9BQU8sY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBQ3RDLENBQUM7QUFFRCxTQUFnQixjQUFjLENBQUMsR0FBRyxNQUFnQjtJQUNoRCxPQUFPLENBQUMsR0FBRyxLQUFlLEVBQUUsRUFBRSxDQUM1QixnQkFBRSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0FBQ3pELENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGbiB9IGZyb20gJ2F3cy1jZGstbGliJztcblxuZXhwb3J0IGZ1bmN0aW9uIGltcG9ydFZhbHVlKHByZWZpeDogc3RyaW5nLCBuYW1lOiBzdHJpbmcpIHtcbiAgcmV0dXJuIGNyZWF0ZUltcG9ydGVyKHByZWZpeCkobmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVJbXBvcnRlciguLi5wcmVmaXg6IHN0cmluZ1tdKSB7XG4gIHJldHVybiAoLi4ucGFydHM6IHN0cmluZ1tdKSA9PlxuICAgIEZuLmltcG9ydFZhbHVlKGAke1suLi5wcmVmaXgsIC4uLnBhcnRzXS5qb2luKCc6Jyl9YCk7XG59XG4iXX0=
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogExtension = void 0;
|
|
4
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
const ecs = require("aws-cdk-lib/aws-ecs");
|
|
7
|
+
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
|
8
|
+
class AddLoggingHook extends ecs_service_extensions_1.ContainerMutatingHook {
|
|
9
|
+
constructor(logGroup, streamPrefix) {
|
|
10
|
+
super();
|
|
11
|
+
this.logGroup = logGroup;
|
|
12
|
+
this.streamPrefix = streamPrefix;
|
|
13
|
+
}
|
|
14
|
+
mutateContainerDefinition(props) {
|
|
15
|
+
return {
|
|
16
|
+
...props,
|
|
17
|
+
logging: new ecs.AwsLogDriver({
|
|
18
|
+
logGroup: this.logGroup,
|
|
19
|
+
streamPrefix: this.streamPrefix,
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
class LogExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
25
|
+
constructor(scope) {
|
|
26
|
+
super('log-group-extension');
|
|
27
|
+
this.scope = scope;
|
|
28
|
+
}
|
|
29
|
+
addHooks() {
|
|
30
|
+
const logGroup = new aws_logs_1.LogGroup(this.scope, `${this.parentService.id}-logs`, {
|
|
31
|
+
removalPolicy: aws_cdk_lib_1.RemovalPolicy.DESTROY,
|
|
32
|
+
retention: aws_logs_1.RetentionDays.ONE_MONTH,
|
|
33
|
+
});
|
|
34
|
+
// add this hook to the main service container and all containers added by our extra container extension
|
|
35
|
+
Object.entries(this.parentService.serviceDescription.extensions)
|
|
36
|
+
.filter(([key]) => key === 'service-container' ||
|
|
37
|
+
key.endsWith('-extra-container-extension'))
|
|
38
|
+
.forEach(([_, extension]) => extension.addContainerMutatingHook(new AddLoggingHook(logGroup, this.parentService.id)));
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
exports.LogExtension = LogExtension;
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nRXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvTG9nRXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHVGQUdvRDtBQUNwRCw2Q0FBNEM7QUFDNUMsMkNBQTJDO0FBQzNDLG1EQUEwRTtBQUcxRSxNQUFNLGNBQWUsU0FBUSw4Q0FBcUI7SUFDaEQsWUFDVSxRQUFtQixFQUNuQixZQUFvQjtRQUU1QixLQUFLLEVBQUUsQ0FBQztRQUhBLGFBQVEsR0FBUixRQUFRLENBQVc7UUFDbkIsaUJBQVksR0FBWixZQUFZLENBQVE7SUFHOUIsQ0FBQztJQUVELHlCQUF5QixDQUN2QixLQUFxQztRQUVyQyxPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLFlBQVksQ0FBQztnQkFDNUIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2dCQUN2QixZQUFZLEVBQUUsSUFBSSxDQUFDLFlBQVk7YUFDaEMsQ0FBQztTQUNILENBQUM7SUFDSixDQUFDO0NBQ0Y7QUFFRCxNQUFhLFlBQWEsU0FBUSx5Q0FBZ0I7SUFHaEQsWUFBWSxLQUFnQjtRQUMxQixLQUFLLENBQUMscUJBQXFCLENBQUMsQ0FBQztRQUM3QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztJQUNyQixDQUFDO0lBRU0sUUFBUTtRQUNiLE1BQU0sUUFBUSxHQUFHLElBQUksbUJBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRTtZQUN6RSxhQUFhLEVBQUUsMkJBQWEsQ0FBQyxPQUFPO1lBQ3BDLFNBQVMsRUFBRSx3QkFBYSxDQUFDLFNBQVM7U0FDbkMsQ0FBQyxDQUFDO1FBRUgsd0dBQXdHO1FBQ3hHLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUM7YUFDN0QsTUFBTSxDQUNMLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLENBQ1IsR0FBRyxLQUFLLG1CQUFtQjtZQUMzQixHQUFHLENBQUMsUUFBUSxDQUFDLDRCQUE0QixDQUFDLENBQzdDO2FBQ0EsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsU0FBUyxDQUFDLEVBQUUsRUFBRSxDQUMxQixTQUFTLENBQUMsd0JBQXdCLENBQ2hDLElBQUksY0FBYyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxDQUNwRCxDQUNGLENBQUM7SUFDTixDQUFDO0NBQ0Y7QUEzQkQsb0NBMkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGFpbmVyTXV0YXRpbmdIb29rLFxuICBTZXJ2aWNlRXh0ZW5zaW9uLFxufSBmcm9tICdAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgUmVtb3ZhbFBvbGljeSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IElMb2dHcm91cCwgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuY2xhc3MgQWRkTG9nZ2luZ0hvb2sgZXh0ZW5kcyBDb250YWluZXJNdXRhdGluZ0hvb2sge1xuICBjb25zdHJ1Y3RvcihcbiAgICBwcml2YXRlIGxvZ0dyb3VwOiBJTG9nR3JvdXAsXG4gICAgcHJpdmF0ZSBzdHJlYW1QcmVmaXg6IHN0cmluZyxcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIG11dGF0ZUNvbnRhaW5lckRlZmluaXRpb24oXG4gICAgcHJvcHM6IGVjcy5Db250YWluZXJEZWZpbml0aW9uT3B0aW9ucyxcbiAgKTogZWNzLkNvbnRhaW5lckRlZmluaXRpb25PcHRpb25zIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBsb2dnaW5nOiBuZXcgZWNzLkF3c0xvZ0RyaXZlcih7XG4gICAgICAgIGxvZ0dyb3VwOiB0aGlzLmxvZ0dyb3VwLFxuICAgICAgICBzdHJlYW1QcmVmaXg6IHRoaXMuc3RyZWFtUHJlZml4LFxuICAgICAgfSksXG4gICAgfTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTG9nRXh0ZW5zaW9uIGV4dGVuZHMgU2VydmljZUV4dGVuc2lvbiB7XG4gIHNjb3BlOiBDb25zdHJ1Y3Q7XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCkge1xuICAgIHN1cGVyKCdsb2ctZ3JvdXAtZXh0ZW5zaW9uJyk7XG4gICAgdGhpcy5zY29wZSA9IHNjb3BlO1xuICB9XG5cbiAgcHVibGljIGFkZEhvb2tzKCkge1xuICAgIGNvbnN0IGxvZ0dyb3VwID0gbmV3IExvZ0dyb3VwKHRoaXMuc2NvcGUsIGAke3RoaXMucGFyZW50U2VydmljZS5pZH0tbG9nc2AsIHtcbiAgICAgIHJlbW92YWxQb2xpY3k6IFJlbW92YWxQb2xpY3kuREVTVFJPWSxcbiAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfTU9OVEgsXG4gICAgfSk7XG5cbiAgICAvLyBhZGQgdGhpcyBob29rIHRvIHRoZSBtYWluIHNlcnZpY2UgY29udGFpbmVyIGFuZCBhbGwgY29udGFpbmVycyBhZGRlZCBieSBvdXIgZXh0cmEgY29udGFpbmVyIGV4dGVuc2lvblxuICAgIE9iamVjdC5lbnRyaWVzKHRoaXMucGFyZW50U2VydmljZS5zZXJ2aWNlRGVzY3JpcHRpb24uZXh0ZW5zaW9ucylcbiAgICAgIC5maWx0ZXIoXG4gICAgICAgIChba2V5XSkgPT5cbiAgICAgICAgICBrZXkgPT09ICdzZXJ2aWNlLWNvbnRhaW5lcicgfHxcbiAgICAgICAgICBrZXkuZW5kc1dpdGgoJy1leHRyYS1jb250YWluZXItZXh0ZW5zaW9uJyksXG4gICAgICApXG4gICAgICAuZm9yRWFjaCgoW18sIGV4dGVuc2lvbl0pID0+XG4gICAgICAgIGV4dGVuc2lvbi5hZGRDb250YWluZXJNdXRhdGluZ0hvb2soXG4gICAgICAgICAgbmV3IEFkZExvZ2dpbmdIb29rKGxvZ0dyb3VwLCB0aGlzLnBhcmVudFNlcnZpY2UuaWQpLFxuICAgICAgICApLFxuICAgICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { ServiceExtension } from '@aws-cdk-containers/ecs-service-extensions';
|
|
2
|
+
import { TaskDefinitionProps } from 'aws-cdk-lib/aws-ecs';
|
|
3
|
+
export interface ResourceAccessExtensionProps {
|
|
4
|
+
arn: string;
|
|
5
|
+
actions: Array<string>;
|
|
6
|
+
resources: Array<string>;
|
|
7
|
+
}
|
|
8
|
+
export declare class ResourceAccessExtension extends ServiceExtension {
|
|
9
|
+
readonly props: ResourceAccessExtensionProps;
|
|
10
|
+
readonly policyName: string;
|
|
11
|
+
constructor(name: string, props: ResourceAccessExtensionProps);
|
|
12
|
+
modifyTaskDefinitionProps(props: TaskDefinitionProps): TaskDefinitionProps;
|
|
13
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ResourceAccessExtension = void 0;
|
|
4
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
5
|
+
const iam = require("aws-cdk-lib/aws-iam");
|
|
6
|
+
class ResourceAccessExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
7
|
+
constructor(name, props) {
|
|
8
|
+
super(`${name}-resource-access-extension`);
|
|
9
|
+
this.props = props;
|
|
10
|
+
this.policyName = name;
|
|
11
|
+
}
|
|
12
|
+
modifyTaskDefinitionProps(props) {
|
|
13
|
+
const role = props.taskRole ??
|
|
14
|
+
new iam.Role(this.scope, 'TaskRole', {
|
|
15
|
+
assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'),
|
|
16
|
+
});
|
|
17
|
+
role.attachInlinePolicy(new iam.Policy(this.scope, this.policyName, {
|
|
18
|
+
statements: [
|
|
19
|
+
new iam.PolicyStatement({
|
|
20
|
+
actions: this.props.actions,
|
|
21
|
+
resources: this.props.resources,
|
|
22
|
+
}),
|
|
23
|
+
],
|
|
24
|
+
}));
|
|
25
|
+
return {
|
|
26
|
+
...props,
|
|
27
|
+
taskRole: role,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
exports.ResourceAccessExtension = ResourceAccessExtension;
|
|
32
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUzNCdWNrZXRBY2Nlc3NFeHRlbnNpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9TM0J1Y2tldEFjY2Vzc0V4dGVuc2lvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx1RkFBOEU7QUFFOUUsMkNBQTJDO0FBUTNDLE1BQWEsdUJBQXdCLFNBQVEseUNBQWdCO0lBSTNELFlBQVksSUFBWSxFQUFFLEtBQW1DO1FBQzNELEtBQUssQ0FBQyxHQUFHLElBQUksNEJBQTRCLENBQUMsQ0FBQztRQUMzQyxJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQztJQUN6QixDQUFDO0lBRUQseUJBQXlCLENBQUMsS0FBMEI7UUFDbEQsTUFBTSxJQUFJLEdBQ1IsS0FBSyxDQUFDLFFBQVE7WUFDZCxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRSxVQUFVLEVBQUU7Z0JBQ25DLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQzthQUMvRCxDQUFDLENBQUM7UUFFTCxJQUFJLENBQUMsa0JBQWtCLENBQ3JCLElBQUksR0FBRyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDMUMsVUFBVSxFQUFFO2dCQUNWLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQztvQkFDdEIsT0FBTyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTztvQkFDM0IsU0FBUyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUztpQkFDaEMsQ0FBQzthQUNIO1NBQ0YsQ0FBQyxDQUNILENBQUM7UUFFRixPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsUUFBUSxFQUFFLElBQUk7U0FDZixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBakNELDBEQWlDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFNlcnZpY2VFeHRlbnNpb24gfSBmcm9tICdAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnMnO1xuaW1wb3J0IHsgVGFza0RlZmluaXRpb25Qcm9wcyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xuXG5leHBvcnQgaW50ZXJmYWNlIFJlc291cmNlQWNjZXNzRXh0ZW5zaW9uUHJvcHMge1xuICBhcm46IHN0cmluZztcbiAgYWN0aW9uczogQXJyYXk8c3RyaW5nPjtcbiAgcmVzb3VyY2VzOiBBcnJheTxzdHJpbmc+O1xufVxuXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VBY2Nlc3NFeHRlbnNpb24gZXh0ZW5kcyBTZXJ2aWNlRXh0ZW5zaW9uIHtcbiAgcmVhZG9ubHkgcHJvcHM6IFJlc291cmNlQWNjZXNzRXh0ZW5zaW9uUHJvcHM7XG4gIHJlYWRvbmx5IHBvbGljeU5hbWU6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihuYW1lOiBzdHJpbmcsIHByb3BzOiBSZXNvdXJjZUFjY2Vzc0V4dGVuc2lvblByb3BzKSB7XG4gICAgc3VwZXIoYCR7bmFtZX0tcmVzb3VyY2UtYWNjZXNzLWV4dGVuc2lvbmApO1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLnBvbGljeU5hbWUgPSBuYW1lO1xuICB9XG5cbiAgbW9kaWZ5VGFza0RlZmluaXRpb25Qcm9wcyhwcm9wczogVGFza0RlZmluaXRpb25Qcm9wcyk6IFRhc2tEZWZpbml0aW9uUHJvcHMge1xuICAgIGNvbnN0IHJvbGUgPVxuICAgICAgcHJvcHMudGFza1JvbGUgPz9cbiAgICAgIG5ldyBpYW0uUm9sZSh0aGlzLnNjb3BlLCAnVGFza1JvbGUnLCB7XG4gICAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlY3MtdGFza3MuYW1hem9uYXdzLmNvbScpLFxuICAgICAgfSk7XG5cbiAgICByb2xlLmF0dGFjaElubGluZVBvbGljeShcbiAgICAgIG5ldyBpYW0uUG9saWN5KHRoaXMuc2NvcGUsIHRoaXMucG9saWN5TmFtZSwge1xuICAgICAgICBzdGF0ZW1lbnRzOiBbXG4gICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xuICAgICAgICAgICAgYWN0aW9uczogdGhpcy5wcm9wcy5hY3Rpb25zLFxuICAgICAgICAgICAgcmVzb3VyY2VzOiB0aGlzLnByb3BzLnJlc291cmNlcyxcbiAgICAgICAgICB9KSxcbiAgICAgICAgXSxcbiAgICAgIH0pLFxuICAgICk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICB0YXNrUm9sZTogcm9sZSxcbiAgICB9O1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ServiceExtension } from '@aws-cdk-containers/ecs-service-extensions';
|
|
2
|
+
export interface TcpKeepAliveExtensionProps {
|
|
3
|
+
readonly time: number;
|
|
4
|
+
readonly interval: number;
|
|
5
|
+
readonly probes: number;
|
|
6
|
+
}
|
|
7
|
+
export declare class TcpKeepAliveExtension extends ServiceExtension {
|
|
8
|
+
readonly props: TcpKeepAliveExtensionProps;
|
|
9
|
+
constructor(props?: TcpKeepAliveExtensionProps);
|
|
10
|
+
addHooks(): void;
|
|
11
|
+
}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var _a;
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.TcpKeepAliveExtension = void 0;
|
|
5
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
+
const ecs_service_extensions_1 = require("@aws-cdk-containers/ecs-service-extensions");
|
|
7
|
+
class AddSystemControlsHook extends ecs_service_extensions_1.ContainerMutatingHook {
|
|
8
|
+
constructor(props) {
|
|
9
|
+
super();
|
|
10
|
+
this.props = props;
|
|
11
|
+
}
|
|
12
|
+
mutateContainerDefinition(props) {
|
|
13
|
+
return {
|
|
14
|
+
...props,
|
|
15
|
+
systemControls: [
|
|
16
|
+
{
|
|
17
|
+
namespace: 'net.ipv4.tcp_keepalive_time',
|
|
18
|
+
value: this.props.time.toString(),
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
namespace: 'net.ipv4.tcp_keepalive_intvl',
|
|
22
|
+
value: this.props.interval.toString(),
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
namespace: 'net.ipv4.tcp_keepalive_probes',
|
|
26
|
+
value: this.props.probes.toString(),
|
|
27
|
+
},
|
|
28
|
+
],
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
class TcpKeepAliveExtension extends ecs_service_extensions_1.ServiceExtension {
|
|
33
|
+
constructor(props) {
|
|
34
|
+
super('tcp-keepalive-extension');
|
|
35
|
+
if (props) {
|
|
36
|
+
this.props = props;
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
this.props = {
|
|
40
|
+
time: 200,
|
|
41
|
+
interval: 200,
|
|
42
|
+
probes: 5,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
addHooks() {
|
|
47
|
+
// add this hook to the main service container and all containers added by our extra container extension
|
|
48
|
+
Object.entries(this.parentService.serviceDescription.extensions)
|
|
49
|
+
.filter(([key]) => key === 'service-container' ||
|
|
50
|
+
key.endsWith('-extra-container-extension'))
|
|
51
|
+
.forEach(([_, extension]) => {
|
|
52
|
+
extension.addContainerMutatingHook(new AddSystemControlsHook(this.props));
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.TcpKeepAliveExtension = TcpKeepAliveExtension;
|
|
57
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
58
|
+
TcpKeepAliveExtension[_a] = { fqn: "@btc-embedded/cdk-extensions.TcpKeepAliveExtension", version: "0.0.0-alpha.0" };
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGNwS2VlcEFsaXZlRXh0ZW5zaW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2V4dGVuc2lvbnMvVGNwS2VlcEFsaXZlRXh0ZW5zaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsdUZBR29EO0FBU3BELE1BQU0scUJBQXNCLFNBQVEsOENBQXFCO0lBQ3ZELFlBQW9CLEtBQWlDO1FBQ25ELEtBQUssRUFBRSxDQUFDO1FBRFUsVUFBSyxHQUFMLEtBQUssQ0FBNEI7SUFFckQsQ0FBQztJQUVELHlCQUF5QixDQUN2QixLQUFxQztRQUVyQyxPQUFPO1lBQ0wsR0FBRyxLQUFLO1lBQ1IsY0FBYyxFQUFFO2dCQUNkO29CQUNFLFNBQVMsRUFBRSw2QkFBNkI7b0JBQ3hDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUU7aUJBQ2xDO2dCQUNEO29CQUNFLFNBQVMsRUFBRSw4QkFBOEI7b0JBQ3pDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7aUJBQ3RDO2dCQUNEO29CQUNFLFNBQVMsRUFBRSwrQkFBK0I7b0JBQzFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUU7aUJBQ3BDO2FBQ0Y7U0FDRixDQUFDO0lBQ0osQ0FBQztDQUNGO0FBRUQsTUFBYSxxQkFBc0IsU0FBUSx5Q0FBZ0I7SUFHekQsWUFBWSxLQUFrQztRQUM1QyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQztRQUVqQyxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ1YsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsS0FBSyxHQUFHO2dCQUNYLElBQUksRUFBRSxHQUFHO2dCQUNULFFBQVEsRUFBRSxHQUFHO2dCQUNiLE1BQU0sRUFBRSxDQUFDO2FBQ1YsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRU0sUUFBUTtRQUNiLHdHQUF3RztRQUN4RyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsa0JBQWtCLENBQUMsVUFBVSxDQUFDO2FBQzdELE1BQU0sQ0FDTCxDQUFDLENBQUMsR0FBRyxDQUFDLEVBQUUsRUFBRSxDQUNSLEdBQUcsS0FBSyxtQkFBbUI7WUFDM0IsR0FBRyxDQUFDLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxDQUM3QzthQUNBLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLFNBQVMsQ0FBQyxFQUFFLEVBQUU7WUFDMUIsU0FBUyxDQUFDLHdCQUF3QixDQUNoQyxJQUFJLHFCQUFxQixDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FDdEMsQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQzs7QUE5Qkgsc0RBK0JDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ29udGFpbmVyTXV0YXRpbmdIb29rLFxuICBTZXJ2aWNlRXh0ZW5zaW9uLFxufSBmcm9tICdAYXdzLWNkay1jb250YWluZXJzL2Vjcy1zZXJ2aWNlLWV4dGVuc2lvbnMnO1xuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFRjcEtlZXBBbGl2ZUV4dGVuc2lvblByb3BzIHtcbiAgcmVhZG9ubHkgdGltZTogbnVtYmVyO1xuICByZWFkb25seSBpbnRlcnZhbDogbnVtYmVyO1xuICByZWFkb25seSBwcm9iZXM6IG51bWJlcjtcbn1cblxuY2xhc3MgQWRkU3lzdGVtQ29udHJvbHNIb29rIGV4dGVuZHMgQ29udGFpbmVyTXV0YXRpbmdIb29rIHtcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBwcm9wczogVGNwS2VlcEFsaXZlRXh0ZW5zaW9uUHJvcHMpIHtcbiAgICBzdXBlcigpO1xuICB9XG5cbiAgbXV0YXRlQ29udGFpbmVyRGVmaW5pdGlvbihcbiAgICBwcm9wczogZWNzLkNvbnRhaW5lckRlZmluaXRpb25PcHRpb25zLFxuICApOiBlY3MuQ29udGFpbmVyRGVmaW5pdGlvbk9wdGlvbnMge1xuICAgIHJldHVybiB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIHN5c3RlbUNvbnRyb2xzOiBbXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lc3BhY2U6ICduZXQuaXB2NC50Y3Bfa2VlcGFsaXZlX3RpbWUnLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnByb3BzLnRpbWUudG9TdHJpbmcoKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIG5hbWVzcGFjZTogJ25ldC5pcHY0LnRjcF9rZWVwYWxpdmVfaW50dmwnLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnByb3BzLmludGVydmFsLnRvU3RyaW5nKCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBuYW1lc3BhY2U6ICduZXQuaXB2NC50Y3Bfa2VlcGFsaXZlX3Byb2JlcycsXG4gICAgICAgICAgdmFsdWU6IHRoaXMucHJvcHMucHJvYmVzLnRvU3RyaW5nKCksXG4gICAgICAgIH0sXG4gICAgICBdLFxuICAgIH07XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFRjcEtlZXBBbGl2ZUV4dGVuc2lvbiBleHRlbmRzIFNlcnZpY2VFeHRlbnNpb24ge1xuICByZWFkb25seSBwcm9wczogVGNwS2VlcEFsaXZlRXh0ZW5zaW9uUHJvcHM7XG5cbiAgY29uc3RydWN0b3IocHJvcHM/OiBUY3BLZWVwQWxpdmVFeHRlbnNpb25Qcm9wcykge1xuICAgIHN1cGVyKCd0Y3Ata2VlcGFsaXZlLWV4dGVuc2lvbicpO1xuXG4gICAgaWYgKHByb3BzKSB7XG4gICAgICB0aGlzLnByb3BzID0gcHJvcHM7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucHJvcHMgPSB7XG4gICAgICAgIHRpbWU6IDIwMCxcbiAgICAgICAgaW50ZXJ2YWw6IDIwMCxcbiAgICAgICAgcHJvYmVzOiA1LFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYWRkSG9va3MoKSB7XG4gICAgLy8gYWRkIHRoaXMgaG9vayB0byB0aGUgbWFpbiBzZXJ2aWNlIGNvbnRhaW5lciBhbmQgYWxsIGNvbnRhaW5lcnMgYWRkZWQgYnkgb3VyIGV4dHJhIGNvbnRhaW5lciBleHRlbnNpb25cbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnBhcmVudFNlcnZpY2Uuc2VydmljZURlc2NyaXB0aW9uLmV4dGVuc2lvbnMpXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoW2tleV0pID0+XG4gICAgICAgICAga2V5ID09PSAnc2VydmljZS1jb250YWluZXInIHx8XG4gICAgICAgICAga2V5LmVuZHNXaXRoKCctZXh0cmEtY29udGFpbmVyLWV4dGVuc2lvbicpLFxuICAgICAgKVxuICAgICAgLmZvckVhY2goKFtfLCBleHRlbnNpb25dKSA9PiB7XG4gICAgICAgIGV4dGVuc2lvbi5hZGRDb250YWluZXJNdXRhdGluZ0hvb2soXG4gICAgICAgICAgbmV3IEFkZFN5c3RlbUNvbnRyb2xzSG9vayh0aGlzLnByb3BzKSxcbiAgICAgICAgKTtcbiAgICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,23 @@
|
|
|
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("./ApiGatewayExtension"), exports);
|
|
18
|
+
__exportStar(require("./CloudMapExtension"), exports);
|
|
19
|
+
__exportStar(require("./DocumentDbAccessExtension"), exports);
|
|
20
|
+
__exportStar(require("./ExtraContainerExtension"), exports);
|
|
21
|
+
__exportStar(require("./TcpKeepAliveExtension"), exports);
|
|
22
|
+
__exportStar(require("./ApplicationLoadBalancerExtension"), exports);
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvZXh0ZW5zaW9ucy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsd0RBQXNDO0FBQ3RDLHNEQUFvQztBQUNwQyw4REFBNEM7QUFDNUMsNERBQTBDO0FBQzFDLDBEQUF3QztBQUN4QyxxRUFBbUQiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tICcuL0FwaUdhdGV3YXlFeHRlbnNpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9DbG91ZE1hcEV4dGVuc2lvbic7XG5leHBvcnQgKiBmcm9tICcuL0RvY3VtZW50RGJBY2Nlc3NFeHRlbnNpb24nO1xuZXhwb3J0ICogZnJvbSAnLi9FeHRyYUNvbnRhaW5lckV4dGVuc2lvbic7XG5leHBvcnQgKiBmcm9tICcuL1RjcEtlZXBBbGl2ZUV4dGVuc2lvbic7XG5leHBvcnQgKiBmcm9tICcuL0FwcGxpY2F0aW9uTG9hZEJhbGFuY2VyRXh0ZW5zaW9uJztcbiJdfQ==
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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("./extensions"), exports);
|
|
18
|
+
__exportStar(require("./utils"), exports);
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLCtDQUE2QjtBQUM3QiwwQ0FBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJcbmV4cG9ydCAqIGZyb20gJy4vZXh0ZW5zaW9ucyc7XG5leHBvcnQgKiBmcm9tICcuL3V0aWxzJzsiXX0=
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.importValue = importValue;
|
|
4
|
+
exports.createImporter = createImporter;
|
|
5
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
6
|
+
function importValue(prefix, name) {
|
|
7
|
+
return createImporter(prefix)(name);
|
|
8
|
+
}
|
|
9
|
+
function createImporter(...prefix) {
|
|
10
|
+
return (...parts) => aws_cdk_lib_1.Fn.importValue(`${[...prefix, ...parts].join(':')}`);
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSW1wb3J0VmFsdWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvSW1wb3J0VmFsdWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFFQSxrQ0FFQztBQUVELHdDQUdDO0FBVEQsNkNBQWlDO0FBRWpDLFNBQWdCLFdBQVcsQ0FBQyxNQUFjLEVBQUUsSUFBWTtJQUN0RCxPQUFPLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLEdBQUcsTUFBZ0I7SUFDaEQsT0FBTyxDQUFDLEdBQUcsS0FBZSxFQUFFLEVBQUUsQ0FDNUIsZ0JBQUUsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLEdBQUcsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUN6RCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRm4gfSBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmV4cG9ydCBmdW5jdGlvbiBpbXBvcnRWYWx1ZShwcmVmaXg6IHN0cmluZywgbmFtZTogc3RyaW5nKSB7XG4gIHJldHVybiBjcmVhdGVJbXBvcnRlcihwcmVmaXgpKG5hbWUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlSW1wb3J0ZXIoLi4ucHJlZml4OiBzdHJpbmdbXSkge1xuICByZXR1cm4gKC4uLnBhcnRzOiBzdHJpbmdbXSkgPT5cbiAgICBGbi5pbXBvcnRWYWx1ZShgJHtbLi4ucHJlZml4LCAuLi5wYXJ0c10uam9pbignOicpfWApO1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './ImportValue';
|
|
@@ -0,0 +1,18 @@
|
|
|
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("./ImportValue"), exports);
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGdEQUE4QiIsInNvdXJjZXNDb250ZW50IjpbIlxuZXhwb3J0ICogZnJvbSAnLi9JbXBvcnRWYWx1ZSc7Il19
|