@aws-mdaa/ecs-constructs 1.2.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 +5520 -0
- package/README.md +19 -0
- package/lib/cluster.d.ts +50 -0
- package/lib/cluster.js +53 -0
- package/lib/container-definition.d.ts +208 -0
- package/lib/container-definition.js +71 -0
- package/lib/fargate-service.d.ts +69 -0
- package/lib/fargate-service.js +58 -0
- package/lib/index.d.ts +7 -0
- package/lib/index.js +26 -0
- package/package.json +86 -0
package/README.md
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# Construct Overview
|
|
2
|
+
|
|
3
|
+
Opinionated implementation of the Layer 2 CDK Constructs.
|
|
4
|
+
|
|
5
|
+
## Security/Compliance
|
|
6
|
+
|
|
7
|
+
### ECS Clusters
|
|
8
|
+
* Enforce Cluster Name
|
|
9
|
+
* Enforces KMS CMK encryption at rest
|
|
10
|
+
* Enforces container insights
|
|
11
|
+
* Enforces CloudWatch logging
|
|
12
|
+
|
|
13
|
+
### Fargate Services
|
|
14
|
+
* Enforce Fargate Name
|
|
15
|
+
* Enforces non-public IP
|
|
16
|
+
|
|
17
|
+
### Container Definitions
|
|
18
|
+
* Enforce Definition Name
|
|
19
|
+
* Enforces CloudWatch logging
|
package/lib/cluster.d.ts
ADDED
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MdaaConstructProps } from '@aws-mdaa/construct';
|
|
6
|
+
import { IVpc } from 'aws-cdk-lib/aws-ec2';
|
|
7
|
+
import { AddCapacityOptions, CloudMapNamespaceOptions, Cluster } from 'aws-cdk-lib/aws-ecs';
|
|
8
|
+
import { IKey } from 'aws-cdk-lib/aws-kms';
|
|
9
|
+
import { ILogGroup } from 'aws-cdk-lib/aws-logs';
|
|
10
|
+
import { Construct } from 'constructs';
|
|
11
|
+
/**
|
|
12
|
+
* Properties for creating a Compliance ECS cluster
|
|
13
|
+
*/
|
|
14
|
+
export interface MdaaECSClusterProps extends MdaaConstructProps {
|
|
15
|
+
readonly clusterName?: string;
|
|
16
|
+
/**
|
|
17
|
+
* Q-ENHANCED-PROPERTY
|
|
18
|
+
* Required VPC for ECS cluster deployment providing network isolation and security controls for containerized applications. Defines the network environment where ECS instances and ENIs will be deployed for secure container networking and connectivity.
|
|
19
|
+
*
|
|
20
|
+
* Use cases: Network isolation; VPC integration; Secure networking; Container connectivity
|
|
21
|
+
*
|
|
22
|
+
* AWS: Amazon VPC for ECS cluster network isolation and secure container deployment
|
|
23
|
+
*
|
|
24
|
+
* Validation: Must be valid IVpc interface; required for ECS cluster network deployment and security
|
|
25
|
+
* * See: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.IVpc.html
|
|
26
|
+
**/
|
|
27
|
+
readonly vpc: IVpc;
|
|
28
|
+
readonly defaultCloudMapNamespace?: CloudMapNamespaceOptions;
|
|
29
|
+
/**
|
|
30
|
+
* Q-ENHANCED-PROPERTY
|
|
31
|
+
* Optional EC2 capacity configuration for ECS cluster compute resources enabling container hosting and scaling capabilities. Provides EC2-based compute capacity for container workloads with auto-scaling and resource management capabilities.
|
|
32
|
+
*
|
|
33
|
+
* Use cases: EC2 capacity; Container hosting; Compute scaling; Resource management
|
|
34
|
+
*
|
|
35
|
+
* AWS: Amazon EC2 capacity for ECS cluster compute resources and container hosting
|
|
36
|
+
*
|
|
37
|
+
* Validation: Must be valid AddCapacityOptions if provided; enables EC2-based container compute capacity
|
|
38
|
+
* **/
|
|
39
|
+
readonly capacity?: AddCapacityOptions;
|
|
40
|
+
readonly enableFargateCapacityProviders?: boolean;
|
|
41
|
+
readonly kmsKey: IKey;
|
|
42
|
+
readonly logGroup: ILogGroup;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* A construct for creating a compliant ECS cluster resource.
|
|
46
|
+
*/
|
|
47
|
+
export declare class MdaaECSCluster extends Cluster {
|
|
48
|
+
private static setProps;
|
|
49
|
+
constructor(scope: Construct, id: string, props: MdaaECSClusterProps);
|
|
50
|
+
}
|
package/lib/cluster.js
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var _a;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MdaaECSCluster = void 0;
|
|
10
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
11
|
+
|
|
12
|
+
const construct_1 = require("@aws-mdaa/construct"); //NOSONAR
|
|
13
|
+
const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
|
|
14
|
+
/**
|
|
15
|
+
* A construct for creating a compliant ECS cluster resource.
|
|
16
|
+
*/
|
|
17
|
+
class MdaaECSCluster extends aws_ecs_1.Cluster {
|
|
18
|
+
static setProps(props) {
|
|
19
|
+
const overrideProps = {
|
|
20
|
+
clusterName: props.naming.resourceName(props.clusterName, 255),
|
|
21
|
+
containerInsights: true,
|
|
22
|
+
executeCommandConfiguration: {
|
|
23
|
+
kmsKey: props.kmsKey,
|
|
24
|
+
logConfiguration: {
|
|
25
|
+
cloudWatchEncryptionEnabled: true,
|
|
26
|
+
cloudWatchLogGroup: props.logGroup,
|
|
27
|
+
},
|
|
28
|
+
logging: aws_ecs_1.ExecuteCommandLogging.OVERRIDE,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
const allProps = {
|
|
32
|
+
...props,
|
|
33
|
+
...overrideProps,
|
|
34
|
+
};
|
|
35
|
+
return allProps;
|
|
36
|
+
}
|
|
37
|
+
constructor(scope, id, props) {
|
|
38
|
+
super(scope, id, MdaaECSCluster.setProps(props));
|
|
39
|
+
new construct_1.MdaaParamAndOutput(this, {
|
|
40
|
+
...{
|
|
41
|
+
resourceType: 'cluster',
|
|
42
|
+
resourceId: props.clusterName,
|
|
43
|
+
name: 'arn',
|
|
44
|
+
value: this.clusterArn,
|
|
45
|
+
},
|
|
46
|
+
...props,
|
|
47
|
+
}, scope);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.MdaaECSCluster = MdaaECSCluster;
|
|
51
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
52
|
+
MdaaECSCluster[_a] = { fqn: "@aws-mdaa/ecs-constructs.MdaaECSCluster", version: "1.2.0" };
|
|
53
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbImNsdXN0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7O0dBR0c7QUFFSCxtREFBNkUsQ0FBQyxTQUFTO0FBRXZGLGlEQU02QjtBQXVDN0I7O0dBRUc7QUFDSCxNQUFhLGNBQWUsU0FBUSxpQkFBTztJQUNqQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQTBCO1FBQ2hELE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztZQUM5RCxpQkFBaUIsRUFBRSxJQUFJO1lBQ3ZCLDJCQUEyQixFQUFFO2dCQUMzQixNQUFNLEVBQUUsS0FBSyxDQUFDLE1BQU07Z0JBQ3BCLGdCQUFnQixFQUFFO29CQUNoQiwyQkFBMkIsRUFBRSxJQUFJO29CQUNqQyxrQkFBa0IsRUFBRSxLQUFLLENBQUMsUUFBUTtpQkFDbkM7Z0JBQ0QsT0FBTyxFQUFFLCtCQUFxQixDQUFDLFFBQVE7YUFDeEM7U0FDRixDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQWlCO1lBQzdCLEdBQUcsS0FBSztZQUNSLEdBQUcsYUFBYTtTQUNqQixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBMEI7UUFDbEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsY0FBYyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRWpELElBQUksOEJBQWtCLENBQ3BCLElBQUksRUFDSjtZQUNFLEdBQUc7Z0JBQ0QsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLFVBQVUsRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDN0IsSUFBSSxFQUFFLEtBQUs7Z0JBQ1gsS0FBSyxFQUFFLElBQUksQ0FBQyxVQUFVO2FBQ3ZCO1lBQ0QsR0FBRyxLQUFLO1NBQ1QsRUFDRCxLQUFLLENBQ04sQ0FBQztJQUNKLENBQUM7O0FBckNILHdDQXNDQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIVxuICogQ29weXJpZ2h0IEFtYXpvbi5jb20sIEluYy4gb3IgaXRzIGFmZmlsaWF0ZXMuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQXBhY2hlLTIuMFxuICovXG5cbmltcG9ydCB7IE1kYWFDb25zdHJ1Y3RQcm9wcywgTWRhYVBhcmFtQW5kT3V0cHV0IH0gZnJvbSAnQGF3cy1tZGFhL2NvbnN0cnVjdCc7IC8vTk9TT05BUlxuaW1wb3J0IHsgSVZwYyB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xuaW1wb3J0IHtcbiAgQWRkQ2FwYWNpdHlPcHRpb25zLFxuICBDbG91ZE1hcE5hbWVzcGFjZU9wdGlvbnMsXG4gIENsdXN0ZXIsXG4gIENsdXN0ZXJQcm9wcyxcbiAgRXhlY3V0ZUNvbW1hbmRMb2dnaW5nLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IElLZXkgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mta21zJztcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgQ29tcGxpYW5jZSBFQ1MgY2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIE1kYWFFQ1NDbHVzdGVyUHJvcHMgZXh0ZW5kcyBNZGFhQ29uc3RydWN0UHJvcHMge1xuICByZWFkb25seSBjbHVzdGVyTmFtZT86IHN0cmluZztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgVlBDIGZvciBFQ1MgY2x1c3RlciBkZXBsb3ltZW50IHByb3ZpZGluZyBuZXR3b3JrIGlzb2xhdGlvbiBhbmQgc2VjdXJpdHkgY29udHJvbHMgZm9yIGNvbnRhaW5lcml6ZWQgYXBwbGljYXRpb25zLiBEZWZpbmVzIHRoZSBuZXR3b3JrIGVudmlyb25tZW50IHdoZXJlIEVDUyBpbnN0YW5jZXMgYW5kIEVOSXMgd2lsbCBiZSBkZXBsb3llZCBmb3Igc2VjdXJlIGNvbnRhaW5lciBuZXR3b3JraW5nIGFuZCBjb25uZWN0aXZpdHkuXG4gICAqXG4gICAqIFVzZSBjYXNlczogTmV0d29yayBpc29sYXRpb247IFZQQyBpbnRlZ3JhdGlvbjsgU2VjdXJlIG5ldHdvcmtpbmc7IENvbnRhaW5lciBjb25uZWN0aXZpdHlcbiAgICpcbiAgICogQVdTOiBBbWF6b24gVlBDIGZvciBFQ1MgY2x1c3RlciBuZXR3b3JrIGlzb2xhdGlvbiBhbmQgc2VjdXJlIGNvbnRhaW5lciBkZXBsb3ltZW50XG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgdmFsaWQgSVZwYyBpbnRlcmZhY2U7IHJlcXVpcmVkIGZvciBFQ1MgY2x1c3RlciBuZXR3b3JrIGRlcGxveW1lbnQgYW5kIHNlY3VyaXR5XG4gICAqICAgKiBTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5JVnBjLmh0bWxcbiAgICoqL1xuICByZWFkb25seSB2cGM6IElWcGM7XG4gIHJlYWRvbmx5IGRlZmF1bHRDbG91ZE1hcE5hbWVzcGFjZT86IENsb3VkTWFwTmFtZXNwYWNlT3B0aW9ucztcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgRUMyIGNhcGFjaXR5IGNvbmZpZ3VyYXRpb24gZm9yIEVDUyBjbHVzdGVyIGNvbXB1dGUgcmVzb3VyY2VzIGVuYWJsaW5nIGNvbnRhaW5lciBob3N0aW5nIGFuZCBzY2FsaW5nIGNhcGFiaWxpdGllcy4gUHJvdmlkZXMgRUMyLWJhc2VkIGNvbXB1dGUgY2FwYWNpdHkgZm9yIGNvbnRhaW5lciB3b3JrbG9hZHMgd2l0aCBhdXRvLXNjYWxpbmcgYW5kIHJlc291cmNlIG1hbmFnZW1lbnQgY2FwYWJpbGl0aWVzLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEVDMiBjYXBhY2l0eTsgQ29udGFpbmVyIGhvc3Rpbmc7IENvbXB1dGUgc2NhbGluZzsgUmVzb3VyY2UgbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IEFtYXpvbiBFQzIgY2FwYWNpdHkgZm9yIEVDUyBjbHVzdGVyIGNvbXB1dGUgcmVzb3VyY2VzIGFuZCBjb250YWluZXIgaG9zdGluZ1xuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIHZhbGlkIEFkZENhcGFjaXR5T3B0aW9ucyBpZiBwcm92aWRlZDsgZW5hYmxlcyBFQzItYmFzZWQgY29udGFpbmVyIGNvbXB1dGUgY2FwYWNpdHlcbiAgICogICAqKi9cbiAgcmVhZG9ubHkgY2FwYWNpdHk/OiBBZGRDYXBhY2l0eU9wdGlvbnM7XG4gIHJlYWRvbmx5IGVuYWJsZUZhcmdhdGVDYXBhY2l0eVByb3ZpZGVycz86IGJvb2xlYW47XG4gIHJlYWRvbmx5IGttc0tleTogSUtleTtcbiAgcmVhZG9ubHkgbG9nR3JvdXA6IElMb2dHcm91cDtcbn1cblxuLyoqXG4gKiBBIGNvbnN0cnVjdCBmb3IgY3JlYXRpbmcgYSBjb21wbGlhbnQgRUNTIGNsdXN0ZXIgcmVzb3VyY2UuXG4gKi9cbmV4cG9ydCBjbGFzcyBNZGFhRUNTQ2x1c3RlciBleHRlbmRzIENsdXN0ZXIge1xuICBwcml2YXRlIHN0YXRpYyBzZXRQcm9wcyhwcm9wczogTWRhYUVDU0NsdXN0ZXJQcm9wcyk6IENsdXN0ZXJQcm9wcyB7XG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHtcbiAgICAgIGNsdXN0ZXJOYW1lOiBwcm9wcy5uYW1pbmcucmVzb3VyY2VOYW1lKHByb3BzLmNsdXN0ZXJOYW1lLCAyNTUpLFxuICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXG4gICAgICBleGVjdXRlQ29tbWFuZENvbmZpZ3VyYXRpb246IHtcbiAgICAgICAga21zS2V5OiBwcm9wcy5rbXNLZXksXG4gICAgICAgIGxvZ0NvbmZpZ3VyYXRpb246IHtcbiAgICAgICAgICBjbG91ZFdhdGNoRW5jcnlwdGlvbkVuYWJsZWQ6IHRydWUsXG4gICAgICAgICAgY2xvdWRXYXRjaExvZ0dyb3VwOiBwcm9wcy5sb2dHcm91cCxcbiAgICAgICAgfSxcbiAgICAgICAgbG9nZ2luZzogRXhlY3V0ZUNvbW1hbmRMb2dnaW5nLk9WRVJSSURFLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IGFsbFByb3BzOiBDbHVzdGVyUHJvcHMgPSB7XG4gICAgICAuLi5wcm9wcyxcbiAgICAgIC4uLm92ZXJyaWRlUHJvcHMsXG4gICAgfTtcbiAgICByZXR1cm4gYWxsUHJvcHM7XG4gIH1cblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogTWRhYUVDU0NsdXN0ZXJQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwgTWRhYUVDU0NsdXN0ZXIuc2V0UHJvcHMocHJvcHMpKTtcblxuICAgIG5ldyBNZGFhUGFyYW1BbmRPdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAge1xuICAgICAgICAuLi57XG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnY2x1c3RlcicsXG4gICAgICAgICAgcmVzb3VyY2VJZDogcHJvcHMuY2x1c3Rlck5hbWUsXG4gICAgICAgICAgbmFtZTogJ2FybicsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuY2x1c3RlckFybixcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICB9LFxuICAgICAgc2NvcGUsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MdaaConstructProps } from '@aws-mdaa/construct';
|
|
6
|
+
import { Duration } from 'aws-cdk-lib';
|
|
7
|
+
import { ContainerDefinition, ContainerImage, EnvironmentFile, HealthCheck, LinuxParameters, PortMapping, Secret, SystemControl, TaskDefinition, Ulimit } from 'aws-cdk-lib/aws-ecs';
|
|
8
|
+
import { ILogGroup } from 'aws-cdk-lib/aws-logs';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
10
|
+
/**
|
|
11
|
+
* Properties for creating a Compliance ECS containerdefinition
|
|
12
|
+
*/
|
|
13
|
+
export interface MdaaECSContainerDefinitionProps extends MdaaConstructProps {
|
|
14
|
+
readonly taskDefinition: TaskDefinition;
|
|
15
|
+
readonly image: ContainerImage;
|
|
16
|
+
readonly containerName?: string;
|
|
17
|
+
/**
|
|
18
|
+
* Q-ENHANCED-PROPERTY
|
|
19
|
+
* Optional command array for container execution overriding the default CMD built into the container image. Provides custom command execution for container startup and application initialization with proper command-line argument handling.
|
|
20
|
+
*
|
|
21
|
+
* Use cases: Custom command execution; Application startup; Command override; Container initialization
|
|
22
|
+
*
|
|
23
|
+
* AWS: Docker container command for custom execution and application startup configuration
|
|
24
|
+
*
|
|
25
|
+
* Validation: Must be array of command strings if provided; overrides container image CMD when specified
|
|
26
|
+
**/
|
|
27
|
+
readonly command?: string[];
|
|
28
|
+
readonly cpu?: number;
|
|
29
|
+
readonly disableNetworking?: boolean;
|
|
30
|
+
readonly dnsSearchDomains?: string[];
|
|
31
|
+
readonly dnsServers?: string[];
|
|
32
|
+
readonly dockerLabels?: {
|
|
33
|
+
[key: string]: string;
|
|
34
|
+
};
|
|
35
|
+
readonly dockerSecurityOptions?: string[];
|
|
36
|
+
readonly entryPoint?: string[];
|
|
37
|
+
/**
|
|
38
|
+
* Q-ENHANCED-PROPERTY
|
|
39
|
+
* Optional environment variables map for container configuration enabling application configuration and runtime parameter passing. Provides environment variables for container applications with secure configuration management and runtime customization.
|
|
40
|
+
*
|
|
41
|
+
* Use cases: Application configuration; Runtime parameters; Environment setup; Configuration management
|
|
42
|
+
*
|
|
43
|
+
* AWS: Container environment variables for application configuration and runtime parameter management
|
|
44
|
+
*
|
|
45
|
+
* Validation: Must be object with string keys and values if provided; enables application configuration
|
|
46
|
+
* **/
|
|
47
|
+
readonly environment?: {
|
|
48
|
+
[key: string]: string;
|
|
49
|
+
};
|
|
50
|
+
readonly environmentFiles?: EnvironmentFile[];
|
|
51
|
+
readonly secrets?: {
|
|
52
|
+
[key: string]: Secret;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Time duration (in seconds) to wait before giving up on resolving dependencies for a container.
|
|
56
|
+
* @default - none
|
|
57
|
+
*/
|
|
58
|
+
readonly startTimeout?: Duration;
|
|
59
|
+
/**
|
|
60
|
+
* Time duration (in seconds) to wait before the container is forcefully killed if it doesn't exit normally on its own.
|
|
61
|
+
* @default - none
|
|
62
|
+
*/
|
|
63
|
+
readonly stopTimeout?: Duration;
|
|
64
|
+
/**
|
|
65
|
+
* Specifies whether the container is marked essential.
|
|
66
|
+
* If the essential parameter of a container is marked as true, and that container fails
|
|
67
|
+
* or stops for any reason, all other containers that are part of the task are stopped.
|
|
68
|
+
* If the essential parameter of a container is marked as false, then its failure does not
|
|
69
|
+
* affect the rest of the containers in a task. All tasks must have at least one essential container.
|
|
70
|
+
* If this parameter is omitted, a container is assumed to be essential.
|
|
71
|
+
* @default true
|
|
72
|
+
*/
|
|
73
|
+
readonly essential?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* A list of hostnames and IP address mappings to append to the /etc/hosts file on the container.
|
|
76
|
+
* @default - No extra hosts.
|
|
77
|
+
*/
|
|
78
|
+
readonly extraHosts?: {
|
|
79
|
+
[name: string]: string;
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* The health check command and associated configuration parameters for the container.
|
|
83
|
+
* @default - Health check configuration from container.
|
|
84
|
+
*/
|
|
85
|
+
readonly healthCheck?: HealthCheck;
|
|
86
|
+
/**
|
|
87
|
+
* The hostname to use for your container.
|
|
88
|
+
* @default - Automatic hostname.
|
|
89
|
+
*/
|
|
90
|
+
readonly hostname?: string;
|
|
91
|
+
/**
|
|
92
|
+
* The amount (in MiB) of memory to present to the container.
|
|
93
|
+
* If your container attempts to exceed the allocated memory, the container
|
|
94
|
+
* is terminated.
|
|
95
|
+
* At least one of memoryLimitMiB and memoryReservationMiB is required for non-Fargate services.
|
|
96
|
+
* @default - No memory limit.
|
|
97
|
+
*/
|
|
98
|
+
readonly memoryLimitMiB?: number;
|
|
99
|
+
/**
|
|
100
|
+
* The soft limit (in MiB) of memory to reserve for the container.
|
|
101
|
+
* When system memory is under heavy contention, Docker attempts to keep the
|
|
102
|
+
* container memory to this soft limit. However, your container can consume more
|
|
103
|
+
* memory when it needs to, up to either the hard limit specified with the memory
|
|
104
|
+
* parameter (if applicable), or all of the available memory on the container
|
|
105
|
+
* instance, whichever comes first.
|
|
106
|
+
* At least one of memoryLimitMiB and memoryReservationMiB is required for non-Fargate services.
|
|
107
|
+
* @default - No memory reserved.
|
|
108
|
+
*/
|
|
109
|
+
readonly memoryReservationMiB?: number;
|
|
110
|
+
/**
|
|
111
|
+
* Specifies whether the container is marked as privileged.
|
|
112
|
+
* When this parameter is true, the container is given elevated privileges on the host container instance (similar to the root user).
|
|
113
|
+
* @default false
|
|
114
|
+
*/
|
|
115
|
+
readonly privileged?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* When this parameter is true, the container is given read-only access to its root file system.
|
|
118
|
+
* @default false
|
|
119
|
+
*/
|
|
120
|
+
readonly readonlyRootFilesystem?: boolean;
|
|
121
|
+
/**
|
|
122
|
+
* The user name to use inside the container.
|
|
123
|
+
* @default root
|
|
124
|
+
*/
|
|
125
|
+
readonly user?: string;
|
|
126
|
+
/**
|
|
127
|
+
* The working directory in which to run commands inside the container.
|
|
128
|
+
* @default /
|
|
129
|
+
*/
|
|
130
|
+
readonly workingDirectory?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Linux-specific modifications that are applied to the container, such as Linux kernel capabilities.
|
|
133
|
+
* For more information see [KernelCapabilities](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_KernelCapabilities.html).
|
|
134
|
+
* @default - No Linux parameters.
|
|
135
|
+
*/
|
|
136
|
+
readonly linuxParameters?: LinuxParameters;
|
|
137
|
+
/**
|
|
138
|
+
* The number of GPUs assigned to the container.
|
|
139
|
+
* @default - No GPUs assigned.
|
|
140
|
+
*/
|
|
141
|
+
readonly gpuCount?: number;
|
|
142
|
+
/**
|
|
143
|
+
* The port mappings to add to the container definition.
|
|
144
|
+
* @default - No ports are mapped.
|
|
145
|
+
*/
|
|
146
|
+
readonly portMappings?: PortMapping[];
|
|
147
|
+
/**
|
|
148
|
+
* The inference accelerators referenced by the container.
|
|
149
|
+
* @default - No inference accelerators assigned.
|
|
150
|
+
*/
|
|
151
|
+
readonly inferenceAcceleratorResources?: string[];
|
|
152
|
+
/**
|
|
153
|
+
* A list of namespaced kernel parameters to set in the container.
|
|
154
|
+
* @default - No system controls are set.
|
|
155
|
+
* See: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-ecs-taskdefinition-systemcontrol.html
|
|
156
|
+
* See: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_systemcontrols
|
|
157
|
+
*/
|
|
158
|
+
readonly systemControls?: SystemControl[];
|
|
159
|
+
/**
|
|
160
|
+
* When this parameter is true, a TTY is allocated. This parameter maps to Tty in the "Create a container section" of the
|
|
161
|
+
* Docker Remote API and the --tty option to `docker run`.
|
|
162
|
+
* @default - false
|
|
163
|
+
* See: https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task_definition_parameters.html#container_definition_pseudoterminal
|
|
164
|
+
*/
|
|
165
|
+
readonly pseudoTerminal?: boolean;
|
|
166
|
+
/**
|
|
167
|
+
* An array of ulimits to set in the container.
|
|
168
|
+
*/
|
|
169
|
+
readonly ulimits?: Ulimit[];
|
|
170
|
+
/**
|
|
171
|
+
* Prefix for the log streams
|
|
172
|
+
* The awslogs-stream-prefix option allows you to associate a log stream
|
|
173
|
+
* with the specified prefix, the container name, and the ID of the Amazon
|
|
174
|
+
* ECS task to which the container belongs. If you specify a prefix with
|
|
175
|
+
* this option, then the log stream takes the following format:
|
|
176
|
+
* prefix-name/container-name/ecs-task-id
|
|
177
|
+
*/
|
|
178
|
+
readonly streamPrefix: string;
|
|
179
|
+
/**
|
|
180
|
+
* The log group to log to
|
|
181
|
+
* @default - A log group is automatically created.
|
|
182
|
+
*/
|
|
183
|
+
readonly logGroup: ILogGroup;
|
|
184
|
+
/**
|
|
185
|
+
* This option defines a multiline start pattern in Python strftime format.
|
|
186
|
+
* A log message consists of a line that matches the pattern and any
|
|
187
|
+
* following lines that don’t match the pattern. Thus the matched line is
|
|
188
|
+
* the delimiter between log messages.
|
|
189
|
+
* @default - No multiline matching.
|
|
190
|
+
*/
|
|
191
|
+
readonly datetimeFormat?: string;
|
|
192
|
+
/**
|
|
193
|
+
* This option defines a multiline start pattern using a regular expression.
|
|
194
|
+
* A log message consists of a line that matches the pattern and any
|
|
195
|
+
* following lines that don’t match the pattern. Thus the matched line is
|
|
196
|
+
* the delimiter between log messages.
|
|
197
|
+
* This option is ignored if datetimeFormat is also configured.
|
|
198
|
+
* @default - No multiline matching.
|
|
199
|
+
*/
|
|
200
|
+
readonly multilinePattern?: string;
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* A construct for creating a compliant ECS containerdefinition resource.
|
|
204
|
+
*/
|
|
205
|
+
export declare class MdaaECSContainerDefinition extends ContainerDefinition {
|
|
206
|
+
private static setProps;
|
|
207
|
+
constructor(scope: Construct, id: string, props: MdaaECSContainerDefinitionProps);
|
|
208
|
+
}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var _a;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MdaaECSContainerDefinition = void 0;
|
|
10
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
11
|
+
|
|
12
|
+
const construct_1 = require("@aws-mdaa/construct"); //NOSONAR
|
|
13
|
+
const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
|
|
14
|
+
const construct_2 = require("@aws-mdaa/construct"); //NOSONAR
|
|
15
|
+
/**
|
|
16
|
+
* A construct for creating a compliant ECS containerdefinition resource.
|
|
17
|
+
*/
|
|
18
|
+
class MdaaECSContainerDefinition extends aws_ecs_1.ContainerDefinition {
|
|
19
|
+
static setProps(props) {
|
|
20
|
+
const overrideProps = {
|
|
21
|
+
containerName: props.naming.resourceName(props.containerName, 255),
|
|
22
|
+
logging: aws_ecs_1.LogDriver.awsLogs({
|
|
23
|
+
logGroup: props.logGroup,
|
|
24
|
+
streamPrefix: props.streamPrefix,
|
|
25
|
+
datetimeFormat: props.datetimeFormat,
|
|
26
|
+
multilinePattern: props.multilinePattern,
|
|
27
|
+
}),
|
|
28
|
+
};
|
|
29
|
+
const allProps = {
|
|
30
|
+
...props,
|
|
31
|
+
...overrideProps,
|
|
32
|
+
};
|
|
33
|
+
return allProps;
|
|
34
|
+
}
|
|
35
|
+
constructor(scope, id, props) {
|
|
36
|
+
super(scope, id, MdaaECSContainerDefinition.setProps(props));
|
|
37
|
+
if (this.taskDefinition.executionRole) {
|
|
38
|
+
construct_2.MdaaNagSuppressions.addCodeResourceSuppressions(this.taskDefinition.executionRole, [
|
|
39
|
+
{
|
|
40
|
+
id: 'AwsSolutions-IAM5',
|
|
41
|
+
reason: 'Access limited to Log Group. Log Stream name not known at deployment time.',
|
|
42
|
+
},
|
|
43
|
+
{
|
|
44
|
+
id: 'NIST.800.53.R5-IAMNoInlinePolicy',
|
|
45
|
+
reason: 'Inline policy is specific to task logging and is appropriate.',
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: 'HIPAA.Security-IAMNoInlinePolicy',
|
|
49
|
+
reason: 'Inline policy is specific to task logging and is appropriate.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
id: 'PCI.DSS.321-IAMNoInlinePolicy',
|
|
53
|
+
reason: 'Inline policy is specific to task logging and is appropriate.',
|
|
54
|
+
},
|
|
55
|
+
], true);
|
|
56
|
+
}
|
|
57
|
+
new construct_1.MdaaParamAndOutput(this, {
|
|
58
|
+
...{
|
|
59
|
+
resourceType: 'containerdefinition',
|
|
60
|
+
resourceId: props.containerName,
|
|
61
|
+
name: 'name',
|
|
62
|
+
value: this.containerName,
|
|
63
|
+
},
|
|
64
|
+
...props,
|
|
65
|
+
}, scope);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
exports.MdaaECSContainerDefinition = MdaaECSContainerDefinition;
|
|
69
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
70
|
+
MdaaECSContainerDefinition[_a] = { fqn: "@aws-mdaa/ecs-constructs.MdaaECSContainerDefinition", version: "1.2.0" };
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udGFpbmVyLWRlZmluaXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJjb250YWluZXItZGVmaW5pdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBOzs7R0FHRztBQUVILG1EQUE2RSxDQUFDLFNBQVM7QUFFdkYsaURBYTZCO0FBRTdCLG1EQUEwRCxDQUFDLFNBQVM7QUF3TXBFOztHQUVHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSw2QkFBbUI7SUFDekQsTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFzQztRQUM1RCxNQUFNLGFBQWEsR0FBRztZQUNwQixhQUFhLEVBQUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUM7WUFDbEUsT0FBTyxFQUFFLG1CQUFTLENBQUMsT0FBTyxDQUFDO2dCQUN6QixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7Z0JBQ3hCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtnQkFDaEMsY0FBYyxFQUFFLEtBQUssQ0FBQyxjQUFjO2dCQUNwQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO2FBQ3pDLENBQUM7U0FDSCxDQUFDO1FBQ0YsTUFBTSxRQUFRLEdBQTZCO1lBQ3pDLEdBQUcsS0FBSztZQUNSLEdBQUcsYUFBYTtTQUNqQixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQztJQUVELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBc0M7UUFDOUUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsMEJBQTBCLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7UUFFN0QsSUFBSSxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ3RDLCtCQUFtQixDQUFDLDJCQUEyQixDQUM3QyxJQUFJLENBQUMsY0FBYyxDQUFDLGFBQWEsRUFDakM7Z0JBQ0U7b0JBQ0UsRUFBRSxFQUFFLG1CQUFtQjtvQkFDdkIsTUFBTSxFQUFFLDRFQUE0RTtpQkFDckY7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLGtDQUFrQztvQkFDdEMsTUFBTSxFQUFFLCtEQUErRDtpQkFDeEU7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLGtDQUFrQztvQkFDdEMsTUFBTSxFQUFFLCtEQUErRDtpQkFDeEU7Z0JBQ0Q7b0JBQ0UsRUFBRSxFQUFFLCtCQUErQjtvQkFDbkMsTUFBTSxFQUFFLCtEQUErRDtpQkFDeEU7YUFDRixFQUNELElBQUksQ0FDTCxDQUFDO1FBQ0osQ0FBQztRQUVELElBQUksOEJBQWtCLENBQ3BCLElBQUksRUFDSjtZQUNFLEdBQUc7Z0JBQ0QsWUFBWSxFQUFFLHFCQUFxQjtnQkFDbkMsVUFBVSxFQUFFLEtBQUssQ0FBQyxhQUFhO2dCQUMvQixJQUFJLEVBQUUsTUFBTTtnQkFDWixLQUFLLEVBQUUsSUFBSSxDQUFDLGFBQWE7YUFDMUI7WUFDRCxHQUFHLEtBQUs7U0FDVCxFQUNELEtBQUssQ0FDTixDQUFDO0lBQ0osQ0FBQzs7QUEzREgsZ0VBNERDIiwic291cmNlc0NvbnRlbnQiOlsiLyohXG4gKiBDb3B5cmlnaHQgQW1hem9uLmNvbSwgSW5jLiBvciBpdHMgYWZmaWxpYXRlcy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC5cbiAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wXG4gKi9cblxuaW1wb3J0IHsgTWRhYUNvbnN0cnVjdFByb3BzLCBNZGFhUGFyYW1BbmRPdXRwdXQgfSBmcm9tICdAYXdzLW1kYWEvY29uc3RydWN0JzsgLy9OT1NPTkFSXG5pbXBvcnQgeyBEdXJhdGlvbiB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7XG4gIENvbnRhaW5lckRlZmluaXRpb24sXG4gIENvbnRhaW5lckRlZmluaXRpb25Qcm9wcyxcbiAgQ29udGFpbmVySW1hZ2UsXG4gIEVudmlyb25tZW50RmlsZSxcbiAgSGVhbHRoQ2hlY2ssXG4gIExpbnV4UGFyYW1ldGVycyxcbiAgTG9nRHJpdmVyLFxuICBQb3J0TWFwcGluZyxcbiAgU2VjcmV0LFxuICBTeXN0ZW1Db250cm9sLFxuICBUYXNrRGVmaW5pdGlvbixcbiAgVWxpbWl0LFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IElMb2dHcm91cCB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcbmltcG9ydCB7IE1kYWFOYWdTdXBwcmVzc2lvbnMgfSBmcm9tICdAYXdzLW1kYWEvY29uc3RydWN0JzsgLy9OT1NPTkFSXG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBjcmVhdGluZyBhIENvbXBsaWFuY2UgRUNTIGNvbnRhaW5lcmRlZmluaXRpb25cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZGFhRUNTQ29udGFpbmVyRGVmaW5pdGlvblByb3BzIGV4dGVuZHMgTWRhYUNvbnN0cnVjdFByb3BzIHtcbiAgcmVhZG9ubHkgdGFza0RlZmluaXRpb246IFRhc2tEZWZpbml0aW9uO1xuICByZWFkb25seSBpbWFnZTogQ29udGFpbmVySW1hZ2U7XG4gIHJlYWRvbmx5IGNvbnRhaW5lck5hbWU/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBRLUVOSEFOQ0VELVBST1BFUlRZXG4gICAqIE9wdGlvbmFsIGNvbW1hbmQgYXJyYXkgZm9yIGNvbnRhaW5lciBleGVjdXRpb24gb3ZlcnJpZGluZyB0aGUgZGVmYXVsdCBDTUQgYnVpbHQgaW50byB0aGUgY29udGFpbmVyIGltYWdlLiBQcm92aWRlcyBjdXN0b20gY29tbWFuZCBleGVjdXRpb24gZm9yIGNvbnRhaW5lciBzdGFydHVwIGFuZCBhcHBsaWNhdGlvbiBpbml0aWFsaXphdGlvbiB3aXRoIHByb3BlciBjb21tYW5kLWxpbmUgYXJndW1lbnQgaGFuZGxpbmcuXG4gICAqXG4gICAqIFVzZSBjYXNlczogQ3VzdG9tIGNvbW1hbmQgZXhlY3V0aW9uOyBBcHBsaWNhdGlvbiBzdGFydHVwOyBDb21tYW5kIG92ZXJyaWRlOyBDb250YWluZXIgaW5pdGlhbGl6YXRpb25cbiAgICpcbiAgICogQVdTOiBEb2NrZXIgY29udGFpbmVyIGNvbW1hbmQgZm9yIGN1c3RvbSBleGVjdXRpb24gYW5kIGFwcGxpY2F0aW9uIHN0YXJ0dXAgY29uZmlndXJhdGlvblxuICAgKlxuICAgKiBWYWxpZGF0aW9uOiBNdXN0IGJlIGFycmF5IG9mIGNvbW1hbmQgc3RyaW5ncyBpZiBwcm92aWRlZDsgb3ZlcnJpZGVzIGNvbnRhaW5lciBpbWFnZSBDTUQgd2hlbiBzcGVjaWZpZWRcbiAgICoqL1xuICByZWFkb25seSBjb21tYW5kPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGNwdT86IG51bWJlcjtcbiAgcmVhZG9ubHkgZGlzYWJsZU5ldHdvcmtpbmc/OiBib29sZWFuO1xuICByZWFkb25seSBkbnNTZWFyY2hEb21haW5zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGRuc1NlcnZlcnM/OiBzdHJpbmdbXTtcbiAgcmVhZG9ubHkgZG9ja2VyTGFiZWxzPzoge1xuICAgIFtrZXk6IHN0cmluZ106IHN0cmluZztcbiAgfTtcbiAgcmVhZG9ubHkgZG9ja2VyU2VjdXJpdHlPcHRpb25zPzogc3RyaW5nW107XG4gIHJlYWRvbmx5IGVudHJ5UG9pbnQ/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogT3B0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG1hcCBmb3IgY29udGFpbmVyIGNvbmZpZ3VyYXRpb24gZW5hYmxpbmcgYXBwbGljYXRpb24gY29uZmlndXJhdGlvbiBhbmQgcnVudGltZSBwYXJhbWV0ZXIgcGFzc2luZy4gUHJvdmlkZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciBjb250YWluZXIgYXBwbGljYXRpb25zIHdpdGggc2VjdXJlIGNvbmZpZ3VyYXRpb24gbWFuYWdlbWVudCBhbmQgcnVudGltZSBjdXN0b21pemF0aW9uLlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IEFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb247IFJ1bnRpbWUgcGFyYW1ldGVyczsgRW52aXJvbm1lbnQgc2V0dXA7IENvbmZpZ3VyYXRpb24gbWFuYWdlbWVudFxuICAgKlxuICAgKiBBV1M6IENvbnRhaW5lciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb24gYW5kIHJ1bnRpbWUgcGFyYW1ldGVyIG1hbmFnZW1lbnRcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBvYmplY3Qgd2l0aCBzdHJpbmcga2V5cyBhbmQgdmFsdWVzIGlmIHByb3ZpZGVkOyBlbmFibGVzIGFwcGxpY2F0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogICAqKi9cbiAgcmVhZG9ubHkgZW52aXJvbm1lbnQ/OiB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nO1xuICB9O1xuICByZWFkb25seSBlbnZpcm9ubWVudEZpbGVzPzogRW52aXJvbm1lbnRGaWxlW107XG4gIHJlYWRvbmx5IHNlY3JldHM/OiB7XG4gICAgW2tleTogc3RyaW5nXTogU2VjcmV0O1xuICB9O1xuICAvKipcbiAgICogVGltZSBkdXJhdGlvbiAoaW4gc2Vjb25kcykgdG8gd2FpdCBiZWZvcmUgZ2l2aW5nIHVwIG9uIHJlc29sdmluZyBkZXBlbmRlbmNpZXMgZm9yIGEgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIG5vbmVcbiAgICovXG4gIHJlYWRvbmx5IHN0YXJ0VGltZW91dD86IER1cmF0aW9uO1xuICAvKipcbiAgICogVGltZSBkdXJhdGlvbiAoaW4gc2Vjb25kcykgdG8gd2FpdCBiZWZvcmUgdGhlIGNvbnRhaW5lciBpcyBmb3JjZWZ1bGx5IGtpbGxlZCBpZiBpdCBkb2Vzbid0IGV4aXQgbm9ybWFsbHkgb24gaXRzIG93bi5cbiAgICogQGRlZmF1bHQgLSBub25lXG4gICAqL1xuICByZWFkb25seSBzdG9wVGltZW91dD86IER1cmF0aW9uO1xuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbnRhaW5lciBpcyBtYXJrZWQgZXNzZW50aWFsLlxuICAgKiBJZiB0aGUgZXNzZW50aWFsIHBhcmFtZXRlciBvZiBhIGNvbnRhaW5lciBpcyBtYXJrZWQgYXMgdHJ1ZSwgYW5kIHRoYXQgY29udGFpbmVyIGZhaWxzXG4gICAqIG9yIHN0b3BzIGZvciBhbnkgcmVhc29uLCBhbGwgb3RoZXIgY29udGFpbmVycyB0aGF0IGFyZSBwYXJ0IG9mIHRoZSB0YXNrIGFyZSBzdG9wcGVkLlxuICAgKiBJZiB0aGUgZXNzZW50aWFsIHBhcmFtZXRlciBvZiBhIGNvbnRhaW5lciBpcyBtYXJrZWQgYXMgZmFsc2UsIHRoZW4gaXRzIGZhaWx1cmUgZG9lcyBub3RcbiAgICogYWZmZWN0IHRoZSByZXN0IG9mIHRoZSBjb250YWluZXJzIGluIGEgdGFzay4gQWxsIHRhc2tzIG11c3QgaGF2ZSBhdCBsZWFzdCBvbmUgZXNzZW50aWFsIGNvbnRhaW5lci5cbiAgICogSWYgdGhpcyBwYXJhbWV0ZXIgaXMgb21pdHRlZCwgYSBjb250YWluZXIgaXMgYXNzdW1lZCB0byBiZSBlc3NlbnRpYWwuXG4gICAqIEBkZWZhdWx0IHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGVzc2VudGlhbD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgaG9zdG5hbWVzIGFuZCBJUCBhZGRyZXNzIG1hcHBpbmdzIHRvIGFwcGVuZCB0byB0aGUgL2V0Yy9ob3N0cyBmaWxlIG9uIHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC0gTm8gZXh0cmEgaG9zdHMuXG4gICAqL1xuICByZWFkb25seSBleHRyYUhvc3RzPzoge1xuICAgIFtuYW1lOiBzdHJpbmddOiBzdHJpbmc7XG4gIH07XG4gIC8qKlxuICAgKiBUaGUgaGVhbHRoIGNoZWNrIGNvbW1hbmQgYW5kIGFzc29jaWF0ZWQgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGZvciB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIEhlYWx0aCBjaGVjayBjb25maWd1cmF0aW9uIGZyb20gY29udGFpbmVyLlxuICAgKi9cbiAgcmVhZG9ubHkgaGVhbHRoQ2hlY2s/OiBIZWFsdGhDaGVjaztcbiAgLyoqXG4gICAqIFRoZSBob3N0bmFtZSB0byB1c2UgZm9yIHlvdXIgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIEF1dG9tYXRpYyBob3N0bmFtZS5cbiAgICovXG4gIHJlYWRvbmx5IGhvc3RuYW1lPzogc3RyaW5nO1xuICAvKipcbiAgICogVGhlIGFtb3VudCAoaW4gTWlCKSBvZiBtZW1vcnkgdG8gcHJlc2VudCB0byB0aGUgY29udGFpbmVyLlxuICAgKiBJZiB5b3VyIGNvbnRhaW5lciBhdHRlbXB0cyB0byBleGNlZWQgdGhlIGFsbG9jYXRlZCBtZW1vcnksIHRoZSBjb250YWluZXJcbiAgICogaXMgdGVybWluYXRlZC5cbiAgICogQXQgbGVhc3Qgb25lIG9mIG1lbW9yeUxpbWl0TWlCIGFuZCBtZW1vcnlSZXNlcnZhdGlvbk1pQiBpcyByZXF1aXJlZCBmb3Igbm9uLUZhcmdhdGUgc2VydmljZXMuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWVtb3J5IGxpbWl0LlxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5TGltaXRNaUI/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBUaGUgc29mdCBsaW1pdCAoaW4gTWlCKSBvZiBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IgdGhlIGNvbnRhaW5lci5cbiAgICogV2hlbiBzeXN0ZW0gbWVtb3J5IGlzIHVuZGVyIGhlYXZ5IGNvbnRlbnRpb24sIERvY2tlciBhdHRlbXB0cyB0byBrZWVwIHRoZVxuICAgKiBjb250YWluZXIgbWVtb3J5IHRvIHRoaXMgc29mdCBsaW1pdC4gSG93ZXZlciwgeW91ciBjb250YWluZXIgY2FuIGNvbnN1bWUgbW9yZVxuICAgKiBtZW1vcnkgd2hlbiBpdCBuZWVkcyB0bywgdXAgdG8gZWl0aGVyIHRoZSBoYXJkIGxpbWl0IHNwZWNpZmllZCB3aXRoIHRoZSBtZW1vcnlcbiAgICogcGFyYW1ldGVyIChpZiBhcHBsaWNhYmxlKSwgb3IgYWxsIG9mIHRoZSBhdmFpbGFibGUgbWVtb3J5IG9uIHRoZSBjb250YWluZXJcbiAgICogaW5zdGFuY2UsIHdoaWNoZXZlciBjb21lcyBmaXJzdC5cbiAgICogQXQgbGVhc3Qgb25lIG9mIG1lbW9yeUxpbWl0TWlCIGFuZCBtZW1vcnlSZXNlcnZhdGlvbk1pQiBpcyByZXF1aXJlZCBmb3Igbm9uLUZhcmdhdGUgc2VydmljZXMuXG4gICAqIEBkZWZhdWx0IC0gTm8gbWVtb3J5IHJlc2VydmVkLlxuICAgKi9cbiAgcmVhZG9ubHkgbWVtb3J5UmVzZXJ2YXRpb25NaUI/OiBudW1iZXI7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB0aGUgY29udGFpbmVyIGlzIG1hcmtlZCBhcyBwcml2aWxlZ2VkLlxuICAgKiBXaGVuIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUsIHRoZSBjb250YWluZXIgaXMgZ2l2ZW4gZWxldmF0ZWQgcHJpdmlsZWdlcyBvbiB0aGUgaG9zdCBjb250YWluZXIgaW5zdGFuY2UgKHNpbWlsYXIgdG8gdGhlIHJvb3QgdXNlcikuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICByZWFkb25seSBwcml2aWxlZ2VkPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIFdoZW4gdGhpcyBwYXJhbWV0ZXIgaXMgdHJ1ZSwgdGhlIGNvbnRhaW5lciBpcyBnaXZlbiByZWFkLW9ubHkgYWNjZXNzIHRvIGl0cyByb290IGZpbGUgc3lzdGVtLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgcmVhZG9ubHlSb290RmlsZXN5c3RlbT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBUaGUgdXNlciBuYW1lIHRvIHVzZSBpbnNpZGUgdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgcm9vdFxuICAgKi9cbiAgcmVhZG9ubHkgdXNlcj86IHN0cmluZztcbiAgLyoqXG4gICAqIFRoZSB3b3JraW5nIGRpcmVjdG9yeSBpbiB3aGljaCB0byBydW4gY29tbWFuZHMgaW5zaWRlIHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC9cbiAgICovXG4gIHJlYWRvbmx5IHdvcmtpbmdEaXJlY3Rvcnk/OiBzdHJpbmc7XG4gIC8qKlxuICAgKiBMaW51eC1zcGVjaWZpYyBtb2RpZmljYXRpb25zIHRoYXQgYXJlIGFwcGxpZWQgdG8gdGhlIGNvbnRhaW5lciwgc3VjaCBhcyBMaW51eCBrZXJuZWwgY2FwYWJpbGl0aWVzLlxuICAgKiBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgW0tlcm5lbENhcGFiaWxpdGllc10oaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvQVBJUmVmZXJlbmNlL0FQSV9LZXJuZWxDYXBhYmlsaXRpZXMuaHRtbCkuXG4gICAqIEBkZWZhdWx0IC0gTm8gTGludXggcGFyYW1ldGVycy5cbiAgICovXG4gIHJlYWRvbmx5IGxpbnV4UGFyYW1ldGVycz86IExpbnV4UGFyYW1ldGVycztcbiAgLyoqXG4gICAqIFRoZSBudW1iZXIgb2YgR1BVcyBhc3NpZ25lZCB0byB0aGUgY29udGFpbmVyLlxuICAgKiBAZGVmYXVsdCAtIE5vIEdQVXMgYXNzaWduZWQuXG4gICAqL1xuICByZWFkb25seSBncHVDb3VudD86IG51bWJlcjtcbiAgLyoqXG4gICAqIFRoZSBwb3J0IG1hcHBpbmdzIHRvIGFkZCB0byB0aGUgY29udGFpbmVyIGRlZmluaXRpb24uXG4gICAqIEBkZWZhdWx0IC0gTm8gcG9ydHMgYXJlIG1hcHBlZC5cbiAgICovXG4gIHJlYWRvbmx5IHBvcnRNYXBwaW5ncz86IFBvcnRNYXBwaW5nW107XG4gIC8qKlxuICAgKiBUaGUgaW5mZXJlbmNlIGFjY2VsZXJhdG9ycyByZWZlcmVuY2VkIGJ5IHRoZSBjb250YWluZXIuXG4gICAqIEBkZWZhdWx0IC0gTm8gaW5mZXJlbmNlIGFjY2VsZXJhdG9ycyBhc3NpZ25lZC5cbiAgICovXG4gIHJlYWRvbmx5IGluZmVyZW5jZUFjY2VsZXJhdG9yUmVzb3VyY2VzPzogc3RyaW5nW107XG4gIC8qKlxuICAgKiBBIGxpc3Qgb2YgbmFtZXNwYWNlZCBrZXJuZWwgcGFyYW1ldGVycyB0byBzZXQgaW4gdGhlIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgLSBObyBzeXN0ZW0gY29udHJvbHMgYXJlIHNldC5cbiAgICogU2VlOiBodHRwczovL2RvY3MuYXdzLmFtYXpvbi5jb20vQVdTQ2xvdWRGb3JtYXRpb24vbGF0ZXN0L1VzZXJHdWlkZS9hd3MtcHJvcGVydGllcy1lY3MtdGFza2RlZmluaXRpb24tc3lzdGVtY29udHJvbC5odG1sXG4gICAqIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdGFza19kZWZpbml0aW9uX3BhcmFtZXRlcnMuaHRtbCNjb250YWluZXJfZGVmaW5pdGlvbl9zeXN0ZW1jb250cm9sc1xuICAgKi9cbiAgcmVhZG9ubHkgc3lzdGVtQ29udHJvbHM/OiBTeXN0ZW1Db250cm9sW107XG4gIC8qKlxuICAgKiBXaGVuIHRoaXMgcGFyYW1ldGVyIGlzIHRydWUsIGEgVFRZIGlzIGFsbG9jYXRlZC4gVGhpcyBwYXJhbWV0ZXIgbWFwcyB0byBUdHkgaW4gdGhlIFwiQ3JlYXRlIGEgY29udGFpbmVyIHNlY3Rpb25cIiBvZiB0aGVcbiAgICogRG9ja2VyIFJlbW90ZSBBUEkgYW5kIHRoZSAtLXR0eSBvcHRpb24gdG8gYGRvY2tlciBydW5gLlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdGFza19kZWZpbml0aW9uX3BhcmFtZXRlcnMuaHRtbCNjb250YWluZXJfZGVmaW5pdGlvbl9wc2V1ZG90ZXJtaW5hbFxuICAgKi9cbiAgcmVhZG9ubHkgcHNldWRvVGVybWluYWw/OiBib29sZWFuO1xuICAvKipcbiAgICogQW4gYXJyYXkgb2YgdWxpbWl0cyB0byBzZXQgaW4gdGhlIGNvbnRhaW5lci5cbiAgICovXG4gIHJlYWRvbmx5IHVsaW1pdHM/OiBVbGltaXRbXTtcblxuICAvKipcbiAgICogUHJlZml4IGZvciB0aGUgbG9nIHN0cmVhbXNcbiAgICogVGhlIGF3c2xvZ3Mtc3RyZWFtLXByZWZpeCBvcHRpb24gYWxsb3dzIHlvdSB0byBhc3NvY2lhdGUgYSBsb2cgc3RyZWFtXG4gICAqIHdpdGggdGhlIHNwZWNpZmllZCBwcmVmaXgsIHRoZSBjb250YWluZXIgbmFtZSwgYW5kIHRoZSBJRCBvZiB0aGUgQW1hem9uXG4gICAqIEVDUyB0YXNrIHRvIHdoaWNoIHRoZSBjb250YWluZXIgYmVsb25ncy4gSWYgeW91IHNwZWNpZnkgYSBwcmVmaXggd2l0aFxuICAgKiB0aGlzIG9wdGlvbiwgdGhlbiB0aGUgbG9nIHN0cmVhbSB0YWtlcyB0aGUgZm9sbG93aW5nIGZvcm1hdDpcbiAgICogICAgIHByZWZpeC1uYW1lL2NvbnRhaW5lci1uYW1lL2Vjcy10YXNrLWlkXG4gICAqL1xuICByZWFkb25seSBzdHJlYW1QcmVmaXg6IHN0cmluZztcblxuICAvKipcbiAgICogVGhlIGxvZyBncm91cCB0byBsb2cgdG9cbiAgICogQGRlZmF1bHQgLSBBIGxvZyBncm91cCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQuXG4gICAqL1xuICByZWFkb25seSBsb2dHcm91cDogSUxvZ0dyb3VwO1xuXG4gIC8qKlxuICAgKiBUaGlzIG9wdGlvbiBkZWZpbmVzIGEgbXVsdGlsaW5lIHN0YXJ0IHBhdHRlcm4gaW4gUHl0aG9uIHN0cmZ0aW1lIGZvcm1hdC5cbiAgICogQSBsb2cgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxpbmUgdGhhdCBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFuZCBhbnlcbiAgICogZm9sbG93aW5nIGxpbmVzIHRoYXQgZG9u4oCZdCBtYXRjaCB0aGUgcGF0dGVybi4gVGh1cyB0aGUgbWF0Y2hlZCBsaW5lIGlzXG4gICAqIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBsb2cgbWVzc2FnZXMuXG4gICAqIEBkZWZhdWx0IC0gTm8gbXVsdGlsaW5lIG1hdGNoaW5nLlxuICAgKi9cbiAgcmVhZG9ubHkgZGF0ZXRpbWVGb3JtYXQ/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoaXMgb3B0aW9uIGRlZmluZXMgYSBtdWx0aWxpbmUgc3RhcnQgcGF0dGVybiB1c2luZyBhIHJlZ3VsYXIgZXhwcmVzc2lvbi5cbiAgICogQSBsb2cgbWVzc2FnZSBjb25zaXN0cyBvZiBhIGxpbmUgdGhhdCBtYXRjaGVzIHRoZSBwYXR0ZXJuIGFuZCBhbnlcbiAgICogZm9sbG93aW5nIGxpbmVzIHRoYXQgZG9u4oCZdCBtYXRjaCB0aGUgcGF0dGVybi4gVGh1cyB0aGUgbWF0Y2hlZCBsaW5lIGlzXG4gICAqIHRoZSBkZWxpbWl0ZXIgYmV0d2VlbiBsb2cgbWVzc2FnZXMuXG4gICAqIFRoaXMgb3B0aW9uIGlzIGlnbm9yZWQgaWYgZGF0ZXRpbWVGb3JtYXQgaXMgYWxzbyBjb25maWd1cmVkLlxuICAgKiBAZGVmYXVsdCAtIE5vIG11bHRpbGluZSBtYXRjaGluZy5cbiAgICovXG4gIHJlYWRvbmx5IG11bHRpbGluZVBhdHRlcm4/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogQSBjb25zdHJ1Y3QgZm9yIGNyZWF0aW5nIGEgY29tcGxpYW50IEVDUyBjb250YWluZXJkZWZpbml0aW9uIHJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgTWRhYUVDU0NvbnRhaW5lckRlZmluaXRpb24gZXh0ZW5kcyBDb250YWluZXJEZWZpbml0aW9uIHtcbiAgcHJpdmF0ZSBzdGF0aWMgc2V0UHJvcHMocHJvcHM6IE1kYWFFQ1NDb250YWluZXJEZWZpbml0aW9uUHJvcHMpOiBDb250YWluZXJEZWZpbml0aW9uUHJvcHMge1xuICAgIGNvbnN0IG92ZXJyaWRlUHJvcHMgPSB7XG4gICAgICBjb250YWluZXJOYW1lOiBwcm9wcy5uYW1pbmcucmVzb3VyY2VOYW1lKHByb3BzLmNvbnRhaW5lck5hbWUsIDI1NSksXG4gICAgICBsb2dnaW5nOiBMb2dEcml2ZXIuYXdzTG9ncyh7XG4gICAgICAgIGxvZ0dyb3VwOiBwcm9wcy5sb2dHcm91cCxcbiAgICAgICAgc3RyZWFtUHJlZml4OiBwcm9wcy5zdHJlYW1QcmVmaXgsXG4gICAgICAgIGRhdGV0aW1lRm9ybWF0OiBwcm9wcy5kYXRldGltZUZvcm1hdCxcbiAgICAgICAgbXVsdGlsaW5lUGF0dGVybjogcHJvcHMubXVsdGlsaW5lUGF0dGVybixcbiAgICAgIH0pLFxuICAgIH07XG4gICAgY29uc3QgYWxsUHJvcHM6IENvbnRhaW5lckRlZmluaXRpb25Qcm9wcyA9IHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgLi4ub3ZlcnJpZGVQcm9wcyxcbiAgICB9O1xuICAgIHJldHVybiBhbGxQcm9wcztcbiAgfVxuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBNZGFhRUNTQ29udGFpbmVyRGVmaW5pdGlvblByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBNZGFhRUNTQ29udGFpbmVyRGVmaW5pdGlvbi5zZXRQcm9wcyhwcm9wcykpO1xuXG4gICAgaWYgKHRoaXMudGFza0RlZmluaXRpb24uZXhlY3V0aW9uUm9sZSkge1xuICAgICAgTWRhYU5hZ1N1cHByZXNzaW9ucy5hZGRDb2RlUmVzb3VyY2VTdXBwcmVzc2lvbnMoXG4gICAgICAgIHRoaXMudGFza0RlZmluaXRpb24uZXhlY3V0aW9uUm9sZSxcbiAgICAgICAgW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnQXdzU29sdXRpb25zLUlBTTUnLFxuICAgICAgICAgICAgcmVhc29uOiAnQWNjZXNzIGxpbWl0ZWQgdG8gTG9nIEdyb3VwLiBMb2cgU3RyZWFtIG5hbWUgbm90IGtub3duIGF0IGRlcGxveW1lbnQgdGltZS4nLFxuICAgICAgICAgIH0sXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6ICdOSVNULjgwMC41My5SNS1JQU1Ob0lubGluZVBvbGljeScsXG4gICAgICAgICAgICByZWFzb246ICdJbmxpbmUgcG9saWN5IGlzIHNwZWNpZmljIHRvIHRhc2sgbG9nZ2luZyBhbmQgaXMgYXBwcm9wcmlhdGUuJyxcbiAgICAgICAgICB9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAnSElQQUEuU2VjdXJpdHktSUFNTm9JbmxpbmVQb2xpY3knLFxuICAgICAgICAgICAgcmVhc29uOiAnSW5saW5lIHBvbGljeSBpcyBzcGVjaWZpYyB0byB0YXNrIGxvZ2dpbmcgYW5kIGlzIGFwcHJvcHJpYXRlLicsXG4gICAgICAgICAgfSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogJ1BDSS5EU1MuMzIxLUlBTU5vSW5saW5lUG9saWN5JyxcbiAgICAgICAgICAgIHJlYXNvbjogJ0lubGluZSBwb2xpY3kgaXMgc3BlY2lmaWMgdG8gdGFzayBsb2dnaW5nIGFuZCBpcyBhcHByb3ByaWF0ZS4nLFxuICAgICAgICAgIH0sXG4gICAgICAgIF0sXG4gICAgICAgIHRydWUsXG4gICAgICApO1xuICAgIH1cblxuICAgIG5ldyBNZGFhUGFyYW1BbmRPdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAge1xuICAgICAgICAuLi57XG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnY29udGFpbmVyZGVmaW5pdGlvbicsXG4gICAgICAgICAgcmVzb3VyY2VJZDogcHJvcHMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgICBuYW1lOiAnbmFtZScsXG4gICAgICAgICAgdmFsdWU6IHRoaXMuY29udGFpbmVyTmFtZSxcbiAgICAgICAgfSxcbiAgICAgICAgLi4ucHJvcHMsXG4gICAgICB9LFxuICAgICAgc2NvcGUsXG4gICAgKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
import { MdaaConstructProps } from '@aws-mdaa/construct';
|
|
6
|
+
import { Duration } from 'aws-cdk-lib';
|
|
7
|
+
import { ISecurityGroup, ISubnet } from 'aws-cdk-lib/aws-ec2';
|
|
8
|
+
import { CapacityProviderStrategy, CloudMapOptions, DeploymentCircuitBreaker, DeploymentController, FargateService, ICluster, PropagatedTagSource, ServiceConnectProps, TaskDefinition } from 'aws-cdk-lib/aws-ecs';
|
|
9
|
+
import { Construct } from 'constructs';
|
|
10
|
+
/**
|
|
11
|
+
* Properties for creating a Compliance ECS fargateservice
|
|
12
|
+
*/
|
|
13
|
+
export interface MdaaECSFargateServiceProps extends MdaaConstructProps {
|
|
14
|
+
readonly taskDefinition: TaskDefinition;
|
|
15
|
+
/**
|
|
16
|
+
* Q-ENHANCED-PROPERTY
|
|
17
|
+
* Required array of subnets for Fargate service network placement enabling VPC connectivity and network isolation. Defines the network subnets where Fargate tasks will be deployed for secure networking and connectivity within the VPC environment.
|
|
18
|
+
*
|
|
19
|
+
* Use cases: Network placement; VPC connectivity; Subnet distribution; Network isolation
|
|
20
|
+
*
|
|
21
|
+
* AWS: VPC subnets for ECS Fargate service network placement and connectivity
|
|
22
|
+
*
|
|
23
|
+
* Validation: Must be array of valid ISubnet interfaces; required for Fargate service network placement
|
|
24
|
+
* * See: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.ISubnet.html
|
|
25
|
+
**/
|
|
26
|
+
readonly subnets: ISubnet[];
|
|
27
|
+
/**
|
|
28
|
+
* Q-ENHANCED-PROPERTY
|
|
29
|
+
* Required array of security groups for Fargate service network access control defining inbound and outbound traffic rules. Provides network-level security controls for Fargate tasks ensuring secure communication and access control within the VPC.
|
|
30
|
+
*
|
|
31
|
+
* Use cases: Network security; Access control; Traffic filtering; Security group management
|
|
32
|
+
*
|
|
33
|
+
* AWS: VPC security groups for ECS Fargate service network security and access control
|
|
34
|
+
*
|
|
35
|
+
* Validation: Must be array of valid ISecurityGroup interfaces; required for network security and access control
|
|
36
|
+
* * See: https://docs.aws.amazon.com/cdk/api/v2/docs/aws-cdk-lib.aws_ec2.ISecurityGroup.html
|
|
37
|
+
**/
|
|
38
|
+
readonly securityGroups: ISecurityGroup[];
|
|
39
|
+
readonly cluster: ICluster;
|
|
40
|
+
readonly desiredCount?: number;
|
|
41
|
+
readonly serviceName?: string;
|
|
42
|
+
readonly maxHealthyPercent?: number;
|
|
43
|
+
readonly minHealthyPercent?: number;
|
|
44
|
+
readonly healthCheckGracePeriod?: Duration;
|
|
45
|
+
readonly cloudMapOptions?: CloudMapOptions;
|
|
46
|
+
readonly propagateTags: PropagatedTagSource.TASK_DEFINITION | PropagatedTagSource.SERVICE;
|
|
47
|
+
readonly enableECSManagedTags?: boolean;
|
|
48
|
+
readonly deploymentController?: DeploymentController;
|
|
49
|
+
readonly circuitBreaker?: DeploymentCircuitBreaker;
|
|
50
|
+
readonly capacityProviderStrategies?: CapacityProviderStrategy[];
|
|
51
|
+
/**
|
|
52
|
+
* Whether to enable the ability to execute into a container
|
|
53
|
+
* @default - undefined
|
|
54
|
+
*/
|
|
55
|
+
readonly enableExecuteCommand?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Configuration for Service Connect.
|
|
58
|
+
* @default No ports are advertised via Service Connect on this service, and the service
|
|
59
|
+
* cannot make requests to other services via Service Connect.
|
|
60
|
+
*/
|
|
61
|
+
readonly serviceConnectConfiguration?: ServiceConnectProps;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* A construct for creating a compliant ECS fargateservice resource.
|
|
65
|
+
*/
|
|
66
|
+
export declare class MdaaECSFargateService extends FargateService {
|
|
67
|
+
private static setProps;
|
|
68
|
+
constructor(scope: Construct, id: string, props: MdaaECSFargateServiceProps);
|
|
69
|
+
}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
var _a;
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MdaaECSFargateService = void 0;
|
|
10
|
+
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
11
|
+
|
|
12
|
+
const construct_1 = require("@aws-mdaa/construct"); //NOSONAR
|
|
13
|
+
const aws_ecs_1 = require("aws-cdk-lib/aws-ecs");
|
|
14
|
+
/**
|
|
15
|
+
* A construct for creating a compliant ECS fargateservice resource.
|
|
16
|
+
*/
|
|
17
|
+
class MdaaECSFargateService extends aws_ecs_1.FargateService {
|
|
18
|
+
static setProps(props) {
|
|
19
|
+
const overrideProps = {
|
|
20
|
+
serviceName: props.naming.resourceName(props.serviceName, 255),
|
|
21
|
+
assignPublicIp: false,
|
|
22
|
+
platformVersion: aws_ecs_1.FargatePlatformVersion.LATEST,
|
|
23
|
+
vpcSubnets: {
|
|
24
|
+
subnets: props.subnets,
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
const allProps = {
|
|
28
|
+
...props,
|
|
29
|
+
...overrideProps,
|
|
30
|
+
};
|
|
31
|
+
return allProps;
|
|
32
|
+
}
|
|
33
|
+
constructor(scope, id, props) {
|
|
34
|
+
super(scope, id, MdaaECSFargateService.setProps(props));
|
|
35
|
+
new construct_1.MdaaParamAndOutput(this, {
|
|
36
|
+
...{
|
|
37
|
+
resourceType: 'fargateservice',
|
|
38
|
+
resourceId: props.serviceName,
|
|
39
|
+
name: 'arn',
|
|
40
|
+
value: this.serviceArn,
|
|
41
|
+
},
|
|
42
|
+
...props,
|
|
43
|
+
}, scope);
|
|
44
|
+
new construct_1.MdaaParamAndOutput(this, {
|
|
45
|
+
...{
|
|
46
|
+
resourceType: 'fargateservice',
|
|
47
|
+
resourceId: props.serviceName,
|
|
48
|
+
name: 'name',
|
|
49
|
+
value: this.serviceName,
|
|
50
|
+
},
|
|
51
|
+
...props,
|
|
52
|
+
}, scope);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.MdaaECSFargateService = MdaaECSFargateService;
|
|
56
|
+
_a = JSII_RTTI_SYMBOL_1;
|
|
57
|
+
MdaaECSFargateService[_a] = { fqn: "@aws-mdaa/ecs-constructs.MdaaECSFargateService", version: "1.2.0" };
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFyZ2F0ZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZmFyZ2F0ZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7OztHQUdHO0FBRUgsbURBQTZFLENBQUMsU0FBUztBQUd2RixpREFZNkI7QUF5RDdCOztHQUVHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSx3QkFBYztJQUMvQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQWlDO1FBQ3ZELE1BQU0sYUFBYSxHQUFHO1lBQ3BCLFdBQVcsRUFBRSxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFLEdBQUcsQ0FBQztZQUM5RCxjQUFjLEVBQUUsS0FBSztZQUNyQixlQUFlLEVBQUUsZ0NBQXNCLENBQUMsTUFBTTtZQUM5QyxVQUFVLEVBQUU7Z0JBQ1YsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO2FBQ3ZCO1NBQ0YsQ0FBQztRQUNGLE1BQU0sUUFBUSxHQUF3QjtZQUNwQyxHQUFHLEtBQUs7WUFDUixHQUFHLGFBQWE7U0FDakIsQ0FBQztRQUNGLE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7SUFFRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLHFCQUFxQixDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBRXhELElBQUksOEJBQWtCLENBQ3BCLElBQUksRUFDSjtZQUNFLEdBQUc7Z0JBQ0QsWUFBWSxFQUFFLGdCQUFnQjtnQkFDOUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxXQUFXO2dCQUM3QixJQUFJLEVBQUUsS0FBSztnQkFDWCxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVU7YUFDdkI7WUFDRCxHQUFHLEtBQUs7U0FDVCxFQUNELEtBQUssQ0FDTixDQUFDO1FBQ0YsSUFBSSw4QkFBa0IsQ0FDcEIsSUFBSSxFQUNKO1lBQ0UsR0FBRztnQkFDRCxZQUFZLEVBQUUsZ0JBQWdCO2dCQUM5QixVQUFVLEVBQUUsS0FBSyxDQUFDLFdBQVc7Z0JBQzdCLElBQUksRUFBRSxNQUFNO2dCQUNaLEtBQUssRUFBRSxJQUFJLENBQUMsV0FBVzthQUN4QjtZQUNELEdBQUcsS0FBSztTQUNULEVBQ0QsS0FBSyxDQUNOLENBQUM7SUFDSixDQUFDOztBQTlDSCxzREErQ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5pbXBvcnQgeyBNZGFhQ29uc3RydWN0UHJvcHMsIE1kYWFQYXJhbUFuZE91dHB1dCB9IGZyb20gJ0Bhd3MtbWRhYS9jb25zdHJ1Y3QnOyAvL05PU09OQVJcbmltcG9ydCB7IER1cmF0aW9uIH0gZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgSVNlY3VyaXR5R3JvdXAsIElTdWJuZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcbmltcG9ydCB7XG4gIENhcGFjaXR5UHJvdmlkZXJTdHJhdGVneSxcbiAgQ2xvdWRNYXBPcHRpb25zLFxuICBEZXBsb3ltZW50Q2lyY3VpdEJyZWFrZXIsXG4gIERlcGxveW1lbnRDb250cm9sbGVyLFxuICBGYXJnYXRlUGxhdGZvcm1WZXJzaW9uLFxuICBGYXJnYXRlU2VydmljZSxcbiAgRmFyZ2F0ZVNlcnZpY2VQcm9wcyxcbiAgSUNsdXN0ZXIsXG4gIFByb3BhZ2F0ZWRUYWdTb3VyY2UsXG4gIFNlcnZpY2VDb25uZWN0UHJvcHMsXG4gIFRhc2tEZWZpbml0aW9uLFxufSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG4vKipcbiAqIFByb3BlcnRpZXMgZm9yIGNyZWF0aW5nIGEgQ29tcGxpYW5jZSBFQ1MgZmFyZ2F0ZXNlcnZpY2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBNZGFhRUNTRmFyZ2F0ZVNlcnZpY2VQcm9wcyBleHRlbmRzIE1kYWFDb25zdHJ1Y3RQcm9wcyB7XG4gIHJlYWRvbmx5IHRhc2tEZWZpbml0aW9uOiBUYXNrRGVmaW5pdGlvbjtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgYXJyYXkgb2Ygc3VibmV0cyBmb3IgRmFyZ2F0ZSBzZXJ2aWNlIG5ldHdvcmsgcGxhY2VtZW50IGVuYWJsaW5nIFZQQyBjb25uZWN0aXZpdHkgYW5kIG5ldHdvcmsgaXNvbGF0aW9uLiBEZWZpbmVzIHRoZSBuZXR3b3JrIHN1Ym5ldHMgd2hlcmUgRmFyZ2F0ZSB0YXNrcyB3aWxsIGJlIGRlcGxveWVkIGZvciBzZWN1cmUgbmV0d29ya2luZyBhbmQgY29ubmVjdGl2aXR5IHdpdGhpbiB0aGUgVlBDIGVudmlyb25tZW50LlxuICAgKlxuICAgKiBVc2UgY2FzZXM6IE5ldHdvcmsgcGxhY2VtZW50OyBWUEMgY29ubmVjdGl2aXR5OyBTdWJuZXQgZGlzdHJpYnV0aW9uOyBOZXR3b3JrIGlzb2xhdGlvblxuICAgKlxuICAgKiBBV1M6IFZQQyBzdWJuZXRzIGZvciBFQ1MgRmFyZ2F0ZSBzZXJ2aWNlIG5ldHdvcmsgcGxhY2VtZW50IGFuZCBjb25uZWN0aXZpdHlcbiAgICpcbiAgICogVmFsaWRhdGlvbjogTXVzdCBiZSBhcnJheSBvZiB2YWxpZCBJU3VibmV0IGludGVyZmFjZXM7IHJlcXVpcmVkIGZvciBGYXJnYXRlIHNlcnZpY2UgbmV0d29yayBwbGFjZW1lbnRcbiAgICogICAqIFNlZTogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL2Nkay9hcGkvdjIvZG9jcy9hd3MtY2RrLWxpYi5hd3NfZWMyLklTdWJuZXQuaHRtbFxuICAgKiovXG4gIHJlYWRvbmx5IHN1Ym5ldHM6IElTdWJuZXRbXTtcbiAgLyoqXG4gICAqIFEtRU5IQU5DRUQtUFJPUEVSVFlcbiAgICogUmVxdWlyZWQgYXJyYXkgb2Ygc2VjdXJpdHkgZ3JvdXBzIGZvciBGYXJnYXRlIHNlcnZpY2UgbmV0d29yayBhY2Nlc3MgY29udHJvbCBkZWZpbmluZyBpbmJvdW5kIGFuZCBvdXRib3VuZCB0cmFmZmljIHJ1bGVzLiBQcm92aWRlcyBuZXR3b3JrLWxldmVsIHNlY3VyaXR5IGNvbnRyb2xzIGZvciBGYXJnYXRlIHRhc2tzIGVuc3VyaW5nIHNlY3VyZSBjb21tdW5pY2F0aW9uIGFuZCBhY2Nlc3MgY29udHJvbCB3aXRoaW4gdGhlIFZQQy5cbiAgICpcbiAgICogVXNlIGNhc2VzOiBOZXR3b3JrIHNlY3VyaXR5OyBBY2Nlc3MgY29udHJvbDsgVHJhZmZpYyBmaWx0ZXJpbmc7IFNlY3VyaXR5IGdyb3VwIG1hbmFnZW1lbnRcbiAgICpcbiAgICogQVdTOiBWUEMgc2VjdXJpdHkgZ3JvdXBzIGZvciBFQ1MgRmFyZ2F0ZSBzZXJ2aWNlIG5ldHdvcmsgc2VjdXJpdHkgYW5kIGFjY2VzcyBjb250cm9sXG4gICAqXG4gICAqIFZhbGlkYXRpb246IE11c3QgYmUgYXJyYXkgb2YgdmFsaWQgSVNlY3VyaXR5R3JvdXAgaW50ZXJmYWNlczsgcmVxdWlyZWQgZm9yIG5ldHdvcmsgc2VjdXJpdHkgYW5kIGFjY2VzcyBjb250cm9sXG4gICAqICAgKiBTZWU6IGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9jZGsvYXBpL3YyL2RvY3MvYXdzLWNkay1saWIuYXdzX2VjMi5JU2VjdXJpdHlHcm91cC5odG1sXG4gICAqKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlHcm91cHM6IElTZWN1cml0eUdyb3VwW107XG4gIHJlYWRvbmx5IGNsdXN0ZXI6IElDbHVzdGVyO1xuICByZWFkb25seSBkZXNpcmVkQ291bnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lPzogc3RyaW5nO1xuICByZWFkb25seSBtYXhIZWFsdGh5UGVyY2VudD86IG51bWJlcjtcbiAgcmVhZG9ubHkgbWluSGVhbHRoeVBlcmNlbnQ/OiBudW1iZXI7XG4gIHJlYWRvbmx5IGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q/OiBEdXJhdGlvbjtcbiAgcmVhZG9ubHkgY2xvdWRNYXBPcHRpb25zPzogQ2xvdWRNYXBPcHRpb25zO1xuICByZWFkb25seSBwcm9wYWdhdGVUYWdzOiBQcm9wYWdhdGVkVGFnU291cmNlLlRBU0tfREVGSU5JVElPTiB8IFByb3BhZ2F0ZWRUYWdTb3VyY2UuU0VSVklDRTtcbiAgcmVhZG9ubHkgZW5hYmxlRUNTTWFuYWdlZFRhZ3M/OiBib29sZWFuO1xuICByZWFkb25seSBkZXBsb3ltZW50Q29udHJvbGxlcj86IERlcGxveW1lbnRDb250cm9sbGVyO1xuICByZWFkb25seSBjaXJjdWl0QnJlYWtlcj86IERlcGxveW1lbnRDaXJjdWl0QnJlYWtlcjtcbiAgcmVhZG9ubHkgY2FwYWNpdHlQcm92aWRlclN0cmF0ZWdpZXM/OiBDYXBhY2l0eVByb3ZpZGVyU3RyYXRlZ3lbXTtcbiAgLyoqXG4gICAqIFdoZXRoZXIgdG8gZW5hYmxlIHRoZSBhYmlsaXR5IHRvIGV4ZWN1dGUgaW50byBhIGNvbnRhaW5lclxuICAgKiAgQGRlZmF1bHQgLSB1bmRlZmluZWRcbiAgICovXG4gIHJlYWRvbmx5IGVuYWJsZUV4ZWN1dGVDb21tYW5kPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIENvbmZpZ3VyYXRpb24gZm9yIFNlcnZpY2UgQ29ubmVjdC5cbiAgICogQGRlZmF1bHQgTm8gcG9ydHMgYXJlIGFkdmVydGlzZWQgdmlhIFNlcnZpY2UgQ29ubmVjdCBvbiB0aGlzIHNlcnZpY2UsIGFuZCB0aGUgc2VydmljZVxuICAgKiBjYW5ub3QgbWFrZSByZXF1ZXN0cyB0byBvdGhlciBzZXJ2aWNlcyB2aWEgU2VydmljZSBDb25uZWN0LlxuICAgKi9cbiAgcmVhZG9ubHkgc2VydmljZUNvbm5lY3RDb25maWd1cmF0aW9uPzogU2VydmljZUNvbm5lY3RQcm9wcztcbn1cblxuLyoqXG4gKiBBIGNvbnN0cnVjdCBmb3IgY3JlYXRpbmcgYSBjb21wbGlhbnQgRUNTIGZhcmdhdGVzZXJ2aWNlIHJlc291cmNlLlxuICovXG5leHBvcnQgY2xhc3MgTWRhYUVDU0ZhcmdhdGVTZXJ2aWNlIGV4dGVuZHMgRmFyZ2F0ZVNlcnZpY2Uge1xuICBwcml2YXRlIHN0YXRpYyBzZXRQcm9wcyhwcm9wczogTWRhYUVDU0ZhcmdhdGVTZXJ2aWNlUHJvcHMpOiBGYXJnYXRlU2VydmljZVByb3BzIHtcbiAgICBjb25zdCBvdmVycmlkZVByb3BzID0ge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLm5hbWluZy5yZXNvdXJjZU5hbWUocHJvcHMuc2VydmljZU5hbWUsIDI1NSksXG4gICAgICBhc3NpZ25QdWJsaWNJcDogZmFsc2UsXG4gICAgICBwbGF0Zm9ybVZlcnNpb246IEZhcmdhdGVQbGF0Zm9ybVZlcnNpb24uTEFURVNULFxuICAgICAgdnBjU3VibmV0czoge1xuICAgICAgICBzdWJuZXRzOiBwcm9wcy5zdWJuZXRzLFxuICAgICAgfSxcbiAgICB9O1xuICAgIGNvbnN0IGFsbFByb3BzOiBGYXJnYXRlU2VydmljZVByb3BzID0ge1xuICAgICAgLi4ucHJvcHMsXG4gICAgICAuLi5vdmVycmlkZVByb3BzLFxuICAgIH07XG4gICAgcmV0dXJuIGFsbFByb3BzO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IE1kYWFFQ1NGYXJnYXRlU2VydmljZVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkLCBNZGFhRUNTRmFyZ2F0ZVNlcnZpY2Uuc2V0UHJvcHMocHJvcHMpKTtcblxuICAgIG5ldyBNZGFhUGFyYW1BbmRPdXRwdXQoXG4gICAgICB0aGlzLFxuICAgICAge1xuICAgICAgICAuLi57XG4gICAgICAgICAgcmVzb3VyY2VUeXBlOiAnZmFyZ2F0ZXNlcnZpY2UnLFxuICAgICAgICAgIHJlc291cmNlSWQ6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgICAgIG5hbWU6ICdhcm4nLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlcnZpY2VBcm4sXG4gICAgICAgIH0sXG4gICAgICAgIC4uLnByb3BzLFxuICAgICAgfSxcbiAgICAgIHNjb3BlLFxuICAgICk7XG4gICAgbmV3IE1kYWFQYXJhbUFuZE91dHB1dChcbiAgICAgIHRoaXMsXG4gICAgICB7XG4gICAgICAgIC4uLntcbiAgICAgICAgICByZXNvdXJjZVR5cGU6ICdmYXJnYXRlc2VydmljZScsXG4gICAgICAgICAgcmVzb3VyY2VJZDogcHJvcHMuc2VydmljZU5hbWUsXG4gICAgICAgICAgbmFtZTogJ25hbWUnLFxuICAgICAgICAgIHZhbHVlOiB0aGlzLnNlcnZpY2VOYW1lLFxuICAgICAgICB9LFxuICAgICAgICAuLi5wcm9wcyxcbiAgICAgIH0sXG4gICAgICBzY29wZSxcbiAgICApO1xuICB9XG59XG4iXX0=
|
package/lib/index.d.ts
ADDED
package/lib/index.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/*!
|
|
2
|
+
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
3
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
"use strict";
|
|
7
|
+
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
20
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
21
|
+
};
|
|
22
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
23
|
+
__exportStar(require("./cluster"), exports);
|
|
24
|
+
__exportStar(require("./fargate-service"), exports);
|
|
25
|
+
__exportStar(require("./container-definition"), exports);
|
|
26
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7OztHQUdHOzs7Ozs7Ozs7Ozs7Ozs7O0FBRUgsNENBQTBCO0FBQzFCLG9EQUFrQztBQUNsQyx5REFBdUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiFcbiAqIENvcHlyaWdodCBBbWF6b24uY29tLCBJbmMuIG9yIGl0cyBhZmZpbGlhdGVzLiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjBcbiAqL1xuXG5leHBvcnQgKiBmcm9tICcuL2NsdXN0ZXInO1xuZXhwb3J0ICogZnJvbSAnLi9mYXJnYXRlLXNlcnZpY2UnO1xuZXhwb3J0ICogZnJvbSAnLi9jb250YWluZXItZGVmaW5pdGlvbic7XG4iXX0=
|