@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.
Files changed (33) hide show
  1. package/.jsii +5062 -0
  2. package/API.md +2468 -0
  3. package/LICENSE +202 -0
  4. package/README.md +1 -0
  5. package/lib/extensions/ApiGatewayExtension.d.ts +12 -0
  6. package/lib/extensions/ApiGatewayExtension.js +65 -0
  7. package/lib/extensions/ApplicationLoadBalancerExtension.d.ts +25 -0
  8. package/lib/extensions/ApplicationLoadBalancerExtension.js +103 -0
  9. package/lib/extensions/CloudMapExtension.d.ts +16 -0
  10. package/lib/extensions/CloudMapExtension.js +83 -0
  11. package/lib/extensions/DocumentDbAccessExtension.d.ts +12 -0
  12. package/lib/extensions/DocumentDbAccessExtension.js +51 -0
  13. package/lib/extensions/DomainEventMessagingExtension.d.ts +22 -0
  14. package/lib/extensions/DomainEventMessagingExtension.js +77 -0
  15. package/lib/extensions/ExtraContainerExtension.d.ts +29 -0
  16. package/lib/extensions/ExtraContainerExtension.js +61 -0
  17. package/lib/extensions/ImportValue.d.ts +2 -0
  18. package/lib/extensions/ImportValue.js +12 -0
  19. package/lib/extensions/LogExtension.d.ts +7 -0
  20. package/lib/extensions/LogExtension.js +42 -0
  21. package/lib/extensions/S3BucketAccessExtension.d.ts +13 -0
  22. package/lib/extensions/S3BucketAccessExtension.js +32 -0
  23. package/lib/extensions/TcpKeepAliveExtension.d.ts +11 -0
  24. package/lib/extensions/TcpKeepAliveExtension.js +59 -0
  25. package/lib/extensions/index.d.ts +6 -0
  26. package/lib/extensions/index.js +23 -0
  27. package/lib/index.d.ts +2 -0
  28. package/lib/index.js +19 -0
  29. package/lib/utils/ImportValue.d.ts +2 -0
  30. package/lib/utils/ImportValue.js +12 -0
  31. package/lib/utils/index.d.ts +1 -0
  32. package/lib/utils/index.js +18 -0
  33. 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,2 @@
1
+ export declare function importValue(prefix: string, name: string): string;
2
+ export declare function createImporter(...prefix: string[]): (...parts: string[]) => string;
@@ -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,7 @@
1
+ import { ServiceExtension } from '@aws-cdk-containers/ecs-service-extensions';
2
+ import { Construct } from 'constructs';
3
+ export declare class LogExtension extends ServiceExtension {
4
+ scope: Construct;
5
+ constructor(scope: Construct);
6
+ addHooks(): void;
7
+ }
@@ -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,6 @@
1
+ export * from './ApiGatewayExtension';
2
+ export * from './CloudMapExtension';
3
+ export * from './DocumentDbAccessExtension';
4
+ export * from './ExtraContainerExtension';
5
+ export * from './TcpKeepAliveExtension';
6
+ export * from './ApplicationLoadBalancerExtension';
@@ -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
@@ -0,0 +1,2 @@
1
+ export * from './extensions';
2
+ export * from './utils';
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,2 @@
1
+ export declare function importValue(prefix: string, name: string): string;
2
+ export declare function createImporter(...prefix: string[]): (...parts: string[]) => string;
@@ -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