truemark-cdk-lib 1.2.4-alpha.4 → 1.2.4-alpha.41
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/aws-apigatewayv2/lib/index.d.ts +2 -0
- package/aws-apigatewayv2/lib/index.js +3 -1
- package/aws-apigatewayv2/lib/standard-domain-name.d.ts +17 -13
- package/aws-apigatewayv2/lib/standard-domain-name.js +22 -22
- package/aws-apigatewayv2/lib/standard-http-api.d.ts +60 -0
- package/aws-apigatewayv2/lib/standard-http-api.js +50 -0
- package/aws-apigatewayv2/lib/standard-web-socket-api.d.ts +61 -0
- package/aws-apigatewayv2/lib/standard-web-socket-api.js +55 -0
- package/aws-cdk/lib/extended-app.d.ts +29 -0
- package/aws-cdk/lib/extended-app.js +39 -0
- package/aws-cdk/lib/extended-stack.d.ts +4 -6
- package/aws-cdk/lib/extended-stack.js +14 -9
- package/aws-cdk/lib/index.d.ts +2 -3
- package/aws-cdk/lib/index.js +3 -4
- package/aws-cdk/lib/single-env-app.d.ts +4 -4
- package/aws-cdk/lib/single-env-app.js +14 -6
- package/aws-cdk/lib/standard-tags.d.ts +61 -41
- package/aws-cdk/lib/standard-tags.js +123 -14
- package/{test/aws-cloudwatch/estimated-charges-alarm.test.d.ts → aws-cdk/lib/standard-tags.test.d.ts} +0 -0
- package/aws-cdk/lib/standard-tags.test.js +9 -0
- package/aws-centergauge/lib/alerts-topic.d.ts +3 -1
- package/aws-centergauge/lib/alerts-topic.js +2 -8
- package/{test/aws-codepipeline/cdk-pipeline.test.d.ts → aws-cloudwatch/lib/estimated-charges-alarm.test.d.ts} +0 -0
- package/{test/aws-cloudwatch → aws-cloudwatch/lib}/estimated-charges-alarm.test.js +4 -4
- package/aws-codepipeline/lib/cdk-pipeline.d.ts +17 -0
- package/aws-codepipeline/lib/cdk-pipeline.js +59 -11
- package/{test/aws-codepipeline/extended-stack.test.d.ts → aws-codepipeline/lib/cdk-pipeline.test.d.ts} +0 -0
- package/{test/aws-codepipeline → aws-codepipeline/lib}/cdk-pipeline.test.js +4 -4
- package/{test/aws-dynamodb/batch-write-item.test.d.ts → aws-codepipeline/lib/extended-stack.test.d.ts} +0 -0
- package/{test/aws-codepipeline → aws-codepipeline/lib}/extended-stack.test.js +4 -4
- package/{test/aws-dynamodb/extended-table.test.d.ts → aws-dynamodb/lib/batch-write-item.test.d.ts} +0 -0
- package/{test/aws-dynamodb → aws-dynamodb/lib}/batch-write-item.test.js +3 -3
- package/{test/aws-dynamodb/put-item.test.d.ts → aws-dynamodb/lib/extended-table.test.d.ts} +0 -0
- package/aws-dynamodb/lib/extended-table.test.js +32 -0
- package/{test/aws-lambda/extended-function.test.d.ts → aws-dynamodb/lib/put-item.test.d.ts} +0 -0
- package/{test/aws-dynamodb → aws-dynamodb/lib}/put-item.test.js +3 -3
- package/aws-dynamodb/lib/standard-table.d.ts +5 -4
- package/aws-dynamodb/lib/standard-table.js +5 -9
- package/aws-ecs/lib/standard-fargate-cluster.d.ts +3 -1
- package/aws-ecs/lib/standard-fargate-cluster.js +2 -8
- package/aws-ecs/lib/standard-fargate-service.d.ts +3 -1
- package/aws-ecs/lib/standard-fargate-service.js +2 -8
- package/{test/aws-lambda/extended-go-function.test.d.ts → aws-lambda/lib/extended-function.test.d.ts} +0 -0
- package/aws-lambda/lib/extended-function.test.js +20 -0
- package/{test/aws-lambda/extended-nodejs-function.test.d.ts → aws-lambda/lib/extended-go-function.test.d.ts} +0 -0
- package/{test/aws-lambda → aws-lambda/lib}/extended-go-function.test.js +4 -4
- package/aws-lambda/lib/extended-nodejs-function.d.ts +1 -1
- package/aws-lambda/lib/extended-nodejs-function.js +1 -1
- package/{test/aws-lambda/extended-python-function.test.d.ts → aws-lambda/lib/extended-nodejs-function.test.d.ts} +0 -0
- package/aws-lambda/lib/extended-nodejs-function.test.js +20 -0
- package/{test/aws-lambda/standard-python-function.test.d.ts → aws-lambda/lib/extended-python-function.test.d.ts} +0 -0
- package/aws-lambda/lib/extended-python-function.test.js +17 -0
- package/{test/aws-monitoring/alarm-facade.test.d.ts → aws-lambda/lib/standard-python-function.test.d.ts} +0 -0
- package/{test/aws-lambda → aws-lambda/lib}/standard-python-function.test.js +2 -2
- package/{test/aws-route53/domain-name.test.d.ts → aws-monitoring/lib/alarm-facade.test.d.ts} +0 -0
- package/{test/aws-monitoring → aws-monitoring/lib}/alarm-facade.test.js +9 -9
- package/aws-patterns-wordpress/lib/init.sh +4 -4
- package/aws-patterns-wordpress/lib/word-press-instance.d.ts +43 -5
- package/aws-patterns-wordpress/lib/word-press-instance.js +130 -89
- package/aws-route53/lib/domain-name.d.ts +7 -14
- package/aws-route53/lib/domain-name.js +27 -28
- package/{test/aws-sqs/standard-queue.test.d.ts → aws-route53/lib/domain-name.test.d.ts} +0 -0
- package/{test/aws-route53 → aws-route53/lib}/domain-name.test.js +8 -8
- package/aws-route53/lib/extended-record-target.d.ts +14 -0
- package/aws-route53/lib/extended-record-target.js +35 -0
- package/{test/aws-ssm/parameter-store.test.d.ts → aws-route53/lib/extended-record-target.test.d.ts} +0 -0
- package/aws-route53/lib/extended-record-target.test.js +52 -0
- package/aws-route53/lib/index.d.ts +3 -3
- package/aws-route53/lib/index.js +2 -2
- package/aws-route53/lib/latency-a-record.d.ts +4 -0
- package/aws-route53/lib/latency-a-record.js +2 -1
- package/aws-route53/lib/weighted-a-record.d.ts +4 -0
- package/aws-route53/lib/weighted-a-record.js +2 -1
- package/aws-s3/lib/cloud-front-bucket.d.ts +14 -3
- package/aws-s3/lib/cloud-front-bucket.js +25 -3
- package/aws-s3/lib/website-bucket.d.ts +2 -2
- package/aws-s3/lib/website-bucket.js +5 -7
- package/aws-sqs/lib/standard-queue.d.ts +3 -1
- package/aws-sqs/lib/standard-queue.js +2 -8
- package/{test/aws-website/website.test.d.ts → aws-sqs/lib/standard-queue.test.d.ts} +0 -0
- package/aws-sqs/lib/standard-queue.test.js +16 -0
- package/{test/helpers/string-helper.test.d.ts → aws-ssm/lib/parameter-store.test.d.ts} +0 -0
- package/{test/aws-ssm → aws-ssm/lib}/parameter-store.test.js +4 -4
- package/aws-vpc/lib/network-parameters.d.ts +3 -1
- package/aws-vpc/lib/network-parameters.js +2 -8
- package/aws-website/lib/website.test.d.ts +1 -0
- package/aws-website/lib/website.test.js +60 -0
- package/helpers/lib/index.d.ts +0 -1
- package/helpers/lib/index.js +1 -2
- package/helpers/lib/string-helper.test.d.ts +1 -0
- package/{test/helpers → helpers/lib}/string-helper.test.js +2 -2
- package/jest.config.js +1 -1
- package/package.json +3 -3
- package/{test/test-helper.d.ts → test-helper.d.ts} +8 -3
- package/test-helper.js +45 -0
- package/aws-cdk/lib/standard-app.d.ts +0 -19
- package/aws-cdk/lib/standard-app.js +0 -19
- package/aws-cdk/lib/standard-environment.d.ts +0 -10
- package/aws-cdk/lib/standard-environment.js +0 -3
- package/aws-cdk/lib/standard-stack.d.ts +0 -19
- package/aws-cdk/lib/standard-stack.js +0 -36
- package/aws-cdk/lib/standard-stage.d.ts +0 -19
- package/aws-cdk/lib/standard-stage.js +0 -24
- package/aws-route53/lib/weighted-latency-a-record.d.ts +0 -30
- package/aws-route53/lib/weighted-latency-a-record.js +0 -34
- package/helpers/lib/constants.d.ts +0 -3
- package/helpers/lib/constants.js +0 -7
- package/test/aws-dynamodb/extended-table.test.js +0 -32
- package/test/aws-lambda/extended-function.test.js +0 -20
- package/test/aws-lambda/extended-nodejs-function.test.js +0 -20
- package/test/aws-lambda/extended-python-function.test.js +0 -17
- package/test/aws-sqs/standard-queue.test.js +0 -16
- package/test/aws-website/website.test.js +0 -60
- package/test/test-helper.js +0 -34
|
@@ -11,4 +11,6 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
11
11
|
};
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
__exportStar(require("./standard-domain-name"), exports);
|
|
14
|
-
|
|
14
|
+
__exportStar(require("./standard-http-api"), exports);
|
|
15
|
+
__exportStar(require("./standard-web-socket-api"), exports);
|
|
16
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSx5REFBdUM7QUFDdkMsc0RBQW9DO0FBQ3BDLDREQUEwQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL3N0YW5kYXJkLWRvbWFpbi1uYW1lXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9zdGFuZGFyZC1odHRwLWFwaVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vc3RhbmRhcmQtd2ViLXNvY2tldC1hcGlcIjtcbiJdfQ==
|
|
@@ -3,18 +3,19 @@ import * as tmroute53 from "../../aws-route53";
|
|
|
3
3
|
import { ICertificate } from "aws-cdk-lib/aws-certificatemanager";
|
|
4
4
|
import { DomainName, SecurityPolicy } from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
5
5
|
import { ARecord, RecordTarget } from "aws-cdk-lib/aws-route53";
|
|
6
|
-
import {
|
|
6
|
+
import { IAutomationComponent } from "../../aws-cdk";
|
|
7
|
+
import { ARecordOptions } from "../../aws-route53";
|
|
7
8
|
export interface StandardDomainNameProps extends tmroute53.DomainNameProps {
|
|
8
9
|
/**
|
|
9
10
|
* The optional ACM certificate for this domain name.
|
|
10
11
|
*
|
|
11
|
-
* @default one is generated
|
|
12
|
+
* @default - one is generated
|
|
12
13
|
*/
|
|
13
14
|
readonly certificate?: ICertificate;
|
|
14
15
|
/**
|
|
15
16
|
* The Transport Layer Security (TLS) version + cipher suite for this domain name.
|
|
16
17
|
*
|
|
17
|
-
* @default SecurityPolicy.TLS_1_2
|
|
18
|
+
* @default - SecurityPolicy.TLS_1_2
|
|
18
19
|
*/
|
|
19
20
|
readonly securityPolicy?: SecurityPolicy;
|
|
20
21
|
/**
|
|
@@ -28,32 +29,35 @@ export interface StandardDomainNameProps extends tmroute53.DomainNameProps {
|
|
|
28
29
|
/**
|
|
29
30
|
* Standard construct used to create an API Gateway V2 Domain Name.
|
|
30
31
|
*/
|
|
31
|
-
export declare class StandardDomainName extends Construct {
|
|
32
|
+
export declare class StandardDomainName extends Construct implements IAutomationComponent {
|
|
33
|
+
readonly automationComponentTags: import("../../aws-cdk").AutomationComponentTagsProps;
|
|
32
34
|
readonly domainName: tmroute53.DomainName;
|
|
33
35
|
readonly certificate: ICertificate;
|
|
34
|
-
readonly recordTarget: RecordTarget;
|
|
35
36
|
readonly gatewayDomainName: DomainName;
|
|
36
37
|
constructor(scope: Construct, id: string, props: StandardDomainNameProps);
|
|
38
|
+
toRecordTarget(evaluateTargetHealth?: boolean): RecordTarget;
|
|
37
39
|
/**
|
|
38
40
|
* Creates a route53 ARecord pointing to this domain name.
|
|
41
|
+
*
|
|
42
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
43
|
+
* @param options additional options for creating the record
|
|
39
44
|
*/
|
|
40
|
-
createARecord(): ARecord;
|
|
45
|
+
createARecord(evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
|
|
41
46
|
/**
|
|
42
47
|
* Creates a route53 weighted record pointing to this domain name.
|
|
43
48
|
*
|
|
44
49
|
* @param weight the initial weight; defaults to 0
|
|
50
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
51
|
+
* @param options additional options for creating the record
|
|
45
52
|
*/
|
|
46
|
-
createWeightedARecord(weight?:
|
|
53
|
+
createWeightedARecord(weight: number, evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
|
|
47
54
|
/**
|
|
48
55
|
* Creates a route53 latency record pointing to this domain name.
|
|
49
|
-
*/
|
|
50
|
-
createLatencyARecord(): ARecord;
|
|
51
|
-
/**
|
|
52
|
-
* Creates a route53 weighted latency record pointing to this domain name.
|
|
53
56
|
*
|
|
54
|
-
* @param
|
|
57
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
58
|
+
* @param options additional options for creating the record
|
|
55
59
|
*/
|
|
56
|
-
|
|
60
|
+
createLatencyARecord(evaluateTargetHealth?: boolean, options?: ARecordOptions): ARecord;
|
|
57
61
|
/**
|
|
58
62
|
* Returns the FQDN of this domain name.
|
|
59
63
|
*/
|
|
@@ -6,8 +6,8 @@ const tmroute53 = require("../../aws-route53");
|
|
|
6
6
|
const targets = require("aws-cdk-lib/aws-route53-targets");
|
|
7
7
|
const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
|
|
8
8
|
const aws_route53_1 = require("aws-cdk-lib/aws-route53");
|
|
9
|
-
const helpers_1 = require("../../helpers");
|
|
10
9
|
const aws_cdk_1 = require("../../aws-cdk");
|
|
10
|
+
const aws_route53_2 = require("../../aws-route53");
|
|
11
11
|
/**
|
|
12
12
|
* Standard construct used to create an API Gateway V2 Domain Name.
|
|
13
13
|
*/
|
|
@@ -15,6 +15,7 @@ class StandardDomainName extends constructs_1.Construct {
|
|
|
15
15
|
constructor(scope, id, props) {
|
|
16
16
|
var _a;
|
|
17
17
|
super(scope, id);
|
|
18
|
+
this.automationComponentTags = aws_cdk_1.InternalAutomationComponentTags;
|
|
18
19
|
this.domainName = new tmroute53.DomainName(props);
|
|
19
20
|
this.certificate = (_a = props.certificate) !== null && _a !== void 0 ? _a : this.domainName.createCertificate(scope);
|
|
20
21
|
this.gatewayDomainName = new aws_apigatewayv2_alpha_1.DomainName(this, "Default", {
|
|
@@ -22,41 +23,40 @@ class StandardDomainName extends constructs_1.Construct {
|
|
|
22
23
|
certificate: this.certificate,
|
|
23
24
|
securityPolicy: props.securityPolicy
|
|
24
25
|
});
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
});
|
|
26
|
+
}
|
|
27
|
+
toRecordTarget(evaluateTargetHealth) {
|
|
28
|
+
const domainProperties = new targets.ApiGatewayv2DomainProperties(this.gatewayDomainName.regionalDomainName, this.gatewayDomainName.regionalHostedZoneId);
|
|
29
|
+
return evaluateTargetHealth
|
|
30
|
+
? aws_route53_2.ExtendedRecordTarget.fromAlias(domainProperties, evaluateTargetHealth)
|
|
31
|
+
: aws_route53_1.RecordTarget.fromAlias(domainProperties);
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
34
|
* Creates a route53 ARecord pointing to this domain name.
|
|
35
|
+
*
|
|
36
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
37
|
+
* @param options additional options for creating the record
|
|
35
38
|
*/
|
|
36
|
-
createARecord() {
|
|
37
|
-
return this.domainName.createARecord(this, this.
|
|
39
|
+
createARecord(evaluateTargetHealth, options) {
|
|
40
|
+
return this.domainName.createARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), options);
|
|
38
41
|
}
|
|
39
42
|
/**
|
|
40
43
|
* Creates a route53 weighted record pointing to this domain name.
|
|
41
44
|
*
|
|
42
45
|
* @param weight the initial weight; defaults to 0
|
|
46
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
47
|
+
* @param options additional options for creating the record
|
|
43
48
|
*/
|
|
44
|
-
createWeightedARecord(weight) {
|
|
45
|
-
return this.domainName.createWeightedARecord(this, this.
|
|
49
|
+
createWeightedARecord(weight, evaluateTargetHealth, options) {
|
|
50
|
+
return this.domainName.createWeightedARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), weight, options);
|
|
46
51
|
}
|
|
47
52
|
/**
|
|
48
53
|
* Creates a route53 latency record pointing to this domain name.
|
|
49
|
-
*/
|
|
50
|
-
createLatencyARecord() {
|
|
51
|
-
return this.domainName.createLatencyARecord(this, this.recordTarget);
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Creates a route53 weighted latency record pointing to this domain name.
|
|
55
54
|
*
|
|
56
|
-
* @param
|
|
55
|
+
* @param evaluateTargetHealth Determines if route53 evaluates the target's health. Defaults to true.
|
|
56
|
+
* @param options additional options for creating the record
|
|
57
57
|
*/
|
|
58
|
-
|
|
59
|
-
return this.domainName.
|
|
58
|
+
createLatencyARecord(evaluateTargetHealth, options) {
|
|
59
|
+
return this.domainName.createLatencyARecord(this, this.toRecordTarget(evaluateTargetHealth !== null && evaluateTargetHealth !== void 0 ? evaluateTargetHealth : true), options);
|
|
60
60
|
}
|
|
61
61
|
/**
|
|
62
62
|
* Returns the FQDN of this domain name.
|
|
@@ -66,4 +66,4 @@ class StandardDomainName extends constructs_1.Construct {
|
|
|
66
66
|
}
|
|
67
67
|
}
|
|
68
68
|
exports.StandardDomainName = StandardDomainName;
|
|
69
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
69
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtZG9tYWluLW5hbWUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC1kb21haW4tbmFtZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMsK0NBQStDO0FBQy9DLDJEQUEyRDtBQUUzRCw0RUFBMkU7QUFDM0UseURBQThEO0FBQzlELDJDQUFvRjtBQUNwRixtREFBdUU7QUEyQnZFOztHQUVHO0FBQ0gsTUFBYSxrQkFBbUIsU0FBUSxzQkFBUztJQVEvQyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQThCOztRQUN0RSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBUFYsNEJBQXVCLEdBQUcseUNBQStCLENBQUM7UUFRakUsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFNBQVMsQ0FBQyxVQUFVLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDbEQsSUFBSSxDQUFDLFdBQVcsU0FBRyxLQUFLLENBQUMsV0FBVyxtQ0FBSSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pGLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxJQUFJLG1DQUFVLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUN2RCxVQUFVLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUU7WUFDdEMsV0FBVyxFQUFFLElBQUksQ0FBQyxXQUFXO1lBQzdCLGNBQWMsRUFBRSxLQUFLLENBQUMsY0FBYztTQUNyQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsY0FBYyxDQUFDLG9CQUE4QjtRQUMzQyxNQUFNLGdCQUFnQixHQUFHLElBQUksT0FBTyxDQUFDLDRCQUE0QixDQUMvRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLENBQUM7UUFDMUYsT0FBTyxvQkFBb0I7WUFDekIsQ0FBQyxDQUFDLGtDQUFvQixDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0IsQ0FBQztZQUN4RSxDQUFDLENBQUMsMEJBQVksQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxhQUFhLENBQUMsb0JBQThCLEVBQUUsT0FBd0I7UUFDcEUsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsYUFBcEIsb0JBQW9CLGNBQXBCLG9CQUFvQixHQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pHLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxxQkFBcUIsQ0FBQyxNQUFjLEVBQUUsb0JBQThCLEVBQUUsT0FBd0I7UUFDNUYsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLG9CQUFvQixhQUFwQixvQkFBb0IsY0FBcEIsb0JBQW9CLEdBQUksSUFBSSxDQUFDLEVBQUUsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pILENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILG9CQUFvQixDQUFDLG9CQUE4QixFQUFFLE9BQXdCO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxvQkFBb0IsYUFBcEIsb0JBQW9CLGNBQXBCLG9CQUFvQixHQUFJLElBQUksQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hILENBQUM7SUFFRDs7T0FFRztJQUNILFFBQVE7UUFDTixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDcEMsQ0FBQztDQUNGO0FBaEVELGdEQWdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7Q29uc3RydWN0fSBmcm9tIFwiY29uc3RydWN0c1wiO1xuaW1wb3J0ICogYXMgdG1yb3V0ZTUzIGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0ICogYXMgdGFyZ2V0cyBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTMtdGFyZ2V0c1wiO1xuaW1wb3J0IHtJQ2VydGlmaWNhdGV9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtY2VydGlmaWNhdGVtYW5hZ2VyXCI7XG5pbXBvcnQge0RvbWFpbk5hbWUsIFNlY3VyaXR5UG9saWN5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYVwiO1xuaW1wb3J0IHtBUmVjb3JkLCBSZWNvcmRUYXJnZXR9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtJQXV0b21hdGlvbkNvbXBvbmVudCwgSW50ZXJuYWxBdXRvbWF0aW9uQ29tcG9uZW50VGFnc30gZnJvbSBcIi4uLy4uL2F3cy1jZGtcIjtcbmltcG9ydCB7QVJlY29yZE9wdGlvbnMsIEV4dGVuZGVkUmVjb3JkVGFyZ2V0fSBmcm9tIFwiLi4vLi4vYXdzLXJvdXRlNTNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZERvbWFpbk5hbWVQcm9wcyBleHRlbmRzIHRtcm91dGU1My5Eb21haW5OYW1lUHJvcHMge1xuXG4gIC8qKlxuICAgKiBUaGUgb3B0aW9uYWwgQUNNIGNlcnRpZmljYXRlIGZvciB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIG9uZSBpcyBnZW5lcmF0ZWRcbiAgICovXG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlPzogSUNlcnRpZmljYXRlO1xuXG4gIC8qKlxuICAgKiBUaGUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IChUTFMpIHZlcnNpb24gKyBjaXBoZXIgc3VpdGUgZm9yIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gU2VjdXJpdHlQb2xpY3kuVExTXzFfMlxuICAgKi9cbiAgcmVhZG9ubHkgc2VjdXJpdHlQb2xpY3k/OiBTZWN1cml0eVBvbGljeTtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBzdXBwcmVzcyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCB0YWdzIG9uIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1RhZ2dpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIFN0YW5kYXJkIGNvbnN0cnVjdCB1c2VkIHRvIGNyZWF0ZSBhbiBBUEkgR2F0ZXdheSBWMiBEb21haW4gTmFtZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkRG9tYWluTmFtZSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElBdXRvbWF0aW9uQ29tcG9uZW50IHtcblxuICByZWFkb25seSBhdXRvbWF0aW9uQ29tcG9uZW50VGFncyA9IEludGVybmFsQXV0b21hdGlvbkNvbXBvbmVudFRhZ3M7XG5cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogdG1yb3V0ZTUzLkRvbWFpbk5hbWU7XG4gIHJlYWRvbmx5IGNlcnRpZmljYXRlOiBJQ2VydGlmaWNhdGU7XG4gIHJlYWRvbmx5IGdhdGV3YXlEb21haW5OYW1lOiBEb21haW5OYW1lO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFyZERvbWFpbk5hbWVQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG4gICAgdGhpcy5kb21haW5OYW1lID0gbmV3IHRtcm91dGU1My5Eb21haW5OYW1lKHByb3BzKTtcbiAgICB0aGlzLmNlcnRpZmljYXRlID0gcHJvcHMuY2VydGlmaWNhdGUgPz8gdGhpcy5kb21haW5OYW1lLmNyZWF0ZUNlcnRpZmljYXRlKHNjb3BlKTtcbiAgICB0aGlzLmdhdGV3YXlEb21haW5OYW1lID0gbmV3IERvbWFpbk5hbWUodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGRvbWFpbk5hbWU6IHRoaXMuZG9tYWluTmFtZS50b1N0cmluZygpLFxuICAgICAgY2VydGlmaWNhdGU6IHRoaXMuY2VydGlmaWNhdGUsXG4gICAgICBzZWN1cml0eVBvbGljeTogcHJvcHMuc2VjdXJpdHlQb2xpY3lcbiAgICB9KTtcbiAgfVxuXG4gIHRvUmVjb3JkVGFyZ2V0KGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbik6IFJlY29yZFRhcmdldCB7XG4gICAgY29uc3QgZG9tYWluUHJvcGVydGllcyA9IG5ldyB0YXJnZXRzLkFwaUdhdGV3YXl2MkRvbWFpblByb3BlcnRpZXMoXG4gICAgICB0aGlzLmdhdGV3YXlEb21haW5OYW1lLnJlZ2lvbmFsRG9tYWluTmFtZSwgdGhpcy5nYXRld2F5RG9tYWluTmFtZS5yZWdpb25hbEhvc3RlZFpvbmVJZCk7XG4gICAgcmV0dXJuIGV2YWx1YXRlVGFyZ2V0SGVhbHRoXG4gICAgICA/IEV4dGVuZGVkUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhkb21haW5Qcm9wZXJ0aWVzLCBldmFsdWF0ZVRhcmdldEhlYWx0aClcbiAgICAgIDogUmVjb3JkVGFyZ2V0LmZyb21BbGlhcyhkb21haW5Qcm9wZXJ0aWVzKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm91dGU1MyBBUmVjb3JkIHBvaW50aW5nIHRvIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqXG4gICAqIEBwYXJhbSBldmFsdWF0ZVRhcmdldEhlYWx0aCBEZXRlcm1pbmVzIGlmIHJvdXRlNTMgZXZhbHVhdGVzIHRoZSB0YXJnZXQncyBoZWFsdGguIERlZmF1bHRzIHRvIHRydWUuXG4gICAqIEBwYXJhbSBvcHRpb25zIGFkZGl0aW9uYWwgb3B0aW9ucyBmb3IgY3JlYXRpbmcgdGhlIHJlY29yZFxuICAgKi9cbiAgY3JlYXRlQVJlY29yZChldmFsdWF0ZVRhcmdldEhlYWx0aD86IGJvb2xlYW4sIG9wdGlvbnM/OiBBUmVjb3JkT3B0aW9ucyk6IEFSZWNvcmQge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUuY3JlYXRlQVJlY29yZCh0aGlzLCB0aGlzLnRvUmVjb3JkVGFyZ2V0KGV2YWx1YXRlVGFyZ2V0SGVhbHRoID8/IHRydWUpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm91dGU1MyB3ZWlnaHRlZCByZWNvcmQgcG9pbnRpbmcgdG8gdGhpcyBkb21haW4gbmFtZS5cbiAgICpcbiAgICogQHBhcmFtIHdlaWdodCB0aGUgaW5pdGlhbCB3ZWlnaHQ7IGRlZmF1bHRzIHRvIDBcbiAgICogQHBhcmFtIGV2YWx1YXRlVGFyZ2V0SGVhbHRoIERldGVybWluZXMgaWYgcm91dGU1MyBldmFsdWF0ZXMgdGhlIHRhcmdldCdzIGhlYWx0aC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICogQHBhcmFtIG9wdGlvbnMgYWRkaXRpb25hbCBvcHRpb25zIGZvciBjcmVhdGluZyB0aGUgcmVjb3JkXG4gICAqL1xuICBjcmVhdGVXZWlnaHRlZEFSZWNvcmQod2VpZ2h0OiBudW1iZXIsIGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbiwgb3B0aW9ucz86IEFSZWNvcmRPcHRpb25zKTogQVJlY29yZCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tYWluTmFtZS5jcmVhdGVXZWlnaHRlZEFSZWNvcmQodGhpcywgdGhpcy50b1JlY29yZFRhcmdldChldmFsdWF0ZVRhcmdldEhlYWx0aCA/PyB0cnVlKSwgd2VpZ2h0LCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgcm91dGU1MyBsYXRlbmN5IHJlY29yZCBwb2ludGluZyB0byB0aGlzIGRvbWFpbiBuYW1lLlxuICAgKlxuICAgKiBAcGFyYW0gZXZhbHVhdGVUYXJnZXRIZWFsdGggRGV0ZXJtaW5lcyBpZiByb3V0ZTUzIGV2YWx1YXRlcyB0aGUgdGFyZ2V0J3MgaGVhbHRoLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBhZGRpdGlvbmFsIG9wdGlvbnMgZm9yIGNyZWF0aW5nIHRoZSByZWNvcmRcbiAgICovXG4gIGNyZWF0ZUxhdGVuY3lBUmVjb3JkKGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbiwgb3B0aW9ucz86IEFSZWNvcmRPcHRpb25zKTogQVJlY29yZCB7XG4gICAgcmV0dXJuIHRoaXMuZG9tYWluTmFtZS5jcmVhdGVMYXRlbmN5QVJlY29yZCh0aGlzLCB0aGlzLnRvUmVjb3JkVGFyZ2V0KGV2YWx1YXRlVGFyZ2V0SGVhbHRoID8/IHRydWUpLCBvcHRpb25zKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBGUUROIG9mIHRoaXMgZG9tYWluIG5hbWUuXG4gICAqL1xuICB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRvbWFpbk5hbWUudG9TdHJpbmcoKTtcbiAgfVxufVxuIl19
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { LatencyARecord, WeightedARecord } from "../../aws-route53";
|
|
3
|
+
import { StandardDomainName } from "./standard-domain-name";
|
|
4
|
+
import { HttpApi } from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
5
|
+
import { ARecord } from "aws-cdk-lib/aws-route53";
|
|
6
|
+
import { IAutomationComponent } from "../../aws-cdk";
|
|
7
|
+
/**
|
|
8
|
+
* Properties for StandardHttpApi.
|
|
9
|
+
*/
|
|
10
|
+
export interface StandardHttpApiProps {
|
|
11
|
+
/**
|
|
12
|
+
* The prefix of the domain to create the certificate and DNS record for.
|
|
13
|
+
*/
|
|
14
|
+
readonly domainPrefix: string;
|
|
15
|
+
/**
|
|
16
|
+
* The zone of the domain to create the certificate and DNS record for.
|
|
17
|
+
*/
|
|
18
|
+
readonly domainZone: string;
|
|
19
|
+
/**
|
|
20
|
+
* Name of the API Gateway. One will be generated if not provided.
|
|
21
|
+
*/
|
|
22
|
+
readonly apiName?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Determines if a route53 record is created for the API gateway. Defaults to true.
|
|
25
|
+
*
|
|
26
|
+
* @default - true
|
|
27
|
+
*/
|
|
28
|
+
readonly createRecord?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a weighted route53 record. May not be used with recordLatency.
|
|
31
|
+
*/
|
|
32
|
+
readonly recordWeight?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a latency route53 record. May not be used with recordWeight.
|
|
35
|
+
*/
|
|
36
|
+
readonly recordLatency?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Evaluates target health on the created route53 record if it's a latency or weighted record. Defaults to true.
|
|
39
|
+
*
|
|
40
|
+
* @default - true
|
|
41
|
+
*/
|
|
42
|
+
readonly evaluateTargetHealth?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Setting this to true will suppress the creation of default tags on resources
|
|
45
|
+
* created by this construct. Default is false.
|
|
46
|
+
*
|
|
47
|
+
* @default - false
|
|
48
|
+
*/
|
|
49
|
+
readonly suppressTagging?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Abstraction that creates an HttpApi with support infrastructure.
|
|
53
|
+
*/
|
|
54
|
+
export declare class StandardHttpApi extends Construct implements IAutomationComponent {
|
|
55
|
+
readonly automationComponentTags: import("../../aws-cdk").AutomationComponentTagsProps;
|
|
56
|
+
readonly domainName: StandardDomainName;
|
|
57
|
+
readonly record: ARecord | LatencyARecord | WeightedARecord | undefined;
|
|
58
|
+
readonly httpApi: HttpApi;
|
|
59
|
+
constructor(scope: Construct, id: string, props: StandardHttpApiProps);
|
|
60
|
+
}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardHttpApi = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const standard_domain_name_1 = require("./standard-domain-name");
|
|
6
|
+
const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
9
|
+
/**
|
|
10
|
+
* Abstraction that creates an HttpApi with support infrastructure.
|
|
11
|
+
*/
|
|
12
|
+
class StandardHttpApi extends constructs_1.Construct {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.automationComponentTags = aws_cdk_1.InternalAutomationComponentTags;
|
|
17
|
+
const domainName = new standard_domain_name_1.StandardDomainName(this, "DomainName", {
|
|
18
|
+
prefix: props.domainPrefix,
|
|
19
|
+
zone: props.domainZone,
|
|
20
|
+
securityPolicy: aws_apigatewayv2_alpha_1.SecurityPolicy.TLS_1_2 // TODO Should be an option
|
|
21
|
+
});
|
|
22
|
+
// TODO Need to add RecordOptions
|
|
23
|
+
if ((_a = props.createRecord) !== null && _a !== void 0 ? _a : true) {
|
|
24
|
+
if (props.recordWeight) {
|
|
25
|
+
domainName.createWeightedARecord(props.recordWeight, (_b = props.evaluateTargetHealth) !== null && _b !== void 0 ? _b : true);
|
|
26
|
+
}
|
|
27
|
+
else if (props.recordLatency) {
|
|
28
|
+
domainName.createLatencyARecord(true);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
domainName.createARecord();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.record = undefined;
|
|
36
|
+
}
|
|
37
|
+
const stage = aws_cdk_lib_1.Stage.of(this);
|
|
38
|
+
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
39
|
+
const httpApi = new aws_apigatewayv2_alpha_1.HttpApi(this, "Default", {
|
|
40
|
+
apiName: (_c = props.apiName) !== null && _c !== void 0 ? _c : `${stage === null || stage === void 0 ? void 0 : stage.stageName}${stack === null || stack === void 0 ? void 0 : stack.stackName}Gateway`,
|
|
41
|
+
defaultDomainMapping: {
|
|
42
|
+
domainName: domainName.gatewayDomainName
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
this.domainName = domainName;
|
|
46
|
+
this.httpApi = httpApi;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
exports.StandardHttpApi = StandardHttpApi;
|
|
50
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtaHR0cC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC1odHRwLWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFFckMsaUVBQTBEO0FBQzFELDRFQUF3RTtBQUN4RSw2Q0FBeUM7QUFFekMsMkNBQW9GO0FBdURwRjs7R0FFRztBQUNILE1BQWEsZUFBZ0IsU0FBUSxzQkFBUztJQVE1QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQTJCOztRQUNuRSxLQUFLLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBUFYsNEJBQXVCLEdBQUcseUNBQStCLENBQUM7UUFTakUsTUFBTSxVQUFVLEdBQUcsSUFBSSx5Q0FBa0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFO1lBQzVELE1BQU0sRUFBRSxLQUFLLENBQUMsWUFBWTtZQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDdEIsY0FBYyxFQUFFLHVDQUFjLENBQUMsT0FBTyxDQUFDLDJCQUEyQjtTQUNuRSxDQUFDLENBQUM7UUFFSCxpQ0FBaUM7UUFDakMsVUFBSSxLQUFLLENBQUMsWUFBWSxtQ0FBSSxJQUFJLEVBQUU7WUFDOUIsSUFBSSxLQUFLLENBQUMsWUFBWSxFQUFFO2dCQUN0QixVQUFVLENBQUMscUJBQXFCLENBQUMsS0FBSyxDQUFDLFlBQVksUUFBRSxLQUFLLENBQUMsb0JBQW9CLG1DQUFJLElBQUksQ0FBQyxDQUFBO2FBQ3pGO2lCQUFNLElBQUksS0FBSyxDQUFDLGFBQWEsRUFBRTtnQkFDOUIsVUFBVSxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxDQUFBO2FBQ3RDO2lCQUFNO2dCQUNMLFVBQVUsQ0FBQyxhQUFhLEVBQUUsQ0FBQTthQUMzQjtTQUNGO2FBQU07WUFDTCxJQUFJLENBQUMsTUFBTSxHQUFHLFNBQVMsQ0FBQztTQUN6QjtRQUVELE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzdCLE1BQU0sS0FBSyxHQUFHLG1CQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDO1FBRTdCLE1BQU0sT0FBTyxHQUFHLElBQUksZ0NBQU8sQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFO1lBQzNDLE9BQU8sUUFBRSxLQUFLLENBQUMsT0FBTyxtQ0FBSSxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLEdBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFNBQVMsU0FBUztZQUN6RSxvQkFBb0IsRUFBRTtnQkFDcEIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxpQkFBaUI7YUFDekM7U0FDRixDQUFDLENBQUM7UUFFSCxJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0NBQ0Y7QUEzQ0QsMENBMkNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtDb25zdHJ1Y3R9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQge0RvbWFpbk5hbWUsIExhdGVuY3lBUmVjb3JkLCBXZWlnaHRlZEFSZWNvcmR9IGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtTdGFuZGFyZERvbWFpbk5hbWV9IGZyb20gXCIuL3N0YW5kYXJkLWRvbWFpbi1uYW1lXCI7XG5pbXBvcnQge0h0dHBBcGksIFNlY3VyaXR5UG9saWN5fSBmcm9tIFwiQGF3cy1jZGsvYXdzLWFwaWdhdGV3YXl2Mi1hbHBoYVwiO1xuaW1wb3J0IHtTdGFjaywgU3RhZ2V9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtBUmVjb3JkfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXJvdXRlNTNcIjtcbmltcG9ydCB7SUF1dG9tYXRpb25Db21wb25lbnQsIEludGVybmFsQXV0b21hdGlvbkNvbXBvbmVudFRhZ3N9IGZyb20gXCIuLi8uLi9hd3MtY2RrXCI7XG5cbi8qKlxuICogUHJvcGVydGllcyBmb3IgU3RhbmRhcmRIdHRwQXBpLlxuICovXG5leHBvcnQgaW50ZXJmYWNlIFN0YW5kYXJkSHR0cEFwaVByb3BzIHtcblxuICAvKipcbiAgICogVGhlIHByZWZpeCBvZiB0aGUgZG9tYWluIHRvIGNyZWF0ZSB0aGUgY2VydGlmaWNhdGUgYW5kIEROUyByZWNvcmQgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluUHJlZml4OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFRoZSB6b25lIG9mIHRoZSBkb21haW4gdG8gY3JlYXRlIHRoZSBjZXJ0aWZpY2F0ZSBhbmQgRE5TIHJlY29yZCBmb3IuXG4gICAqL1xuICByZWFkb25seSBkb21haW5ab25lOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIE5hbWUgb2YgdGhlIEFQSSBHYXRld2F5LiBPbmUgd2lsbCBiZSBnZW5lcmF0ZWQgaWYgbm90IHByb3ZpZGVkLlxuICAgKi9cbiAgcmVhZG9ubHkgYXBpTmFtZT86IHN0cmluZztcblxuICAvKipcbiAgICogRGV0ZXJtaW5lcyBpZiBhIHJvdXRlNTMgcmVjb3JkIGlzIGNyZWF0ZWQgZm9yIHRoZSBBUEkgZ2F0ZXdheS4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBjcmVhdGVSZWNvcmQ/OiBib29sZWFuO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgd2VpZ2h0ZWQgcm91dGU1MyByZWNvcmQuIE1heSBub3QgYmUgdXNlZCB3aXRoIHJlY29yZExhdGVuY3kuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRXZWlnaHQ/OiBudW1iZXI7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBsYXRlbmN5IHJvdXRlNTMgcmVjb3JkLiBNYXkgbm90IGJlIHVzZWQgd2l0aCByZWNvcmRXZWlnaHQuXG4gICAqL1xuICByZWFkb25seSByZWNvcmRMYXRlbmN5PzogYm9vbGVhbjtcblxuICAvKipcbiAgICogRXZhbHVhdGVzIHRhcmdldCBoZWFsdGggb24gdGhlIGNyZWF0ZWQgcm91dGU1MyByZWNvcmQgaWYgaXQncyBhIGxhdGVuY3kgb3Igd2VpZ2h0ZWQgcmVjb3JkLiBEZWZhdWx0cyB0byB0cnVlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIHRydWVcbiAgICovXG4gIHJlYWRvbmx5IGV2YWx1YXRlVGFyZ2V0SGVhbHRoPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBzdXBwcmVzcyB0aGUgY3JlYXRpb24gb2YgZGVmYXVsdCB0YWdzIG9uIHJlc291cmNlc1xuICAgKiBjcmVhdGVkIGJ5IHRoaXMgY29uc3RydWN0LiBEZWZhdWx0IGlzIGZhbHNlLlxuICAgKlxuICAgKiBAZGVmYXVsdCAtIGZhbHNlXG4gICAqL1xuICByZWFkb25seSBzdXBwcmVzc1RhZ2dpbmc/OiBib29sZWFuO1xufVxuXG4vKipcbiAqIEFic3RyYWN0aW9uIHRoYXQgY3JlYXRlcyBhbiBIdHRwQXBpIHdpdGggc3VwcG9ydCBpbmZyYXN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkSHR0cEFwaSBleHRlbmRzIENvbnN0cnVjdCBpbXBsZW1lbnRzIElBdXRvbWF0aW9uQ29tcG9uZW50IHtcblxuICByZWFkb25seSBhdXRvbWF0aW9uQ29tcG9uZW50VGFncyA9IEludGVybmFsQXV0b21hdGlvbkNvbXBvbmVudFRhZ3M7XG5cbiAgcmVhZG9ubHkgZG9tYWluTmFtZTogU3RhbmRhcmREb21haW5OYW1lO1xuICByZWFkb25seSByZWNvcmQ6IEFSZWNvcmQgfCBMYXRlbmN5QVJlY29yZCB8IFdlaWdodGVkQVJlY29yZCB8IHVuZGVmaW5lZDtcbiAgcmVhZG9ubHkgaHR0cEFwaTogSHR0cEFwaTtcblxuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhbmRhcmRIdHRwQXBpUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQpO1xuXG4gICAgY29uc3QgZG9tYWluTmFtZSA9IG5ldyBTdGFuZGFyZERvbWFpbk5hbWUodGhpcywgXCJEb21haW5OYW1lXCIsIHtcbiAgICAgIHByZWZpeDogcHJvcHMuZG9tYWluUHJlZml4LFxuICAgICAgem9uZTogcHJvcHMuZG9tYWluWm9uZSxcbiAgICAgIHNlY3VyaXR5UG9saWN5OiBTZWN1cml0eVBvbGljeS5UTFNfMV8yIC8vIFRPRE8gU2hvdWxkIGJlIGFuIG9wdGlvblxuICAgIH0pO1xuXG4gICAgLy8gVE9ETyBOZWVkIHRvIGFkZCBSZWNvcmRPcHRpb25zXG4gICAgaWYgKHByb3BzLmNyZWF0ZVJlY29yZCA/PyB0cnVlKSB7XG4gICAgICBpZiAocHJvcHMucmVjb3JkV2VpZ2h0KSB7XG4gICAgICAgIGRvbWFpbk5hbWUuY3JlYXRlV2VpZ2h0ZWRBUmVjb3JkKHByb3BzLnJlY29yZFdlaWdodCwgcHJvcHMuZXZhbHVhdGVUYXJnZXRIZWFsdGggPz8gdHJ1ZSlcbiAgICAgIH0gZWxzZSBpZiAocHJvcHMucmVjb3JkTGF0ZW5jeSkge1xuICAgICAgICBkb21haW5OYW1lLmNyZWF0ZUxhdGVuY3lBUmVjb3JkKHRydWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkb21haW5OYW1lLmNyZWF0ZUFSZWNvcmQoKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlY29yZCA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBjb25zdCBzdGFnZSA9IFN0YWdlLm9mKHRoaXMpO1xuICAgIGNvbnN0IHN0YWNrID0gU3RhY2sub2YodGhpcyk7XG5cbiAgICBjb25zdCBodHRwQXBpID0gbmV3IEh0dHBBcGkodGhpcywgXCJEZWZhdWx0XCIsIHtcbiAgICAgIGFwaU5hbWU6IHByb3BzLmFwaU5hbWUgPz8gYCR7c3RhZ2U/LnN0YWdlTmFtZX0ke3N0YWNrPy5zdGFja05hbWV9R2F0ZXdheWAsXG4gICAgICBkZWZhdWx0RG9tYWluTWFwcGluZzoge1xuICAgICAgICBkb21haW5OYW1lOiBkb21haW5OYW1lLmdhdGV3YXlEb21haW5OYW1lXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbWFpbk5hbWUgPSBkb21haW5OYW1lO1xuICAgIHRoaXMuaHR0cEFwaSA9IGh0dHBBcGk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { Construct } from "constructs";
|
|
2
|
+
import { StandardDomainName } from "./standard-domain-name";
|
|
3
|
+
import { WebSocketApi, WebSocketStage } from "@aws-cdk/aws-apigatewayv2-alpha";
|
|
4
|
+
import { ARecord } from "aws-cdk-lib/aws-route53";
|
|
5
|
+
import { LatencyARecord, WeightedARecord } from "../../aws-route53";
|
|
6
|
+
import { IAutomationComponent } from "../../aws-cdk";
|
|
7
|
+
/**
|
|
8
|
+
* Properties for StandardWebSocketApi.
|
|
9
|
+
*/
|
|
10
|
+
export interface StandardWebSocketApiProps {
|
|
11
|
+
/**
|
|
12
|
+
* The prefix of the domain to create the certificate and DNS record for.
|
|
13
|
+
*/
|
|
14
|
+
readonly domainPrefix: string;
|
|
15
|
+
/**
|
|
16
|
+
* The zone of the domain to create the certificate and DNS record for.
|
|
17
|
+
*/
|
|
18
|
+
readonly domainZone: string;
|
|
19
|
+
/**
|
|
20
|
+
* Name of the API Gateway. One will be generated if not provided.
|
|
21
|
+
*/
|
|
22
|
+
readonly apiName?: string;
|
|
23
|
+
/**
|
|
24
|
+
* Determines if a route53 record is created for the API gateway. Defaults to true.
|
|
25
|
+
*
|
|
26
|
+
* @default - true
|
|
27
|
+
*/
|
|
28
|
+
readonly createRecord?: boolean;
|
|
29
|
+
/**
|
|
30
|
+
* Creates a weighted route53 record. May not be used with recordLatency.
|
|
31
|
+
*/
|
|
32
|
+
readonly recordWeight?: number;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a latency route53 record. May not be used with recordWeight.
|
|
35
|
+
*/
|
|
36
|
+
readonly recordLatency?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Evaluates target health on the created route53 record if it's a latency or weighted record. Defaults to true.
|
|
39
|
+
*
|
|
40
|
+
* @default - true
|
|
41
|
+
*/
|
|
42
|
+
readonly evaluateTargetHealth?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Setting this to true will suppress the creation of default tags on resources
|
|
45
|
+
* created by this construct. Default is false.
|
|
46
|
+
*
|
|
47
|
+
* @default - false
|
|
48
|
+
*/
|
|
49
|
+
readonly suppressTagging?: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Abstraction that creates an WebSocketApi with support infrastructure.
|
|
53
|
+
*/
|
|
54
|
+
export declare class StandardWebSocketApi extends Construct implements IAutomationComponent {
|
|
55
|
+
readonly automationComponentTags: import("../../aws-cdk").AutomationComponentTagsProps;
|
|
56
|
+
readonly domainName: StandardDomainName;
|
|
57
|
+
readonly record: ARecord | LatencyARecord | WeightedARecord | undefined;
|
|
58
|
+
readonly webSocketApi: WebSocketApi;
|
|
59
|
+
readonly webSocketStage: WebSocketStage;
|
|
60
|
+
constructor(scope: Construct, id: string, props: StandardWebSocketApiProps);
|
|
61
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.StandardWebSocketApi = void 0;
|
|
4
|
+
const constructs_1 = require("constructs");
|
|
5
|
+
const standard_domain_name_1 = require("./standard-domain-name");
|
|
6
|
+
const aws_apigatewayv2_alpha_1 = require("@aws-cdk/aws-apigatewayv2-alpha");
|
|
7
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
8
|
+
const aws_cdk_1 = require("../../aws-cdk");
|
|
9
|
+
/**
|
|
10
|
+
* Abstraction that creates an WebSocketApi with support infrastructure.
|
|
11
|
+
*/
|
|
12
|
+
class StandardWebSocketApi extends constructs_1.Construct {
|
|
13
|
+
constructor(scope, id, props) {
|
|
14
|
+
var _a, _b, _c;
|
|
15
|
+
super(scope, id);
|
|
16
|
+
this.automationComponentTags = aws_cdk_1.InternalAutomationComponentTags;
|
|
17
|
+
const domainName = new standard_domain_name_1.StandardDomainName(this, "DomainName", {
|
|
18
|
+
prefix: props.domainPrefix,
|
|
19
|
+
zone: props.domainZone,
|
|
20
|
+
securityPolicy: aws_apigatewayv2_alpha_1.SecurityPolicy.TLS_1_2 // TODO Should be an option
|
|
21
|
+
});
|
|
22
|
+
// TODO Need to add RecordOptions
|
|
23
|
+
if ((_a = props.createRecord) !== null && _a !== void 0 ? _a : true) {
|
|
24
|
+
if (props.recordWeight) {
|
|
25
|
+
domainName.createWeightedARecord(props.recordWeight, (_b = props.evaluateTargetHealth) !== null && _b !== void 0 ? _b : true);
|
|
26
|
+
}
|
|
27
|
+
else if (props.recordLatency) {
|
|
28
|
+
domainName.createLatencyARecord(true);
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
domainName.createARecord();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else {
|
|
35
|
+
this.record = undefined;
|
|
36
|
+
}
|
|
37
|
+
const stage = aws_cdk_lib_1.Stage.of(this);
|
|
38
|
+
const stack = aws_cdk_lib_1.Stack.of(this);
|
|
39
|
+
const webSocketApi = new aws_apigatewayv2_alpha_1.WebSocketApi(this, "Default", {
|
|
40
|
+
apiName: (_c = props.apiName) !== null && _c !== void 0 ? _c : `${stage === null || stage === void 0 ? void 0 : stage.stageName}${stack === null || stack === void 0 ? void 0 : stack.stackName}Gateway`,
|
|
41
|
+
});
|
|
42
|
+
const webSocketStage = new aws_apigatewayv2_alpha_1.WebSocketStage(this, "DefaultStage", {
|
|
43
|
+
webSocketApi,
|
|
44
|
+
stageName: "default",
|
|
45
|
+
autoDeploy: true,
|
|
46
|
+
domainMapping: {
|
|
47
|
+
domainName: domainName.gatewayDomainName
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
this.webSocketApi = webSocketApi;
|
|
51
|
+
this.webSocketStage = webSocketStage;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.StandardWebSocketApi = StandardWebSocketApi;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhbmRhcmQtd2ViLXNvY2tldC1hcGkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzdGFuZGFyZC13ZWItc29ja2V0LWFwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBcUM7QUFDckMsaUVBQTBEO0FBQzFELDRFQUE2RjtBQUc3Riw2Q0FBeUM7QUFDekMsMkNBQW9GO0FBc0RwRjs7R0FFRztBQUNILE1BQWEsb0JBQXFCLFNBQVEsc0JBQVM7SUFTakQsWUFBWSxLQUFnQixFQUFFLEVBQVUsRUFBRSxLQUFnQzs7UUFDeEUsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQVJWLDRCQUF1QixHQUFHLHlDQUErQixDQUFDO1FBVWpFLE1BQU0sVUFBVSxHQUFHLElBQUkseUNBQWtCLENBQUMsSUFBSSxFQUFFLFlBQVksRUFBRTtZQUM1RCxNQUFNLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQ3RCLGNBQWMsRUFBRSx1Q0FBYyxDQUFDLE9BQU8sQ0FBQywyQkFBMkI7U0FDbkUsQ0FBQyxDQUFDO1FBRUgsaUNBQWlDO1FBQ2pDLFVBQUksS0FBSyxDQUFDLFlBQVksbUNBQUksSUFBSSxFQUFFO1lBQzlCLElBQUksS0FBSyxDQUFDLFlBQVksRUFBRTtnQkFDdEIsVUFBVSxDQUFDLHFCQUFxQixDQUFDLEtBQUssQ0FBQyxZQUFZLFFBQUUsS0FBSyxDQUFDLG9CQUFvQixtQ0FBSSxJQUFJLENBQUMsQ0FBQTthQUN6RjtpQkFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLEVBQUU7Z0JBQzlCLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQTthQUN0QztpQkFBTTtnQkFDTCxVQUFVLENBQUMsYUFBYSxFQUFFLENBQUE7YUFDM0I7U0FDRjthQUFNO1lBQ0wsSUFBSSxDQUFDLE1BQU0sR0FBRyxTQUFTLENBQUM7U0FDekI7UUFFRCxNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUM3QixNQUFNLEtBQUssR0FBRyxtQkFBSyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUU3QixNQUFNLFlBQVksR0FBRyxJQUFJLHFDQUFZLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRTtZQUNyRCxPQUFPLFFBQUUsS0FBSyxDQUFDLE9BQU8sbUNBQUksR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsU0FBUyxHQUFHLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxTQUFTLFNBQVM7U0FDMUUsQ0FBQyxDQUFDO1FBRUgsTUFBTSxjQUFjLEdBQUcsSUFBSSx1Q0FBYyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUU7WUFDOUQsWUFBWTtZQUNaLFNBQVMsRUFBRSxTQUFTO1lBQ3BCLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLGFBQWEsRUFBRTtnQkFDYixVQUFVLEVBQUUsVUFBVSxDQUFDLGlCQUFpQjthQUN6QztTQUNGLENBQUMsQ0FBQztRQUVILElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxjQUFjLEdBQUcsY0FBYyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQWxERCxvREFrREMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7U3RhbmRhcmREb21haW5OYW1lfSBmcm9tIFwiLi9zdGFuZGFyZC1kb21haW4tbmFtZVwiO1xuaW1wb3J0IHtTZWN1cml0eVBvbGljeSwgV2ViU29ja2V0QXBpLCBXZWJTb2NrZXRTdGFnZX0gZnJvbSBcIkBhd3MtY2RrL2F3cy1hcGlnYXRld2F5djItYWxwaGFcIjtcbmltcG9ydCB7QVJlY29yZH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1yb3V0ZTUzXCI7XG5pbXBvcnQge0xhdGVuY3lBUmVjb3JkLCBXZWlnaHRlZEFSZWNvcmR9IGZyb20gXCIuLi8uLi9hd3Mtcm91dGU1M1wiO1xuaW1wb3J0IHtTdGFjaywgU3RhZ2V9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHtJQXV0b21hdGlvbkNvbXBvbmVudCwgSW50ZXJuYWxBdXRvbWF0aW9uQ29tcG9uZW50VGFnc30gZnJvbSBcIi4uLy4uL2F3cy1jZGtcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBTdGFuZGFyZFdlYlNvY2tldEFwaS5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTdGFuZGFyZFdlYlNvY2tldEFwaVByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBwcmVmaXggb2YgdGhlIGRvbWFpbiB0byBjcmVhdGUgdGhlIGNlcnRpZmljYXRlIGFuZCBETlMgcmVjb3JkIGZvci5cbiAgICovXG4gIHJlYWRvbmx5IGRvbWFpblByZWZpeDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBUaGUgem9uZSBvZiB0aGUgZG9tYWluIHRvIGNyZWF0ZSB0aGUgY2VydGlmaWNhdGUgYW5kIEROUyByZWNvcmQgZm9yLlxuICAgKi9cbiAgcmVhZG9ubHkgZG9tYWluWm9uZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBOYW1lIG9mIHRoZSBBUEkgR2F0ZXdheS4gT25lIHdpbGwgYmUgZ2VuZXJhdGVkIGlmIG5vdCBwcm92aWRlZC5cbiAgICovXG4gIHJlYWRvbmx5IGFwaU5hbWU/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIERldGVybWluZXMgaWYgYSByb3V0ZTUzIHJlY29yZCBpcyBjcmVhdGVkIGZvciB0aGUgQVBJIGdhdGV3YXkuIERlZmF1bHRzIHRvIHRydWUuXG4gICAqXG4gICAqIEBkZWZhdWx0IC0gdHJ1ZVxuICAgKi9cbiAgcmVhZG9ubHkgY3JlYXRlUmVjb3JkPzogYm9vbGVhbjtcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIHdlaWdodGVkIHJvdXRlNTMgcmVjb3JkLiBNYXkgbm90IGJlIHVzZWQgd2l0aCByZWNvcmRMYXRlbmN5LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkV2VpZ2h0PzogbnVtYmVyO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbGF0ZW5jeSByb3V0ZTUzIHJlY29yZC4gTWF5IG5vdCBiZSB1c2VkIHdpdGggcmVjb3JkV2VpZ2h0LlxuICAgKi9cbiAgcmVhZG9ubHkgcmVjb3JkTGF0ZW5jeT86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIEV2YWx1YXRlcyB0YXJnZXQgaGVhbHRoIG9uIHRoZSBjcmVhdGVkIHJvdXRlNTMgcmVjb3JkIGlmIGl0J3MgYSBsYXRlbmN5IG9yIHdlaWdodGVkIHJlY29yZC4gRGVmYXVsdHMgdG8gdHJ1ZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSB0cnVlXG4gICAqL1xuICByZWFkb25seSBldmFsdWF0ZVRhcmdldEhlYWx0aD86IGJvb2xlYW47XG5cbiAgLyoqXG4gICAqIFNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgc3VwcHJlc3MgdGhlIGNyZWF0aW9uIG9mIGRlZmF1bHQgdGFncyBvbiByZXNvdXJjZXNcbiAgICogY3JlYXRlZCBieSB0aGlzIGNvbnN0cnVjdC4gRGVmYXVsdCBpcyBmYWxzZS5cbiAgICpcbiAgICogQGRlZmF1bHQgLSBmYWxzZVxuICAgKi9cbiAgcmVhZG9ubHkgc3VwcHJlc3NUYWdnaW5nPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBBYnN0cmFjdGlvbiB0aGF0IGNyZWF0ZXMgYW4gV2ViU29ja2V0QXBpIHdpdGggc3VwcG9ydCBpbmZyYXN0cnVjdHVyZS5cbiAqL1xuZXhwb3J0IGNsYXNzIFN0YW5kYXJkV2ViU29ja2V0QXBpIGV4dGVuZHMgQ29uc3RydWN0IGltcGxlbWVudHMgSUF1dG9tYXRpb25Db21wb25lbnQge1xuXG4gIHJlYWRvbmx5IGF1dG9tYXRpb25Db21wb25lbnRUYWdzID0gSW50ZXJuYWxBdXRvbWF0aW9uQ29tcG9uZW50VGFncztcblxuICByZWFkb25seSBkb21haW5OYW1lOiBTdGFuZGFyZERvbWFpbk5hbWU7XG4gIHJlYWRvbmx5IHJlY29yZDogQVJlY29yZCB8IExhdGVuY3lBUmVjb3JkIHwgV2VpZ2h0ZWRBUmVjb3JkIHwgdW5kZWZpbmVkO1xuICByZWFkb25seSB3ZWJTb2NrZXRBcGk6IFdlYlNvY2tldEFwaTtcbiAgcmVhZG9ubHkgd2ViU29ja2V0U3RhZ2U6IFdlYlNvY2tldFN0YWdlO1xuXG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFuZGFyZFdlYlNvY2tldEFwaVByb3BzKSB7XG4gICAgc3VwZXIoc2NvcGUsIGlkKTtcblxuICAgIGNvbnN0IGRvbWFpbk5hbWUgPSBuZXcgU3RhbmRhcmREb21haW5OYW1lKHRoaXMsIFwiRG9tYWluTmFtZVwiLCB7XG4gICAgICBwcmVmaXg6IHByb3BzLmRvbWFpblByZWZpeCxcbiAgICAgIHpvbmU6IHByb3BzLmRvbWFpblpvbmUsXG4gICAgICBzZWN1cml0eVBvbGljeTogU2VjdXJpdHlQb2xpY3kuVExTXzFfMiAvLyBUT0RPIFNob3VsZCBiZSBhbiBvcHRpb25cbiAgICB9KTtcblxuICAgIC8vIFRPRE8gTmVlZCB0byBhZGQgUmVjb3JkT3B0aW9uc1xuICAgIGlmIChwcm9wcy5jcmVhdGVSZWNvcmQgPz8gdHJ1ZSkge1xuICAgICAgaWYgKHByb3BzLnJlY29yZFdlaWdodCkge1xuICAgICAgICBkb21haW5OYW1lLmNyZWF0ZVdlaWdodGVkQVJlY29yZChwcm9wcy5yZWNvcmRXZWlnaHQsIHByb3BzLmV2YWx1YXRlVGFyZ2V0SGVhbHRoID8/IHRydWUpXG4gICAgICB9IGVsc2UgaWYgKHByb3BzLnJlY29yZExhdGVuY3kpIHtcbiAgICAgICAgZG9tYWluTmFtZS5jcmVhdGVMYXRlbmN5QVJlY29yZCh0cnVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZG9tYWluTmFtZS5jcmVhdGVBUmVjb3JkKClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5yZWNvcmQgPSB1bmRlZmluZWQ7XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhZ2UgPSBTdGFnZS5vZih0aGlzKTtcbiAgICBjb25zdCBzdGFjayA9IFN0YWNrLm9mKHRoaXMpO1xuXG4gICAgY29uc3Qgd2ViU29ja2V0QXBpID0gbmV3IFdlYlNvY2tldEFwaSh0aGlzLCBcIkRlZmF1bHRcIiwge1xuICAgICAgYXBpTmFtZTogcHJvcHMuYXBpTmFtZSA/PyBgJHtzdGFnZT8uc3RhZ2VOYW1lfSR7c3RhY2s/LnN0YWNrTmFtZX1HYXRld2F5YCxcbiAgICB9KTtcblxuICAgIGNvbnN0IHdlYlNvY2tldFN0YWdlID0gbmV3IFdlYlNvY2tldFN0YWdlKHRoaXMsIFwiRGVmYXVsdFN0YWdlXCIsIHtcbiAgICAgIHdlYlNvY2tldEFwaSxcbiAgICAgIHN0YWdlTmFtZTogXCJkZWZhdWx0XCIsXG4gICAgICBhdXRvRGVwbG95OiB0cnVlLFxuICAgICAgZG9tYWluTWFwcGluZzoge1xuICAgICAgICBkb21haW5OYW1lOiBkb21haW5OYW1lLmdhdGV3YXlEb21haW5OYW1lXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICB0aGlzLndlYlNvY2tldEFwaSA9IHdlYlNvY2tldEFwaTtcbiAgICB0aGlzLndlYlNvY2tldFN0YWdlID0gd2ViU29ja2V0U3RhZ2U7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { App, AppProps } from "aws-cdk-lib";
|
|
2
|
+
import { StandardTagsProps } from "./standard-tags";
|
|
3
|
+
/**
|
|
4
|
+
* Properties for ExtendedApp.
|
|
5
|
+
*/
|
|
6
|
+
export interface ExtendedAppProps extends AppProps {
|
|
7
|
+
/**
|
|
8
|
+
* Standard tags to apply to all stacks.
|
|
9
|
+
*/
|
|
10
|
+
readonly standardTags?: StandardTagsProps;
|
|
11
|
+
/**
|
|
12
|
+
* Skips account lookup and uses this account.
|
|
13
|
+
*/
|
|
14
|
+
readonly account?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Skips region lookup and uses this region.
|
|
17
|
+
*/
|
|
18
|
+
readonly region?: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Adds functionality to the base App class to support standard tags
|
|
22
|
+
* and access to the account and region being used to execute the
|
|
23
|
+
* CDK process.
|
|
24
|
+
*/
|
|
25
|
+
export declare class ExtendedApp extends App {
|
|
26
|
+
readonly account: string;
|
|
27
|
+
readonly region: string;
|
|
28
|
+
constructor(props?: ExtendedAppProps);
|
|
29
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ExtendedApp = void 0;
|
|
4
|
+
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
+
const standard_tags_1 = require("./standard-tags");
|
|
6
|
+
/**
|
|
7
|
+
* Adds functionality to the base App class to support standard tags
|
|
8
|
+
* and access to the account and region being used to execute the
|
|
9
|
+
* CDK process.
|
|
10
|
+
*/
|
|
11
|
+
class ExtendedApp extends aws_cdk_lib_1.App {
|
|
12
|
+
constructor(props) {
|
|
13
|
+
var _a;
|
|
14
|
+
super({
|
|
15
|
+
...props,
|
|
16
|
+
context: {
|
|
17
|
+
...props === null || props === void 0 ? void 0 : props.context,
|
|
18
|
+
// Add standardTags to the context to be used by ExtendedStack
|
|
19
|
+
standardTags: props === null || props === void 0 ? void 0 : props.standardTags
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
// Use the provided account or do a lookup
|
|
23
|
+
const account = (props === null || props === void 0 ? void 0 : props.account) || process.env.CDK_DEFAULT_ACCOUNT || process.env.AWS_ACCOUNT_ID;
|
|
24
|
+
if (account === undefined) {
|
|
25
|
+
throw new Error("Unable to identify default account");
|
|
26
|
+
}
|
|
27
|
+
this.account = account;
|
|
28
|
+
// Use the provided region or do a lookup
|
|
29
|
+
const region = (props === null || props === void 0 ? void 0 : props.region) || process.env.CDK_DEFAULT_REGION || process.env.AWS_DEFAULT_REGION;
|
|
30
|
+
if (region === undefined) {
|
|
31
|
+
throw new Error("Unable to identify default region");
|
|
32
|
+
}
|
|
33
|
+
this.region = region;
|
|
34
|
+
// Add automation component tags to AutomationComponent children
|
|
35
|
+
aws_cdk_lib_1.Aspects.of(this).add(new standard_tags_1.AutomationComponentAspect((_a = props === null || props === void 0 ? void 0 : props.standardTags) === null || _a === void 0 ? void 0 : _a.suppressTagging));
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.ExtendedApp = ExtendedApp;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXh0ZW5kZWQtYXBwLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZXh0ZW5kZWQtYXBwLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFtRDtBQUNuRCxtREFBNkU7QUF1QjdFOzs7O0dBSUc7QUFDSCxNQUFhLFdBQVksU0FBUSxpQkFBRztJQUtsQyxZQUFZLEtBQXdCOztRQUNsQyxLQUFLLENBQUM7WUFDSixHQUFHLEtBQUs7WUFDUixPQUFPLEVBQUU7Z0JBQ1AsR0FBRyxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsT0FBTztnQkFDakIsOERBQThEO2dCQUM5RCxZQUFZLEVBQUcsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFlBQVk7YUFDbkM7U0FDRixDQUFDLENBQUM7UUFFSCwwQ0FBMEM7UUFDMUMsTUFBTSxPQUFPLEdBQUcsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsT0FBTyxLQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7UUFDaEcsSUFBSSxPQUFPLEtBQUssU0FBUyxFQUFFO1lBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsb0NBQW9DLENBQUMsQ0FBQztTQUN2RDtRQUNELElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBRXZCLHlDQUF5QztRQUN6QyxNQUFNLE1BQU0sR0FBRyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLEtBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDO1FBQ2pHLElBQUksTUFBTSxLQUFLLFNBQVMsRUFBRTtZQUN4QixNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUVyQixnRUFBZ0U7UUFDaEUscUJBQU8sQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUkseUNBQXlCLE9BQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFlBQVksMENBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUM1RixDQUFDO0NBQ0Y7QUFoQ0Qsa0NBZ0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBcHAsIEFwcFByb3BzLCBBc3BlY3RzfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7QXV0b21hdGlvbkNvbXBvbmVudEFzcGVjdCwgU3RhbmRhcmRUYWdzUHJvcHN9IGZyb20gXCIuL3N0YW5kYXJkLXRhZ3NcIjtcblxuLyoqXG4gKiBQcm9wZXJ0aWVzIGZvciBFeHRlbmRlZEFwcC5cbiAqL1xuZXhwb3J0IGludGVyZmFjZSBFeHRlbmRlZEFwcFByb3BzIGV4dGVuZHMgQXBwUHJvcHMge1xuXG4gIC8qKlxuICAgKiBTdGFuZGFyZCB0YWdzIHRvIGFwcGx5IHRvIGFsbCBzdGFja3MuXG4gICAqL1xuICByZWFkb25seSBzdGFuZGFyZFRhZ3M/OiBTdGFuZGFyZFRhZ3NQcm9wcztcblxuICAvKipcbiAgICogU2tpcHMgYWNjb3VudCBsb29rdXAgYW5kIHVzZXMgdGhpcyBhY2NvdW50LlxuICAgKi9cbiAgcmVhZG9ubHkgYWNjb3VudD86IHN0cmluZztcblxuICAvKipcbiAgICogU2tpcHMgcmVnaW9uIGxvb2t1cCBhbmQgdXNlcyB0aGlzIHJlZ2lvbi5cbiAgICovXG4gIHJlYWRvbmx5IHJlZ2lvbj86IHN0cmluZztcbn1cblxuLyoqXG4gKiBBZGRzIGZ1bmN0aW9uYWxpdHkgdG8gdGhlIGJhc2UgQXBwIGNsYXNzIHRvIHN1cHBvcnQgc3RhbmRhcmQgdGFnc1xuICogYW5kIGFjY2VzcyB0byB0aGUgYWNjb3VudCBhbmQgcmVnaW9uIGJlaW5nIHVzZWQgdG8gZXhlY3V0ZSB0aGVcbiAqIENESyBwcm9jZXNzLlxuICovXG5leHBvcnQgY2xhc3MgRXh0ZW5kZWRBcHAgZXh0ZW5kcyBBcHAge1xuXG4gIHJlYWRvbmx5IGFjY291bnQ6IHN0cmluZztcbiAgcmVhZG9ubHkgcmVnaW9uOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IocHJvcHM/OiBFeHRlbmRlZEFwcFByb3BzKSB7XG4gICAgc3VwZXIoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250ZXh0OiB7XG4gICAgICAgIC4uLnByb3BzPy5jb250ZXh0LFxuICAgICAgICAvLyBBZGQgc3RhbmRhcmRUYWdzIHRvIHRoZSBjb250ZXh0IHRvIGJlIHVzZWQgYnkgRXh0ZW5kZWRTdGFja1xuICAgICAgICBzdGFuZGFyZFRhZ3M6ICBwcm9wcz8uc3RhbmRhcmRUYWdzXG4gICAgICB9XG4gICAgfSk7XG5cbiAgICAvLyBVc2UgdGhlIHByb3ZpZGVkIGFjY291bnQgb3IgZG8gYSBsb29rdXBcbiAgICBjb25zdCBhY2NvdW50ID0gcHJvcHM/LmFjY291bnQgfHwgcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCB8fCBwcm9jZXNzLmVudi5BV1NfQUNDT1VOVF9JRDtcbiAgICBpZiAoYWNjb3VudCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gaWRlbnRpZnkgZGVmYXVsdCBhY2NvdW50XCIpO1xuICAgIH1cbiAgICB0aGlzLmFjY291bnQgPSBhY2NvdW50O1xuXG4gICAgLy8gVXNlIHRoZSBwcm92aWRlZCByZWdpb24gb3IgZG8gYSBsb29rdXBcbiAgICBjb25zdCByZWdpb24gPSBwcm9wcz8ucmVnaW9uIHx8IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTiB8fCBwcm9jZXNzLmVudi5BV1NfREVGQVVMVF9SRUdJT047XG4gICAgaWYgKHJlZ2lvbiA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJVbmFibGUgdG8gaWRlbnRpZnkgZGVmYXVsdCByZWdpb25cIik7XG4gICAgfVxuICAgIHRoaXMucmVnaW9uID0gcmVnaW9uO1xuXG4gICAgLy8gQWRkIGF1dG9tYXRpb24gY29tcG9uZW50IHRhZ3MgdG8gQXV0b21hdGlvbkNvbXBvbmVudCBjaGlsZHJlblxuICAgIEFzcGVjdHMub2YodGhpcykuYWRkKG5ldyBBdXRvbWF0aW9uQ29tcG9uZW50QXNwZWN0KHByb3BzPy5zdGFuZGFyZFRhZ3M/LnN1cHByZXNzVGFnZ2luZykpO1xuICB9XG59XG5cbiJdfQ==
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { CfnOutput, Duration, Stack, StackProps } from "aws-cdk-lib";
|
|
2
|
-
import { ParameterStore, ParameterStoreOptions } from "../../aws-ssm
|
|
2
|
+
import { ParameterStore, ParameterStoreOptions } from "../../aws-ssm";
|
|
3
3
|
import { Construct } from "constructs";
|
|
4
4
|
import { StringParameter } from "aws-cdk-lib/aws-ssm";
|
|
5
5
|
import { DashboardRenderingPreference, MonitoringFacade } from "cdk-monitoring-constructs";
|
|
6
|
+
import { StandardTagsProps } from "./standard-tags";
|
|
6
7
|
/**
|
|
7
8
|
* Options for ExtStack.
|
|
8
9
|
*/
|
|
@@ -72,12 +73,9 @@ export interface ExtendedStackOptions {
|
|
|
72
73
|
*/
|
|
73
74
|
readonly alarmActionsEnabled?: boolean;
|
|
74
75
|
/**
|
|
75
|
-
*
|
|
76
|
-
* created by this construct. Default is false.
|
|
77
|
-
*
|
|
78
|
-
* @default - false
|
|
76
|
+
* Sets standard tags for this Stack.
|
|
79
77
|
*/
|
|
80
|
-
readonly
|
|
78
|
+
readonly standardTags?: StandardTagsProps;
|
|
81
79
|
}
|
|
82
80
|
/**
|
|
83
81
|
* Properties for ExtStack.
|