@digitraffic/common 2022.10.25-1 → 2022.10.31-1
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/.editorconfig +9 -0
- package/.eslintignore +4 -0
- package/.eslintrc.json +27 -0
- package/.github/CODEOWNERS +2 -0
- package/.github/workflows/build.yml +36 -0
- package/.github/workflows/eslint.yml +38 -0
- package/.github/workflows/mirror.yml +15 -0
- package/.gitignore +29 -0
- package/.husky/pre-commit +4 -0
- package/.prettierrc.json +10 -0
- package/dist/aws/infra/api/integration.js +52 -0
- package/dist/aws/infra/api/response.js +61 -0
- package/dist/aws/infra/api/responses.js +82 -0
- package/dist/aws/infra/api/static-integration.js +54 -0
- package/dist/aws/infra/canaries/canary-alarm.js +26 -0
- package/dist/aws/infra/canaries/canary-keys.js +7 -0
- package/dist/aws/infra/canaries/canary-parameters.js +3 -0
- package/dist/aws/infra/canaries/canary-role.js +46 -0
- package/dist/aws/infra/canaries/canary.js +32 -0
- package/dist/aws/infra/canaries/database-canary.js +70 -0
- package/dist/aws/infra/canaries/database-checker.js +103 -0
- package/dist/aws/infra/canaries/url-canary.js +47 -0
- package/dist/aws/infra/canaries/url-checker.js +252 -0
- package/dist/aws/infra/documentation.js +95 -0
- package/dist/aws/infra/scheduler.js +31 -0
- package/dist/aws/infra/security-rule.js +39 -0
- package/dist/aws/infra/sqs-integration.js +93 -0
- package/dist/aws/infra/sqs-queue.js +130 -0
- package/dist/aws/infra/stack/lambda-configs.js +105 -0
- package/dist/aws/infra/stack/monitoredfunction.js +143 -0
- package/dist/aws/infra/stack/rest_apis.js +185 -0
- package/dist/aws/infra/stack/stack-checking-aspect.js +174 -0
- package/dist/aws/infra/stack/stack.js +67 -0
- package/dist/aws/infra/stack/subscription.js +42 -0
- package/dist/aws/infra/usage-plans.js +42 -0
- package/dist/aws/runtime/apikey.js +13 -0
- package/dist/aws/runtime/digitraffic-integration-response.js +26 -0
- package/dist/aws/runtime/environment.js +12 -0
- package/dist/aws/runtime/messaging.js +31 -0
- package/dist/aws/runtime/s3.js +30 -0
- package/dist/aws/runtime/secrets/dbsecret.js +96 -0
- package/dist/aws/runtime/secrets/proxy-holder.js +27 -0
- package/dist/aws/runtime/secrets/rds-holder.js +27 -0
- package/dist/aws/runtime/secrets/secret-holder.js +76 -0
- package/dist/aws/runtime/secrets/secret.js +43 -0
- package/dist/aws/types/errors.js +16 -0
- package/dist/aws/types/lambda-response.js +33 -0
- package/dist/aws/types/mediatypes.js +16 -0
- package/dist/aws/types/model-with-reference.js +3 -0
- package/dist/aws/types/proxytypes.js +3 -0
- package/dist/aws/types/tags.js +7 -0
- package/dist/database/cached.js +32 -0
- package/dist/database/database.js +70 -0
- package/dist/database/last-updated.js +54 -0
- package/dist/database/models.js +3 -0
- package/dist/marine/id_utils.js +33 -0
- package/dist/marine/rtz.js +3 -0
- package/dist/test/asserter.js +45 -0
- package/dist/test/db-testutils.js +31 -0
- package/dist/test/httpserver.js +74 -0
- package/dist/test/secret.js +25 -0
- package/dist/test/secrets-manager.js +59 -0
- package/dist/test/testutils.js +44 -0
- package/dist/types/either.js +3 -0
- package/dist/types/input-error.js +7 -0
- package/dist/types/language.js +10 -0
- package/dist/types/traffictype.js +13 -0
- package/dist/types/validator.js +14 -0
- package/dist/utils/api-model.js +129 -0
- package/dist/utils/base64.js +21 -0
- package/dist/utils/date-utils.js +34 -0
- package/dist/utils/geojson-types.js +18 -0
- package/dist/utils/geometry.js +164 -0
- package/dist/utils/retry.js +50 -0
- package/dist/utils/slack.js +25 -0
- package/dist/utils/utils.js +75 -0
- package/jest.config.js +15 -0
- package/package.json +15 -13
- package/src/@types/geojson-validation/index.d.ts +4 -0
- package/src/aws/infra/api/integration.ts +73 -0
- package/src/aws/infra/api/response.ts +67 -0
- package/src/aws/infra/api/responses.ts +124 -0
- package/src/aws/infra/api/static-integration.ts +62 -0
- package/src/aws/infra/canaries/canary-alarm.ts +31 -0
- package/src/aws/infra/canaries/canary-keys.ts +3 -0
- package/{aws/infra/canaries/canary-parameters.d.ts → src/aws/infra/canaries/canary-parameters.ts} +7 -6
- package/src/aws/infra/canaries/canary-role.ts +47 -0
- package/src/aws/infra/canaries/canary.ts +46 -0
- package/src/aws/infra/canaries/database-canary.ts +98 -0
- package/src/aws/infra/canaries/database-checker.ts +155 -0
- package/src/aws/infra/canaries/url-canary.ts +74 -0
- package/src/aws/infra/canaries/url-checker.ts +366 -0
- package/src/aws/infra/documentation.ts +124 -0
- package/src/aws/infra/scheduler.ts +59 -0
- package/src/aws/infra/security-rule.ts +38 -0
- package/src/aws/infra/sqs-integration.ts +102 -0
- package/src/aws/infra/sqs-queue.ts +148 -0
- package/src/aws/infra/stack/lambda-configs.ts +207 -0
- package/src/aws/infra/stack/monitoredfunction.ts +342 -0
- package/src/aws/infra/stack/rest_apis.ts +223 -0
- package/src/aws/infra/stack/stack-checking-aspect.ts +279 -0
- package/src/aws/infra/stack/stack.ts +145 -0
- package/src/aws/infra/stack/subscription.ts +58 -0
- package/src/aws/infra/usage-plans.ts +41 -0
- package/src/aws/runtime/apikey.ts +9 -0
- package/src/aws/runtime/digitraffic-integration-response.ts +28 -0
- package/src/aws/runtime/environment.ts +9 -0
- package/src/aws/runtime/messaging.ts +26 -0
- package/src/aws/runtime/s3.ts +44 -0
- package/src/aws/runtime/secrets/dbsecret.ts +116 -0
- package/src/aws/runtime/secrets/proxy-holder.ts +37 -0
- package/src/aws/runtime/secrets/rds-holder.ts +33 -0
- package/src/aws/runtime/secrets/secret-holder.ts +116 -0
- package/src/aws/runtime/secrets/secret.ts +50 -0
- package/src/aws/types/errors.ts +14 -0
- package/src/aws/types/lambda-response.ts +43 -0
- package/{aws/types/mediatypes.d.ts → src/aws/types/mediatypes.ts} +4 -3
- package/{aws/types/model-with-reference.d.ts → src/aws/types/model-with-reference.ts} +2 -1
- package/src/aws/types/proxytypes.ts +27 -0
- package/src/aws/types/tags.ts +3 -0
- package/src/database/cached.ts +35 -0
- package/src/database/database.ts +96 -0
- package/src/database/last-updated.ts +59 -0
- package/{database/models.d.ts → src/database/models.ts} +1 -0
- package/src/marine/id_utils.ts +30 -0
- package/src/marine/rtz.ts +57 -0
- package/src/test/asserter.ts +48 -0
- package/src/test/db-testutils.ts +44 -0
- package/src/test/httpserver.ts +96 -0
- package/src/test/secret.ts +23 -0
- package/src/test/secrets-manager.ts +34 -0
- package/src/test/testutils.ts +39 -0
- package/src/types/either.ts +3 -0
- package/src/types/input-error.ts +2 -0
- package/src/types/language.ts +3 -0
- package/src/types/traffictype.ts +8 -0
- package/src/types/validator.ts +10 -0
- package/src/utils/api-model.ts +133 -0
- package/src/utils/base64.ts +16 -0
- package/src/utils/date-utils.ts +30 -0
- package/src/utils/geojson-types.ts +22 -0
- package/src/utils/geometry.ts +164 -0
- package/src/utils/retry.ts +49 -0
- package/src/utils/slack.ts +22 -0
- package/src/utils/utils.ts +105 -0
- package/test/marine/id_utils.test.ts +57 -0
- package/test/promise/promise.test.ts +143 -0
- package/test/secrets/dbsecret.test.ts +59 -0
- package/test/secrets/secret-holder.test.ts +143 -0
- package/test/secrets/secret.test.ts +49 -0
- package/test/test/httpserver.test.ts +128 -0
- package/test/utils/date-utils.test.ts +28 -0
- package/test/utils/geometry.test.ts +29 -0
- package/test/utils/utils.test.ts +64 -0
- package/tsconfig.eslint.json +4 -0
- package/tsconfig.json +22 -0
- package/yarn.lock +4060 -0
- package/aws/infra/api/integration.d.ts +0 -21
- package/aws/infra/api/integration.js +0 -52
- package/aws/infra/api/response.d.ts +0 -22
- package/aws/infra/api/response.js +0 -61
- package/aws/infra/api/responses.d.ts +0 -39
- package/aws/infra/api/responses.js +0 -79
- package/aws/infra/api/static-integration.d.ts +0 -15
- package/aws/infra/api/static-integration.js +0 -54
- package/aws/infra/canaries/canary-alarm.d.ts +0 -6
- package/aws/infra/canaries/canary-alarm.js +0 -26
- package/aws/infra/canaries/canary-parameters.js +0 -3
- package/aws/infra/canaries/canary-role.d.ts +0 -6
- package/aws/infra/canaries/canary-role.js +0 -46
- package/aws/infra/canaries/canary.d.ts +0 -8
- package/aws/infra/canaries/canary.js +0 -32
- package/aws/infra/canaries/database-canary.d.ts +0 -18
- package/aws/infra/canaries/database-canary.js +0 -55
- package/aws/infra/canaries/database-checker.d.ts +0 -21
- package/aws/infra/canaries/database-checker.js +0 -109
- package/aws/infra/canaries/url-canary.d.ts +0 -19
- package/aws/infra/canaries/url-canary.js +0 -46
- package/aws/infra/canaries/url-checker.d.ts +0 -46
- package/aws/infra/canaries/url-checker.js +0 -238
- package/aws/infra/documentation.d.ts +0 -56
- package/aws/infra/documentation.js +0 -95
- package/aws/infra/scheduler.d.ts +0 -12
- package/aws/infra/scheduler.js +0 -31
- package/aws/infra/security-rule.d.ts +0 -12
- package/aws/infra/security-rule.js +0 -39
- package/aws/infra/sqs-integration.d.ts +0 -7
- package/aws/infra/sqs-integration.js +0 -93
- package/aws/infra/sqs-queue.d.ts +0 -16
- package/aws/infra/sqs-queue.js +0 -130
- package/aws/infra/stack/lambda-configs.d.ts +0 -72
- package/aws/infra/stack/lambda-configs.js +0 -93
- package/aws/infra/stack/monitoredfunction.d.ts +0 -84
- package/aws/infra/stack/monitoredfunction.js +0 -135
- package/aws/infra/stack/rest_apis.d.ts +0 -41
- package/aws/infra/stack/rest_apis.js +0 -185
- package/aws/infra/stack/stack-checking-aspect.d.ts +0 -21
- package/aws/infra/stack/stack-checking-aspect.js +0 -174
- package/aws/infra/stack/stack.d.ts +0 -44
- package/aws/infra/stack/stack.js +0 -60
- package/aws/infra/stack/subscription.d.ts +0 -17
- package/aws/infra/stack/subscription.js +0 -41
- package/aws/infra/usage-plans.d.ts +0 -15
- package/aws/infra/usage-plans.js +0 -42
- package/aws/runtime/apikey.d.ts +0 -2
- package/aws/runtime/apikey.js +0 -13
- package/aws/runtime/digitraffic-integration-response.d.ts +0 -8
- package/aws/runtime/digitraffic-integration-response.js +0 -26
- package/aws/runtime/environment.d.ts +0 -1
- package/aws/runtime/environment.js +0 -12
- package/aws/runtime/messaging.d.ts +0 -10
- package/aws/runtime/messaging.js +0 -31
- package/aws/runtime/s3.d.ts +0 -2
- package/aws/runtime/s3.js +0 -30
- package/aws/runtime/secrets/dbsecret.d.ts +0 -54
- package/aws/runtime/secrets/dbsecret.js +0 -96
- package/aws/runtime/secrets/proxy-holder.d.ts +0 -9
- package/aws/runtime/secrets/proxy-holder.js +0 -26
- package/aws/runtime/secrets/rds-holder.d.ts +0 -9
- package/aws/runtime/secrets/rds-holder.js +0 -26
- package/aws/runtime/secrets/secret-holder.d.ts +0 -26
- package/aws/runtime/secrets/secret-holder.js +0 -73
- package/aws/runtime/secrets/secret.d.ts +0 -8
- package/aws/runtime/secrets/secret.js +0 -43
- package/aws/types/errors.d.ts +0 -4
- package/aws/types/errors.js +0 -9
- package/aws/types/lambda-response.d.ts +0 -12
- package/aws/types/lambda-response.js +0 -28
- package/aws/types/mediatypes.js +0 -15
- package/aws/types/model-with-reference.js +0 -3
- package/aws/types/proxytypes.d.ts +0 -26
- package/aws/types/proxytypes.js +0 -3
- package/aws/types/tags.d.ts +0 -2
- package/aws/types/tags.js +0 -7
- package/database/cached.d.ts +0 -7
- package/database/cached.js +0 -32
- package/database/database.d.ts +0 -19
- package/database/database.js +0 -62
- package/database/last-updated.d.ts +0 -16
- package/database/last-updated.js +0 -54
- package/database/models.js +0 -3
- package/index.d.ts +0 -1
- package/index.js +0 -18
- package/marine/id_utils.d.ts +0 -3
- package/marine/id_utils.js +0 -33
- package/marine/rtz.d.ts +0 -48
- package/marine/rtz.js +0 -3
- package/test/asserter.d.ts +0 -11
- package/test/asserter.js +0 -45
- package/test/db-testutils.d.ts +0 -2
- package/test/db-testutils.js +0 -31
- package/test/httpserver.d.ts +0 -18
- package/test/httpserver.js +0 -67
- package/test/secret.d.ts +0 -3
- package/test/secret.js +0 -25
- package/test/secrets-manager.d.ts +0 -9
- package/test/secrets-manager.js +0 -59
- package/test/testutils.d.ts +0 -12
- package/test/testutils.js +0 -44
- package/types/input-error.d.ts +0 -2
- package/types/input-error.js +0 -7
- package/types/language.d.ts +0 -5
- package/types/language.js +0 -10
- package/types/traffictype.d.ts +0 -8
- package/types/traffictype.js +0 -13
- package/types/validator.d.ts +0 -4
- package/types/validator.js +0 -14
- package/utils/api-model.d.ts +0 -87
- package/utils/api-model.js +0 -129
- package/utils/base64.d.ts +0 -12
- package/utils/base64.js +0 -21
- package/utils/date-utils.d.ts +0 -17
- package/utils/date-utils.js +0 -34
- package/utils/geojson-types.d.ts +0 -14
- package/utils/geojson-types.js +0 -18
- package/utils/geometry.d.ts +0 -36
- package/utils/geometry.js +0 -140
- package/utils/retry.d.ts +0 -13
- package/utils/retry.js +0 -50
- package/utils/slack.d.ts +0 -5
- package/utils/slack.js +0 -25
- package/utils/utils.d.ts +0 -30
- package/utils/utils.js +0 -64
@@ -1,21 +0,0 @@
|
|
1
|
-
import { IAspect } from "aws-cdk-lib";
|
2
|
-
import { DigitrafficStack } from "./stack";
|
3
|
-
import { IConstruct } from "constructs";
|
4
|
-
export declare class StackCheckingAspect implements IAspect {
|
5
|
-
private readonly stackShortName?;
|
6
|
-
private readonly whitelistedResources?;
|
7
|
-
constructor(stackShortName?: string, whitelistedResources?: string[]);
|
8
|
-
static create(stack: DigitrafficStack): StackCheckingAspect;
|
9
|
-
visit(node: IConstruct): void;
|
10
|
-
private isWhitelisted;
|
11
|
-
private addAnnotation;
|
12
|
-
private checkStack;
|
13
|
-
private checkFunction;
|
14
|
-
private checkTags;
|
15
|
-
private checkBucket;
|
16
|
-
private static isValidPath;
|
17
|
-
private static isValidQueryString;
|
18
|
-
private checkResourceCasing;
|
19
|
-
private checkQueueEncryption;
|
20
|
-
private checkLogGroupRetention;
|
21
|
-
}
|
@@ -1,174 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.StackCheckingAspect = void 0;
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
5
|
-
const aws_lambda_1 = require("aws-cdk-lib/aws-lambda");
|
6
|
-
const aws_s3_1 = require("aws-cdk-lib/aws-s3");
|
7
|
-
const stack_1 = require("./stack");
|
8
|
-
const aws_apigateway_1 = require("aws-cdk-lib/aws-apigateway");
|
9
|
-
const change_case_1 = require("change-case");
|
10
|
-
const aws_sqs_1 = require("aws-cdk-lib/aws-sqs");
|
11
|
-
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
12
|
-
const MAX_CONCURRENCY_LIMIT = 100;
|
13
|
-
const NODE_RUNTIME = aws_lambda_1.Runtime.NODEJS_14_X.name;
|
14
|
-
var ResourceType;
|
15
|
-
(function (ResourceType) {
|
16
|
-
ResourceType["stackName"] = "STACK_NAME";
|
17
|
-
ResourceType["reservedConcurrentConcurrency"] = "RESERVED_CONCURRENT_CONCURRENCY";
|
18
|
-
ResourceType["functionTimeout"] = "FUNCTION_TIMEOUT";
|
19
|
-
ResourceType["functionMemorySize"] = "FUNCTION_MEMORY_SIZE";
|
20
|
-
ResourceType["functionRuntime"] = "FUNCTION_RUNTIME";
|
21
|
-
ResourceType["functionName"] = "FUNCTION_NAME";
|
22
|
-
ResourceType["tagSolution"] = "TAG_SOLUTION";
|
23
|
-
ResourceType["bucketPublicity"] = "BUCKET_PUBLICITY";
|
24
|
-
ResourceType["resourcePath"] = "RESOURCE_PATH";
|
25
|
-
ResourceType["queueEncryption"] = "QUEUE_ENCRYPTION";
|
26
|
-
ResourceType["logGroupRetention"] = "LOG_GROUP_RETENTION";
|
27
|
-
})(ResourceType || (ResourceType = {}));
|
28
|
-
class StackCheckingAspect {
|
29
|
-
constructor(stackShortName, whitelistedResources) {
|
30
|
-
this.stackShortName = stackShortName;
|
31
|
-
this.whitelistedResources = whitelistedResources;
|
32
|
-
}
|
33
|
-
static create(stack) {
|
34
|
-
return new StackCheckingAspect(stack.configuration.shortName, stack.configuration.whitelistedResources);
|
35
|
-
}
|
36
|
-
visit(node) {
|
37
|
-
//console.info("visiting class " + node.constructor.name);
|
38
|
-
this.checkStack(node);
|
39
|
-
this.checkFunction(node);
|
40
|
-
this.checkTags(node);
|
41
|
-
this.checkBucket(node);
|
42
|
-
this.checkResourceCasing(node);
|
43
|
-
this.checkQueueEncryption(node);
|
44
|
-
this.checkLogGroupRetention(node);
|
45
|
-
}
|
46
|
-
isWhitelisted(key) {
|
47
|
-
return this.whitelistedResources?.some((wl) => {
|
48
|
-
return key.matchAll(new RegExp(wl, "g"));
|
49
|
-
});
|
50
|
-
}
|
51
|
-
addAnnotation(node, key, message, isError = true) {
|
52
|
-
const resourceKey = `${node.node.path}/${key}`;
|
53
|
-
const isWhiteListed = this.isWhitelisted(resourceKey);
|
54
|
-
const annotationMessage = `${resourceKey}:${message}`;
|
55
|
-
// error && whitelisted -> warning
|
56
|
-
// warning && whitelisted -> nothing
|
57
|
-
if (isError && !isWhiteListed) {
|
58
|
-
aws_cdk_lib_1.Annotations.of(node).addError(annotationMessage);
|
59
|
-
}
|
60
|
-
else if ((!isError && !isWhiteListed) || (isError && isWhiteListed)) {
|
61
|
-
aws_cdk_lib_1.Annotations.of(node).addWarning(annotationMessage);
|
62
|
-
}
|
63
|
-
}
|
64
|
-
checkStack(node) {
|
65
|
-
if (node instanceof stack_1.DigitrafficStack) {
|
66
|
-
if ((node.stackName.includes("Test") ||
|
67
|
-
node.stackName.includes("Tst")) &&
|
68
|
-
node.configuration.production) {
|
69
|
-
this.addAnnotation(node, ResourceType.stackName, "Production is set for Test-stack");
|
70
|
-
}
|
71
|
-
if ((node.stackName.includes("Prod") ||
|
72
|
-
node.stackName.includes("Prd")) &&
|
73
|
-
!node.configuration.production) {
|
74
|
-
this.addAnnotation(node, ResourceType.stackName, "Production is not set for Production-stack");
|
75
|
-
}
|
76
|
-
}
|
77
|
-
}
|
78
|
-
checkFunction(node) {
|
79
|
-
if (node instanceof aws_lambda_1.CfnFunction) {
|
80
|
-
if (!node.reservedConcurrentExecutions) {
|
81
|
-
this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function must have reservedConcurrentConcurrency");
|
82
|
-
}
|
83
|
-
else if (node.reservedConcurrentExecutions > MAX_CONCURRENCY_LIMIT) {
|
84
|
-
this.addAnnotation(node, ResourceType.reservedConcurrentConcurrency, "Function reservedConcurrentConcurrency too high!");
|
85
|
-
}
|
86
|
-
if (!node.timeout) {
|
87
|
-
this.addAnnotation(node, ResourceType.functionTimeout, "Function must have timeout");
|
88
|
-
}
|
89
|
-
if (!node.memorySize) {
|
90
|
-
this.addAnnotation(node, ResourceType.functionMemorySize, "Function must have memorySize");
|
91
|
-
}
|
92
|
-
if (node.runtime !== NODE_RUNTIME) {
|
93
|
-
this.addAnnotation(node, ResourceType.functionRuntime, `Function has wrong runtime ${node.runtime}`);
|
94
|
-
}
|
95
|
-
if (this.stackShortName &&
|
96
|
-
node.functionName &&
|
97
|
-
!node.functionName.startsWith(this.stackShortName)) {
|
98
|
-
this.addAnnotation(node, ResourceType.functionName, `Function name does not begin with ${this.stackShortName}`);
|
99
|
-
}
|
100
|
-
}
|
101
|
-
}
|
102
|
-
checkTags(node) {
|
103
|
-
if (node instanceof aws_cdk_lib_1.Stack) {
|
104
|
-
if (!node.tags.tagValues()[stack_1.SOLUTION_KEY]) {
|
105
|
-
this.addAnnotation(node, ResourceType.tagSolution, "Solution tag is missing");
|
106
|
-
}
|
107
|
-
}
|
108
|
-
}
|
109
|
-
checkBucket(node) {
|
110
|
-
if (node instanceof aws_s3_1.CfnBucket) {
|
111
|
-
const c = node.publicAccessBlockConfiguration;
|
112
|
-
if (c) {
|
113
|
-
if (!c.blockPublicAcls ||
|
114
|
-
!c.blockPublicPolicy ||
|
115
|
-
!c.ignorePublicAcls ||
|
116
|
-
!c.restrictPublicBuckets) {
|
117
|
-
this.addAnnotation(node, ResourceType.bucketPublicity, "Check bucket publicity");
|
118
|
-
}
|
119
|
-
}
|
120
|
-
}
|
121
|
-
}
|
122
|
-
static isValidPath(path) {
|
123
|
-
// if path includes . or { check only the trailing part of path
|
124
|
-
if (path.includes(".")) {
|
125
|
-
return this.isValidPath(path.split(".")[0]);
|
126
|
-
}
|
127
|
-
if (path.includes("{")) {
|
128
|
-
return this.isValidPath(path.split("{")[0]);
|
129
|
-
}
|
130
|
-
return (0, change_case_1.paramCase)(path) === path;
|
131
|
-
}
|
132
|
-
static isValidQueryString(name) {
|
133
|
-
return (0, change_case_1.snakeCase)(name) === name;
|
134
|
-
}
|
135
|
-
checkResourceCasing(node) {
|
136
|
-
if (node instanceof aws_apigateway_1.CfnResource) {
|
137
|
-
if (!StackCheckingAspect.isValidPath(node.pathPart)) {
|
138
|
-
this.addAnnotation(node, ResourceType.resourcePath, "Path part should be in kebab-case");
|
139
|
-
}
|
140
|
-
}
|
141
|
-
else if (node instanceof aws_apigateway_1.CfnMethod) {
|
142
|
-
const integration = node.integration;
|
143
|
-
if (integration && integration.requestParameters) {
|
144
|
-
Object.keys(integration.requestParameters).forEach((key) => {
|
145
|
-
const split = key.split(".");
|
146
|
-
const type = split[2];
|
147
|
-
const name = split[3];
|
148
|
-
if (type === "querystring" &&
|
149
|
-
!StackCheckingAspect.isValidQueryString(name)) {
|
150
|
-
this.addAnnotation(node, name, "Querystring should be in snake_case");
|
151
|
-
}
|
152
|
-
});
|
153
|
-
}
|
154
|
-
}
|
155
|
-
}
|
156
|
-
checkQueueEncryption(node) {
|
157
|
-
if (node instanceof aws_sqs_1.CfnQueue) {
|
158
|
-
if (!node.kmsMasterKeyId) {
|
159
|
-
this.addAnnotation(node, ResourceType.queueEncryption, "Queue must have encryption enabled");
|
160
|
-
}
|
161
|
-
}
|
162
|
-
}
|
163
|
-
checkLogGroupRetention(node) {
|
164
|
-
if (node instanceof aws_logs_1.LogRetention) {
|
165
|
-
const child = node.node.defaultChild;
|
166
|
-
const retention = child._cfnProperties.RetentionInDays;
|
167
|
-
if (!retention) {
|
168
|
-
this.addAnnotation(node, ResourceType.logGroupRetention, "Log group must define log group retention");
|
169
|
-
}
|
170
|
-
}
|
171
|
-
}
|
172
|
-
}
|
173
|
-
exports.StackCheckingAspect = StackCheckingAspect;
|
174
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2stY2hlY2tpbmctYXNwZWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdGFjay1jaGVja2luZy1hc3BlY3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQTBEO0FBQzFELHVEQUE4RDtBQUM5RCwrQ0FBK0M7QUFDL0MsbUNBQXlEO0FBRXpELCtEQUFvRTtBQUNwRSw2Q0FBbUQ7QUFDbkQsaURBQStDO0FBQy9DLG1EQUFvRDtBQUdwRCxNQUFNLHFCQUFxQixHQUFHLEdBQUcsQ0FBQztBQUNsQyxNQUFNLFlBQVksR0FBRyxvQkFBTyxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUM7QUFFOUMsSUFBSyxZQVlKO0FBWkQsV0FBSyxZQUFZO0lBQ2Isd0NBQXdCLENBQUE7SUFDeEIsaUZBQWlFLENBQUE7SUFDakUsb0RBQW9DLENBQUE7SUFDcEMsMkRBQTJDLENBQUE7SUFDM0Msb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsNENBQTRCLENBQUE7SUFDNUIsb0RBQW9DLENBQUE7SUFDcEMsOENBQThCLENBQUE7SUFDOUIsb0RBQW9DLENBQUE7SUFDcEMseURBQXlDLENBQUE7QUFDN0MsQ0FBQyxFQVpJLFlBQVksS0FBWixZQUFZLFFBWWhCO0FBRUQsTUFBYSxtQkFBbUI7SUFJNUIsWUFBWSxjQUF1QixFQUFFLG9CQUErQjtRQUNoRSxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsb0JBQW9CLEdBQUcsb0JBQW9CLENBQUM7SUFDckQsQ0FBQztJQUVELE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBdUI7UUFDakMsT0FBTyxJQUFJLG1CQUFtQixDQUMxQixLQUFLLENBQUMsYUFBYSxDQUFDLFNBQVMsRUFDN0IsS0FBSyxDQUFDLGFBQWEsQ0FBQyxvQkFBb0IsQ0FDM0MsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMs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QkFBWSxFQUFFO1lBQzlCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsWUFHdkIsQ0FBQztZQUNGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQyxjQUFjLENBQUMsZUFBZSxDQUFDO1lBRXZELElBQUksQ0FBQyxTQUFTLEVBQUU7Z0JBQ1osSUFBSSxDQUFDLGFBQWEsQ0FDZCxJQUFJLEVBQ0osWUFBWSxDQUFDLGlCQUFpQixFQUM5QiwyQ0FBMkMsQ0FDOUMsQ0FBQzthQUNMO1NBQ0o7SUFDTCxDQUFDO0NBQ0o7QUExUEQsa0RBMFBDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQW5ub3RhdGlvbnMsIElBc3BlY3QsIFN0YWNrIH0gZnJvbSBcImF3cy1jZGstbGliXCI7XG5pbXBvcnQgeyBDZm5GdW5jdGlvbiwgUnVudGltZSB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5pbXBvcnQgeyBDZm5CdWNrZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXMzXCI7XG5pbXBvcnQgeyBEaWdpdHJhZmZpY1N0YWNrLCBTT0xVVElPTl9LRVkgfSBmcm9tIFwiLi9zdGFja1wiO1xuaW1wb3J0IHsgSUNvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBDZm5NZXRob2QsIENmblJlc291cmNlIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQgeyBwYXJhbUNhc2UsIHNuYWtlQ2FzZSB9IGZyb20gXCJjaGFuZ2UtY2FzZVwiO1xuaW1wb3J0IHsgQ2ZuUXVldWUgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNxc1wiO1xuaW1wb3J0IHsgTG9nUmV0ZW50aW9uIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1sb2dzXCI7XG5pbXBvcnQgSW50ZWdyYXRpb25Qcm9wZXJ0eSA9IENmbk1ldGhvZC5JbnRlZ3JhdGlvblByb3BlcnR5O1xuXG5jb25zdCBNQVhfQ09OQ1VSUkVOQ1lfTElNSVQgPSAxMDA7XG5jb25zdCBOT0RFX1JVTlRJTUUgPSBSdW50aW1lLk5PREVKU18xNF9YLm5hbWU7XG5cbmVudW0gUmVzb3VyY2VUeXBlIHtcbiAgICBzdGFja05hbWUgPSBcIlNUQUNLX05BTUVcIixcbiAgICByZXNlcnZlZENvbmN1cnJlbnRDb25jdXJyZW5jeSA9IFwiUkVTRVJWRURfQ09OQ1VSUkVOVF9DT05DVVJSRU5DWVwiLFxuICAgIGZ1bmN0aW9uVGltZW91dCA9IFwiRlVOQ1RJT05fVElNRU9VVFwiLFxuICAgIGZ1bmN0aW9uTWVtb3J5U2l6ZSA9IFwiRlVOQ1RJT05fTUVNT1JZX1NJWkVcIixcbiAgICBmdW5jdGlvblJ1bnRpbWUgPSBcIkZVTkNUSU9OX1JVTlRJTUVcIixcbiAgICBmdW5jdGlvbk5hbWUgPSBcIkZVTkNUSU9OX05BTUVcIixcbiAgICB0YWdTb2x1dGlvbiA9IFwiVEFHX1NPTFVUSU9OXCIsXG4gICAgYnVja2V0UHVibGljaXR5ID0gXCJCVUNLRVRfUFVCTElDSVRZXCIsXG4gICAgcmVzb3VyY2VQYXRoID0gXCJSRVNPVVJDRV9QQVRIXCIsXG4gICAgcXVldWVFbmNyeXB0aW9uID0gXCJRVUVVRV9FTkNSWVBUSU9OXCIsXG4gICAgbG9nR3JvdXBSZXRlbnRpb24gPSBcIkxPR19HUk9VUF9SRVRFTlRJT05cIixcbn1cblxuZXhwb3J0IGNsYXNzIFN0YWNrQ2hlY2tpbmdBc3BlY3QgaW1wbGVtZW50cyBJQXNwZWN0IHtcbiAgICBwcml2YXRlIHJlYWRvbmx5IHN0YWNrU2hvcnROYW1lPzogc3RyaW5nO1xuICAgIHByaXZhdGUgcmVhZG9ubHkgd2hpdGVsaXN0ZWRSZXNvdXJjZXM/OiBzdHJpbmdbXTtcblxuICAgIGNvbnN0cnVjdG9yKHN0YWNrU2hvcnROYW1lPzogc3RyaW5nLCB3aGl0ZWxpc3RlZFJlc291cmNlcz86IHN0cmluZ1tdKSB7XG4gICAgICAgIHRoaXMuc3RhY2tTaG9ydE5hbWUgPSBzdGFja1Nob3J0TmFtZTtcbiAgICAgICAgdGhpcy53aGl0ZWxpc3RlZFJlc291cmNlcyA9IHdoaXRlbGlzdGVkUmVzb3VyY2VzO1xuICAgIH1cblxuICAgIHN0YXRpYyBjcmVhdGUoc3RhY2s6IERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgcmV0dXJuIG5ldyBTdGFja0NoZWNraW5nQXNwZWN0KFxuICAgICAgICAgICAgc3RhY2suY29uZmlndXJhdGlvbi5zaG9ydE5hbWUsXG4gICAgICAgICAgICBzdGFjay5jb25maWd1cmF0aW9uLndoaXRlbGlzdGVkUmVzb3VyY2VzXG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgcHVibGljIHZpc2l0KG5vZGU6IElDb25zdHJ1Y3QpOiB2b2lkIHtcbiAgICAgICAgLy9jb25zb2xlLmluZm8oXCJ2aXNpdGluZyBjbGFzcyBcIiArIG5vZGUuY29uc3RydWN0b3IubmFtZSk7XG5cbiAgICAgICAgdGhpcy5jaGVja1N0YWNrKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrRnVuY3Rpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tUYWdzKG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrQnVja2V0KG5vZGUpO1xuICAgICAgICB0aGlzLmNoZWNrUmVzb3VyY2VDYXNpbmcobm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tRdWV1ZUVuY3J5cHRpb24obm9kZSk7XG4gICAgICAgIHRoaXMuY2hlY2tMb2dHcm91cFJldGVudGlvbihub2RlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzV2hpdGVsaXN0ZWQoa2V5OiBzdHJpbmcpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMud2hpdGVsaXN0ZWRSZXNvdXJjZXM/LnNvbWUoKHdsKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ga2V5Lm1hdGNoQWxsKG5ldyBSZWdFeHAod2wsIFwiZ1wiKSk7XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkQW5ub3RhdGlvbihcbiAgICAgICAgbm9kZTogSUNvbnN0cnVjdCxcbiAgICAgICAga2V5OiBSZXNvdXJjZVR5cGUgfCBzdHJpbmcsXG4gICAgICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICAgICAgaXNFcnJvciA9IHRydWVcbiAgICApIHtcbiAgICAgICAgY29uc3QgcmVzb3VyY2VLZXkgPSBgJHtub2RlLm5vZGUucGF0aH0vJHtrZXl9YDtcbiAgICAgICAgY29uc3QgaXNXaGl0ZUxpc3RlZCA9IHRoaXMuaXNXaGl0ZWxpc3RlZChyZXNvdXJjZUtleSk7XG4gICAgICAgIGNvbnN0IGFubm90YXRpb25NZXNzYWdlID0gYCR7cmVzb3VyY2VLZXl9OiR7bWVzc2FnZX1gO1xuXG4gICAgICAgIC8vIGVycm9yICYmIHdoaXRlbGlzdGVkIC0+IHdhcm5pbmdcbiAgICAgICAgLy8gd2FybmluZyAmJiB3aGl0ZWxpc3RlZCAtPiBub3RoaW5nXG4gICAgICAgIGlmIChpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB7XG4gICAgICAgICAgICBBbm5vdGF0aW9ucy5vZihub2RlKS5hZGRFcnJvcihhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH0gZWxzZSBpZiAoKCFpc0Vycm9yICYmICFpc1doaXRlTGlzdGVkKSB8fCAoaXNFcnJvciAmJiBpc1doaXRlTGlzdGVkKSkge1xuICAgICAgICAgICAgQW5ub3RhdGlvbnMub2Yobm9kZSkuYWRkV2FybmluZyhhbm5vdGF0aW9uTWVzc2FnZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrU3RhY2sobm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIERpZ2l0cmFmZmljU3RhY2spIHtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJUZXN0XCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiVHN0XCIpKSAmJlxuICAgICAgICAgICAgICAgIG5vZGUuY29uZmlndXJhdGlvbi5wcm9kdWN0aW9uXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5zdGFja05hbWUsXG4gICAgICAgICAgICAgICAgICAgIFwiUHJvZHVjdGlvbiBpcyBzZXQgZm9yIFRlc3Qtc3RhY2tcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAobm9kZS5zdGFja05hbWUuaW5jbHVkZXMoXCJQcm9kXCIpIHx8XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc3RhY2tOYW1lLmluY2x1ZGVzKFwiUHJkXCIpKSAmJlxuICAgICAgICAgICAgICAgICFub2RlLmNvbmZpZ3VyYXRpb24ucHJvZHVjdGlvblxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuc3RhY2tOYW1lLFxuICAgICAgICAgICAgICAgICAgICBcIlByb2R1Y3Rpb24gaXMgbm90IHNldCBmb3IgUHJvZHVjdGlvbi1zdGFja1wiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tGdW5jdGlvbihub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuRnVuY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghbm9kZS5yZXNlcnZlZENvbmN1cnJlbnRFeGVjdXRpb25zKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucmVzZXJ2ZWRDb25jdXJyZW50Q29uY3VycmVuY3ksXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5XCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgICAgICAgICBub2RlLnJlc2VydmVkQ29uY3VycmVudEV4ZWN1dGlvbnMgPiBNQVhfQ09OQ1VSUkVOQ1lfTElNSVRcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5LFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIHJlc2VydmVkQ29uY3VycmVudENvbmN1cnJlbmN5IHRvbyBoaWdoIVwiXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFub2RlLnRpbWVvdXQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblRpbWVvdXQsXG4gICAgICAgICAgICAgICAgICAgIFwiRnVuY3Rpb24gbXVzdCBoYXZlIHRpbWVvdXRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghbm9kZS5tZW1vcnlTaXplKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25NZW1vcnlTaXplLFxuICAgICAgICAgICAgICAgICAgICBcIkZ1bmN0aW9uIG11c3QgaGF2ZSBtZW1vcnlTaXplXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAobm9kZS5ydW50aW1lICE9PSBOT0RFX1JVTlRJTUUpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmFkZEFubm90YXRpb24oXG4gICAgICAgICAgICAgICAgICAgIG5vZGUsXG4gICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5mdW5jdGlvblJ1bnRpbWUsXG4gICAgICAgICAgICAgICAgICAgIGBGdW5jdGlvbiBoYXMgd3JvbmcgcnVudGltZSAke25vZGUucnVudGltZSF9YFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICB0aGlzLnN0YWNrU2hvcnROYW1lICYmXG4gICAgICAgICAgICAgICAgbm9kZS5mdW5jdGlvbk5hbWUgJiZcbiAgICAgICAgICAgICAgICAhbm9kZS5mdW5jdGlvbk5hbWUuc3RhcnRzV2l0aCh0aGlzLnN0YWNrU2hvcnROYW1lKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUuZnVuY3Rpb25OYW1lLFxuICAgICAgICAgICAgICAgICAgICBgRnVuY3Rpb24gbmFtZSBkb2VzIG5vdCBiZWdpbiB3aXRoICR7dGhpcy5zdGFja1Nob3J0TmFtZX1gXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tUYWdzKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTdGFjaykge1xuICAgICAgICAgICAgaWYgKCFub2RlLnRhZ3MudGFnVmFsdWVzKClbU09MVVRJT05fS0VZXSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnRhZ1NvbHV0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlNvbHV0aW9uIHRhZyBpcyBtaXNzaW5nXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGVja0J1Y2tldChub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuQnVja2V0KSB7XG4gICAgICAgICAgICBjb25zdCBjID1cbiAgICAgICAgICAgICAgICBub2RlLnB1YmxpY0FjY2Vzc0Jsb2NrQ29uZmlndXJhdGlvbiBhcyBDZm5CdWNrZXQuUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChjKSB7XG4gICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAhYy5ibG9ja1B1YmxpY0FjbHMgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuYmxvY2tQdWJsaWNQb2xpY3kgfHxcbiAgICAgICAgICAgICAgICAgICAgIWMuaWdub3JlUHVibGljQWNscyB8fFxuICAgICAgICAgICAgICAgICAgICAhYy5yZXN0cmljdFB1YmxpY0J1Y2tldHNcbiAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVHlwZS5idWNrZXRQdWJsaWNpdHksXG4gICAgICAgICAgICAgICAgICAgICAgICBcIkNoZWNrIGJ1Y2tldCBwdWJsaWNpdHlcIlxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgc3RhdGljIGlzVmFsaWRQYXRoKHBhdGg6IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgICAgICAvLyBpZiBwYXRoIGluY2x1ZGVzIC4gb3IgeyBjaGVjayBvbmx5IHRoZSB0cmFpbGluZyBwYXJ0IG9mIHBhdGhcbiAgICAgICAgaWYgKHBhdGguaW5jbHVkZXMoXCIuXCIpKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5pc1ZhbGlkUGF0aChwYXRoLnNwbGl0KFwiLlwiKVswXSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocGF0aC5pbmNsdWRlcyhcIntcIikpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmlzVmFsaWRQYXRoKHBhdGguc3BsaXQoXCJ7XCIpWzBdKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBwYXJhbUNhc2UocGF0aCkgPT09IHBhdGg7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzdGF0aWMgaXNWYWxpZFF1ZXJ5U3RyaW5nKG5hbWU6IHN0cmluZykge1xuICAgICAgICByZXR1cm4gc25ha2VDYXNlKG5hbWUpID09PSBuYW1lO1xuICAgIH1cblxuICAgIHByaXZhdGUgY2hlY2tSZXNvdXJjZUNhc2luZyhub2RlOiBJQ29uc3RydWN0KSB7XG4gICAgICAgIGlmIChub2RlIGluc3RhbmNlb2YgQ2ZuUmVzb3VyY2UpIHtcbiAgICAgICAgICAgIGlmICghU3RhY2tDaGVja2luZ0FzcGVjdC5pc1ZhbGlkUGF0aChub2RlLnBhdGhQYXJ0KSkge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLnJlc291cmNlUGF0aCxcbiAgICAgICAgICAgICAgICAgICAgXCJQYXRoIHBhcnQgc2hvdWxkIGJlIGluIGtlYmFiLWNhc2VcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAobm9kZSBpbnN0YW5jZW9mIENmbk1ldGhvZCkge1xuICAgICAgICAgICAgY29uc3QgaW50ZWdyYXRpb24gPSBub2RlLmludGVncmF0aW9uIGFzIEludGVncmF0aW9uUHJvcGVydHk7XG5cbiAgICAgICAgICAgIGlmIChpbnRlZ3JhdGlvbiAmJiBpbnRlZ3JhdGlvbi5yZXF1ZXN0UGFyYW1ldGVycykge1xuICAgICAgICAgICAgICAgIE9iamVjdC5rZXlzKGludGVncmF0aW9uLnJlcXVlc3RQYXJhbWV0ZXJzKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3BsaXQgPSBrZXkuc3BsaXQoXCIuXCIpO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB0eXBlID0gc3BsaXRbMl07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IG5hbWUgPSBzcGxpdFszXTtcblxuICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICB0eXBlID09PSBcInF1ZXJ5c3RyaW5nXCIgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICFTdGFja0NoZWNraW5nQXNwZWN0LmlzVmFsaWRRdWVyeVN0cmluZyhuYW1lKVxuICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgXCJRdWVyeXN0cmluZyBzaG91bGQgYmUgaW4gc25ha2VfY2FzZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrUXVldWVFbmNyeXB0aW9uKG5vZGU6IElDb25zdHJ1Y3QpIHtcbiAgICAgICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBDZm5RdWV1ZSkge1xuICAgICAgICAgICAgaWYgKCFub2RlLmttc01hc3RlcktleUlkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5hZGRBbm5vdGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICBub2RlLFxuICAgICAgICAgICAgICAgICAgICBSZXNvdXJjZVR5cGUucXVldWVFbmNyeXB0aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIlF1ZXVlIG11c3QgaGF2ZSBlbmNyeXB0aW9uIGVuYWJsZWRcIlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoZWNrTG9nR3JvdXBSZXRlbnRpb24obm9kZTogSUNvbnN0cnVjdCkge1xuICAgICAgICBpZiAobm9kZSBpbnN0YW5jZW9mIExvZ1JldGVudGlvbikge1xuICAgICAgICAgICAgY29uc3QgY2hpbGQgPSBub2RlLm5vZGUuZGVmYXVsdENoaWxkIGFzIHVua25vd24gYXMgUmVjb3JkPFxuICAgICAgICAgICAgICAgIHN0cmluZyxcbiAgICAgICAgICAgICAgICBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+XG4gICAgICAgICAgICA+O1xuICAgICAgICAgICAgY29uc3QgcmV0ZW50aW9uID0gY2hpbGQuX2NmblByb3BlcnRpZXMuUmV0ZW50aW9uSW5EYXlzO1xuXG4gICAgICAgICAgICBpZiAoIXJldGVudGlvbikge1xuICAgICAgICAgICAgICAgIHRoaXMuYWRkQW5ub3RhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgbm9kZSxcbiAgICAgICAgICAgICAgICAgICAgUmVzb3VyY2VUeXBlLmxvZ0dyb3VwUmV0ZW50aW9uLFxuICAgICAgICAgICAgICAgICAgICBcIkxvZyBncm91cCBtdXN0IGRlZmluZSBsb2cgZ3JvdXAgcmV0ZW50aW9uXCJcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxufVxuIl19
|
@@ -1,44 +0,0 @@
|
|
1
|
-
import { Stack, StackProps } from "aws-cdk-lib";
|
2
|
-
import { IVpc } from "aws-cdk-lib/aws-ec2";
|
3
|
-
import { ISecurityGroup } from "aws-cdk-lib/aws-ec2/lib/security-group";
|
4
|
-
import { ITopic } from "aws-cdk-lib/aws-sns";
|
5
|
-
import { ISecret } from "aws-cdk-lib/aws-secretsmanager";
|
6
|
-
import { Function as AWSFunction } from "aws-cdk-lib/aws-lambda";
|
7
|
-
import { Construct } from "constructs";
|
8
|
-
import { TrafficType } from "../../../types/traffictype";
|
9
|
-
import { DBLambdaEnvironment } from "./lambda-configs";
|
10
|
-
export declare const SOLUTION_KEY = "Solution";
|
11
|
-
export declare const SSM_KEY_WARNING_TOPIC: string;
|
12
|
-
export declare const SSM_KEY_ALARM_TOPIC: string;
|
13
|
-
export interface StackConfiguration {
|
14
|
-
readonly shortName?: string;
|
15
|
-
readonly secretId?: string;
|
16
|
-
readonly alarmTopicArn: string;
|
17
|
-
readonly warningTopicArn: string;
|
18
|
-
readonly logsDestinationArn?: string;
|
19
|
-
readonly vpcId?: string;
|
20
|
-
readonly lambdaDbSgId?: string;
|
21
|
-
readonly privateSubnetIds?: string[];
|
22
|
-
readonly availabilityZones?: string[];
|
23
|
-
readonly trafficType: TrafficType;
|
24
|
-
readonly production: boolean;
|
25
|
-
readonly stackProps: StackProps;
|
26
|
-
readonly stackFeatures?: {
|
27
|
-
readonly enableCanaries?: boolean;
|
28
|
-
readonly enableDocumentation?: boolean;
|
29
|
-
};
|
30
|
-
readonly whitelistedResources?: string[];
|
31
|
-
}
|
32
|
-
export declare class DigitrafficStack extends Stack {
|
33
|
-
readonly vpc: IVpc;
|
34
|
-
readonly lambdaDbSg: ISecurityGroup;
|
35
|
-
readonly alarmTopic: ITopic;
|
36
|
-
readonly warningTopic: ITopic;
|
37
|
-
readonly secret: ISecret;
|
38
|
-
readonly configuration: StackConfiguration;
|
39
|
-
constructor(scope: Construct, id: string, configuration: StackConfiguration);
|
40
|
-
addAspects(): void;
|
41
|
-
createLambdaEnvironment(): DBLambdaEnvironment;
|
42
|
-
createDefaultLambdaEnvironment(dbApplication: string): DBLambdaEnvironment;
|
43
|
-
grantSecret(...lambdas: AWSFunction[]): void;
|
44
|
-
}
|
package/aws/infra/stack/stack.js
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficStack = exports.SSM_KEY_ALARM_TOPIC = exports.SSM_KEY_WARNING_TOPIC = exports.SOLUTION_KEY = void 0;
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
5
|
-
const aws_ec2_1 = require("aws-cdk-lib/aws-ec2");
|
6
|
-
const aws_sns_1 = require("aws-cdk-lib/aws-sns");
|
7
|
-
const aws_ssm_1 = require("aws-cdk-lib/aws-ssm");
|
8
|
-
const aws_secretsmanager_1 = require("aws-cdk-lib/aws-secretsmanager");
|
9
|
-
const stack_checking_aspect_1 = require("./stack-checking-aspect");
|
10
|
-
const SSM_ROOT = "/digitraffic";
|
11
|
-
exports.SOLUTION_KEY = "Solution";
|
12
|
-
const MONITORING_ROOT = "/monitoring";
|
13
|
-
exports.SSM_KEY_WARNING_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/warning-topic`;
|
14
|
-
exports.SSM_KEY_ALARM_TOPIC = `${SSM_ROOT}${MONITORING_ROOT}/alarm-topic`;
|
15
|
-
class DigitrafficStack extends aws_cdk_lib_1.Stack {
|
16
|
-
constructor(scope, id, configuration) {
|
17
|
-
super(scope, id, configuration.stackProps);
|
18
|
-
this.configuration = configuration;
|
19
|
-
if (configuration.secretId) {
|
20
|
-
this.secret = aws_secretsmanager_1.Secret.fromSecretNameV2(this, "Secret", configuration.secretId);
|
21
|
-
}
|
22
|
-
// VPC reference construction requires vpcId and availability zones
|
23
|
-
// private subnets are used in Lambda configuration
|
24
|
-
if (configuration.vpcId) {
|
25
|
-
this.vpc = aws_ec2_1.Vpc.fromVpcAttributes(this, "vpc", {
|
26
|
-
vpcId: configuration.vpcId,
|
27
|
-
privateSubnetIds: configuration.privateSubnetIds,
|
28
|
-
availabilityZones: configuration.availabilityZones,
|
29
|
-
});
|
30
|
-
}
|
31
|
-
// security group that allows Lambda database access
|
32
|
-
if (configuration.lambdaDbSgId) {
|
33
|
-
this.lambdaDbSg = aws_ec2_1.SecurityGroup.fromSecurityGroupId(this, "LambdaDbSG", configuration.lambdaDbSgId);
|
34
|
-
}
|
35
|
-
this.alarmTopic = aws_sns_1.Topic.fromTopicArn(this, "AlarmTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "AlarmTopicParam", exports.SSM_KEY_ALARM_TOPIC).stringValue);
|
36
|
-
this.warningTopic = aws_sns_1.Topic.fromTopicArn(this, "WarningTopic", aws_ssm_1.StringParameter.fromStringParameterName(this, "WarningTopicParam", exports.SSM_KEY_WARNING_TOPIC).stringValue);
|
37
|
-
this.addAspects();
|
38
|
-
}
|
39
|
-
addAspects() {
|
40
|
-
aws_cdk_lib_1.Aspects.of(this).add(stack_checking_aspect_1.StackCheckingAspect.create(this));
|
41
|
-
}
|
42
|
-
createLambdaEnvironment() {
|
43
|
-
return this.createDefaultLambdaEnvironment(this.configuration.shortName);
|
44
|
-
}
|
45
|
-
createDefaultLambdaEnvironment(dbApplication) {
|
46
|
-
return this.configuration.secretId
|
47
|
-
? {
|
48
|
-
SECRET_ID: this.configuration.secretId,
|
49
|
-
DB_APPLICATION: dbApplication,
|
50
|
-
}
|
51
|
-
: {
|
52
|
-
DB_APPLICATION: dbApplication,
|
53
|
-
};
|
54
|
-
}
|
55
|
-
grantSecret(...lambdas) {
|
56
|
-
lambdas.forEach((l) => this.secret.grantRead(l));
|
57
|
-
}
|
58
|
-
}
|
59
|
-
exports.DigitrafficStack = DigitrafficStack;
|
60
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXdzL2luZnJhL3N0YWNrL3N0YWNrLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUF5RDtBQUN6RCxpREFBK0Q7QUFFL0QsaURBQW9EO0FBQ3BELGlEQUFzRDtBQUN0RCx1RUFBaUU7QUFHakUsbUVBQThEO0FBSzlELE1BQU0sUUFBUSxHQUFHLGNBQWMsQ0FBQztBQUNuQixRQUFBLFlBQVksR0FBRyxVQUFVLENBQUM7QUFDdkMsTUFBTSxlQUFlLEdBQUcsYUFBYSxDQUFDO0FBRXpCLFFBQUEscUJBQXFCLEdBQUcsR0FBRyxRQUFRLEdBQUcsZUFBZSxnQkFBZ0IsQ0FBQztBQUN0RSxRQUFBLG1CQUFtQixHQUFHLEdBQUcsUUFBUSxHQUFHLGVBQWUsY0FBYyxDQUFDO0FBMkIvRSxNQUFhLGdCQUFpQixTQUFRLG1CQUFLO0lBU3ZDLFlBQ0ksS0FBZ0IsRUFDaEIsRUFBVSxFQUNWLGFBQWlDO1FBRWpDLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUzQyxJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUVuQyxJQUFJLGFBQWEsQ0FBQyxRQUFRLEVBQUU7WUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRywyQkFBTSxDQUFDLGdCQUFnQixDQUNqQyxJQUFJLEVBQ0osUUFBUSxFQUNSLGFBQWEsQ0FBQyxRQUFRLENBQ3pCLENBQUM7U0FDTDtRQUVELG1FQUFtRTtRQUNuRSxtREFBbUQ7UUFDbkQsSUFBSSxhQUFhLENBQUMsS0FBSyxFQUFFO1lBQ3JCLElBQUksQ0FBQyxHQUFHLEdBQUcsYUFBRyxDQUFDLGlCQUFpQixDQUFDLElBQUksRUFBRSxLQUFLLEVBQUU7Z0JBQzFDLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztnQkFDMUIsZ0JBQWdCLEVBQUUsYUFBYSxDQUFDLGdCQUFnQjtnQkFDaEQsaUJBQWlCLEVBQUUsYUFBYSxDQUFDLGlCQUFrQjthQUN0RCxDQUFDLENBQUM7U0FDTjtRQUVELG9EQUFvRDtRQUNwRCxJQUFJLGFBQWEsQ0FBQyxZQUFZLEVBQUU7WUFDNUIsSUFBSSxDQUFDLFVBQVUsR0FBRyx1QkFBYSxDQUFDLG1CQUFtQixDQUMvQyxJQUFJLEVBQ0osWUFBWSxFQUNaLGFBQWEsQ0FBQyxZQUFZLENBQzdCLENBQUM7U0FDTDtRQUVELElBQUksQ0FBQyxVQUFVLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDaEMsSUFBSSxFQUNKLFlBQVksRUFDWix5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osaUJBQWlCLEVBQ2pCLDJCQUFtQixDQUN0QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUNGLElBQUksQ0FBQyxZQUFZLEdBQUcsZUFBSyxDQUFDLFlBQVksQ0FDbEMsSUFBSSxFQUNKLGNBQWMsRUFDZCx5QkFBZSxDQUFDLHVCQUF1QixDQUNuQyxJQUFJLEVBQ0osbUJBQW1CLEVBQ25CLDZCQUFxQixDQUN4QixDQUFDLFdBQVcsQ0FDaEIsQ0FBQztRQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsVUFBVTtRQUNOLHFCQUFPLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQywyQ0FBbUIsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsdUJBQXVCO1FBQ25CLE9BQU8sSUFBSSxDQUFDLDhCQUE4QixDQUN0QyxJQUFJLENBQUMsYUFBYSxDQUFDLFNBQVUsQ0FDaEMsQ0FBQztJQUNOLENBQUM7SUFFRCw4QkFBOEIsQ0FBQyxhQUFxQjtRQUNoRCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtZQUM5QixDQUFDLENBQUM7Z0JBQ0ksU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUTtnQkFDdEMsY0FBYyxFQUFFLGFBQWE7YUFDaEM7WUFDSCxDQUFDLENBQUM7Z0JBQ0ksY0FBYyxFQUFFLGFBQWE7YUFDaEMsQ0FBQztJQUNaLENBQUM7SUFFRCxXQUFXLENBQUMsR0FBRyxPQUFzQjtRQUNqQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7Q0FDSjtBQTNGRCw0Q0EyRkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBBc3BlY3RzLCBTdGFjaywgU3RhY2tQcm9wcyB9IGZyb20gXCJhd3MtY2RrLWxpYlwiO1xuaW1wb3J0IHsgSVZwYywgU2VjdXJpdHlHcm91cCwgVnBjIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzJcIjtcbmltcG9ydCB7IElTZWN1cml0eUdyb3VwIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1lYzIvbGliL3NlY3VyaXR5LWdyb3VwXCI7XG5pbXBvcnQgeyBJVG9waWMsIFRvcGljIH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1zbnNcIjtcbmltcG9ydCB7IFN0cmluZ1BhcmFtZXRlciB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3Mtc3NtXCI7XG5pbXBvcnQgeyBJU2VjcmV0LCBTZWNyZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLXNlY3JldHNtYW5hZ2VyXCI7XG5pbXBvcnQgeyBGdW5jdGlvbiBhcyBBV1NGdW5jdGlvbiB9IGZyb20gXCJhd3MtY2RrLWxpYi9hd3MtbGFtYmRhXCI7XG5cbmltcG9ydCB7IFN0YWNrQ2hlY2tpbmdBc3BlY3QgfSBmcm9tIFwiLi9zdGFjay1jaGVja2luZy1hc3BlY3RcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5pbXBvcnQgeyBUcmFmZmljVHlwZSB9IGZyb20gXCIuLi8uLi8uLi90eXBlcy90cmFmZmljdHlwZVwiO1xuaW1wb3J0IHsgREJMYW1iZGFFbnZpcm9ubWVudCB9IGZyb20gXCIuL2xhbWJkYS1jb25maWdzXCI7XG5cbmNvbnN0IFNTTV9ST09UID0gXCIvZGlnaXRyYWZmaWNcIjtcbmV4cG9ydCBjb25zdCBTT0xVVElPTl9LRVkgPSBcIlNvbHV0aW9uXCI7XG5jb25zdCBNT05JVE9SSU5HX1JPT1QgPSBcIi9tb25pdG9yaW5nXCI7XG5cbmV4cG9ydCBjb25zdCBTU01fS0VZX1dBUk5JTkdfVE9QSUMgPSBgJHtTU01fUk9PVH0ke01PTklUT1JJTkdfUk9PVH0vd2FybmluZy10b3BpY2A7XG5leHBvcnQgY29uc3QgU1NNX0tFWV9BTEFSTV9UT1BJQyA9IGAke1NTTV9ST09UfSR7TU9OSVRPUklOR19ST09UfS9hbGFybS10b3BpY2A7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU3RhY2tDb25maWd1cmF0aW9uIHtcbiAgICByZWFkb25seSBzaG9ydE5hbWU/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgc2VjcmV0SWQ/OiBzdHJpbmc7XG4gICAgcmVhZG9ubHkgYWxhcm1Ub3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IHdhcm5pbmdUb3BpY0Fybjogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxvZ3NEZXN0aW5hdGlvbkFybj86IHN0cmluZztcblxuICAgIHJlYWRvbmx5IHZwY0lkPzogc3RyaW5nO1xuICAgIHJlYWRvbmx5IGxhbWJkYURiU2dJZD86IHN0cmluZztcbiAgICByZWFkb25seSBwcml2YXRlU3VibmV0SWRzPzogc3RyaW5nW107XG4gICAgcmVhZG9ubHkgYXZhaWxhYmlsaXR5Wm9uZXM/OiBzdHJpbmdbXTtcblxuICAgIHJlYWRvbmx5IHRyYWZmaWNUeXBlOiBUcmFmZmljVHlwZTtcbiAgICByZWFkb25seSBwcm9kdWN0aW9uOiBib29sZWFuO1xuICAgIHJlYWRvbmx5IHN0YWNrUHJvcHM6IFN0YWNrUHJvcHM7XG5cbiAgICByZWFkb25seSBzdGFja0ZlYXR1cmVzPzoge1xuICAgICAgICByZWFkb25seSBlbmFibGVDYW5hcmllcz86IGJvb2xlYW47XG4gICAgICAgIHJlYWRvbmx5IGVuYWJsZURvY3VtZW50YXRpb24/OiBib29sZWFuO1xuICAgIH07XG5cbiAgICAvLy8gd2hpdGVsaXN0IHJlc291cmNlcyBmb3IgU3RhY2tDaGVja2luZ0FzcGVjdFxuICAgIHJlYWRvbmx5IHdoaXRlbGlzdGVkUmVzb3VyY2VzPzogc3RyaW5nW107XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIHJlYWRvbmx5IHZwYzogSVZwYztcbiAgICByZWFkb25seSBsYW1iZGFEYlNnOiBJU2VjdXJpdHlHcm91cDtcbiAgICByZWFkb25seSBhbGFybVRvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgd2FybmluZ1RvcGljOiBJVG9waWM7XG4gICAgcmVhZG9ubHkgc2VjcmV0OiBJU2VjcmV0O1xuXG4gICAgcmVhZG9ubHkgY29uZmlndXJhdGlvbjogU3RhY2tDb25maWd1cmF0aW9uO1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHNjb3BlOiBDb25zdHJ1Y3QsXG4gICAgICAgIGlkOiBzdHJpbmcsXG4gICAgICAgIGNvbmZpZ3VyYXRpb246IFN0YWNrQ29uZmlndXJhdGlvblxuICAgICkge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIGNvbmZpZ3VyYXRpb24uc3RhY2tQcm9wcyk7XG5cbiAgICAgICAgdGhpcy5jb25maWd1cmF0aW9uID0gY29uZmlndXJhdGlvbjtcblxuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5zZWNyZXRJZCkge1xuICAgICAgICAgICAgdGhpcy5zZWNyZXQgPSBTZWNyZXQuZnJvbVNlY3JldE5hbWVWMihcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiU2VjcmV0XCIsXG4gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFZQQyByZWZlcmVuY2UgY29uc3RydWN0aW9uIHJlcXVpcmVzIHZwY0lkIGFuZCBhdmFpbGFiaWxpdHkgem9uZXNcbiAgICAgICAgLy8gcHJpdmF0ZSBzdWJuZXRzIGFyZSB1c2VkIGluIExhbWJkYSBjb25maWd1cmF0aW9uXG4gICAgICAgIGlmIChjb25maWd1cmF0aW9uLnZwY0lkKSB7XG4gICAgICAgICAgICB0aGlzLnZwYyA9IFZwYy5mcm9tVnBjQXR0cmlidXRlcyh0aGlzLCBcInZwY1wiLCB7XG4gICAgICAgICAgICAgICAgdnBjSWQ6IGNvbmZpZ3VyYXRpb24udnBjSWQsXG4gICAgICAgICAgICAgICAgcHJpdmF0ZVN1Ym5ldElkczogY29uZmlndXJhdGlvbi5wcml2YXRlU3VibmV0SWRzLFxuICAgICAgICAgICAgICAgIGF2YWlsYWJpbGl0eVpvbmVzOiBjb25maWd1cmF0aW9uLmF2YWlsYWJpbGl0eVpvbmVzISxcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gc2VjdXJpdHkgZ3JvdXAgdGhhdCBhbGxvd3MgTGFtYmRhIGRhdGFiYXNlIGFjY2Vzc1xuICAgICAgICBpZiAoY29uZmlndXJhdGlvbi5sYW1iZGFEYlNnSWQpIHtcbiAgICAgICAgICAgIHRoaXMubGFtYmRhRGJTZyA9IFNlY3VyaXR5R3JvdXAuZnJvbVNlY3VyaXR5R3JvdXBJZChcbiAgICAgICAgICAgICAgICB0aGlzLFxuICAgICAgICAgICAgICAgIFwiTGFtYmRhRGJTR1wiLFxuICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24ubGFtYmRhRGJTZ0lkXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hbGFybVRvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiQWxhcm1Ub3BpY1wiLFxuICAgICAgICAgICAgU3RyaW5nUGFyYW1ldGVyLmZyb21TdHJpbmdQYXJhbWV0ZXJOYW1lKFxuICAgICAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAgICAgXCJBbGFybVRvcGljUGFyYW1cIixcbiAgICAgICAgICAgICAgICBTU01fS0VZX0FMQVJNX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIHRoaXMud2FybmluZ1RvcGljID0gVG9waWMuZnJvbVRvcGljQXJuKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIFwiV2FybmluZ1RvcGljXCIsXG4gICAgICAgICAgICBTdHJpbmdQYXJhbWV0ZXIuZnJvbVN0cmluZ1BhcmFtZXRlck5hbWUoXG4gICAgICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgICAgICBcIldhcm5pbmdUb3BpY1BhcmFtXCIsXG4gICAgICAgICAgICAgICAgU1NNX0tFWV9XQVJOSU5HX1RPUElDXG4gICAgICAgICAgICApLnN0cmluZ1ZhbHVlXG4gICAgICAgICk7XG5cbiAgICAgICAgdGhpcy5hZGRBc3BlY3RzKCk7XG4gICAgfVxuXG4gICAgYWRkQXNwZWN0cygpIHtcbiAgICAgICAgQXNwZWN0cy5vZih0aGlzKS5hZGQoU3RhY2tDaGVja2luZ0FzcGVjdC5jcmVhdGUodGhpcykpO1xuICAgIH1cblxuICAgIGNyZWF0ZUxhbWJkYUVudmlyb25tZW50KCk6IERCTGFtYmRhRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jcmVhdGVEZWZhdWx0TGFtYmRhRW52aXJvbm1lbnQoXG4gICAgICAgICAgICB0aGlzLmNvbmZpZ3VyYXRpb24uc2hvcnROYW1lIVxuICAgICAgICApO1xuICAgIH1cblxuICAgIGNyZWF0ZURlZmF1bHRMYW1iZGFFbnZpcm9ubWVudChkYkFwcGxpY2F0aW9uOiBzdHJpbmcpOiBEQkxhbWJkYUVudmlyb25tZW50IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZFxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBTRUNSRVRfSUQ6IHRoaXMuY29uZmlndXJhdGlvbi5zZWNyZXRJZCxcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IHtcbiAgICAgICAgICAgICAgICAgIERCX0FQUExJQ0FUSU9OOiBkYkFwcGxpY2F0aW9uLFxuICAgICAgICAgICAgICB9O1xuICAgIH1cblxuICAgIGdyYW50U2VjcmV0KC4uLmxhbWJkYXM6IEFXU0Z1bmN0aW9uW10pIHtcbiAgICAgICAgbGFtYmRhcy5mb3JFYWNoKChsOiBBV1NGdW5jdGlvbikgPT4gdGhpcy5zZWNyZXQuZ3JhbnRSZWFkKGwpKTtcbiAgICB9XG59XG4iXX0=
|
@@ -1,17 +0,0 @@
|
|
1
|
-
import { CfnSubscriptionFilter } from 'aws-cdk-lib/aws-logs';
|
2
|
-
import { Function } from 'aws-cdk-lib/aws-lambda';
|
3
|
-
import { DigitrafficStack } from "./stack";
|
4
|
-
import { Construct } from "constructs";
|
5
|
-
import { MonitoredFunction } from "./monitoredfunction";
|
6
|
-
/**
|
7
|
-
* Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
|
8
|
-
* https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
|
9
|
-
* @param lambda The Lambda function, needed to create a dependency
|
10
|
-
* @param lambdaName The Lambda name from which the Log Group name is derived
|
11
|
-
* @param logDestinationArn Destination for streamed logs
|
12
|
-
* @param stack CloudFormation stack
|
13
|
-
*/
|
14
|
-
export declare function createSubscription(lambda: Function, lambdaName: string, logDestinationArn: string | undefined, stack: Construct): CfnSubscriptionFilter | undefined;
|
15
|
-
export declare class DigitrafficLogSubscriptions {
|
16
|
-
constructor(stack: DigitrafficStack, ...lambdas: MonitoredFunction[]);
|
17
|
-
}
|
@@ -1,41 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficLogSubscriptions = exports.createSubscription = void 0;
|
4
|
-
const aws_logs_1 = require("aws-cdk-lib/aws-logs");
|
5
|
-
/**
|
6
|
-
* Creates a subscription filter that subscribes to a Lambda Log Group and delivers the logs to another destination.
|
7
|
-
* https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-logs-subscriptionfilter.html
|
8
|
-
* @param lambda The Lambda function, needed to create a dependency
|
9
|
-
* @param lambdaName The Lambda name from which the Log Group name is derived
|
10
|
-
* @param logDestinationArn Destination for streamed logs
|
11
|
-
* @param stack CloudFormation stack
|
12
|
-
*/
|
13
|
-
function createSubscription(lambda, lambdaName, logDestinationArn, stack) {
|
14
|
-
if (logDestinationArn == undefined) {
|
15
|
-
return undefined;
|
16
|
-
}
|
17
|
-
const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambdaName}LogsSubscription`, {
|
18
|
-
logGroupName: `/aws/lambda/${lambdaName}`,
|
19
|
-
filterPattern: '',
|
20
|
-
destinationArn: logDestinationArn,
|
21
|
-
});
|
22
|
-
filter.node.addDependency(lambda);
|
23
|
-
return filter;
|
24
|
-
}
|
25
|
-
exports.createSubscription = createSubscription;
|
26
|
-
class DigitrafficLogSubscriptions {
|
27
|
-
constructor(stack, ...lambdas) {
|
28
|
-
if (stack.configuration.logsDestinationArn) {
|
29
|
-
lambdas.forEach(lambda => {
|
30
|
-
const filter = new aws_logs_1.CfnSubscriptionFilter(stack, `${lambda.givenName}LogsSubscription`, {
|
31
|
-
logGroupName: `/aws/lambda/${lambda.givenName}`,
|
32
|
-
filterPattern: '',
|
33
|
-
destinationArn: stack.configuration.logsDestinationArn,
|
34
|
-
});
|
35
|
-
filter.node.addDependency(lambda);
|
36
|
-
});
|
37
|
-
}
|
38
|
-
}
|
39
|
-
}
|
40
|
-
exports.DigitrafficLogSubscriptions = DigitrafficLogSubscriptions;
|
41
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3Vic2NyaXB0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2F3cy9pbmZyYS9zdGFjay9zdWJzY3JpcHRpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbURBQTJEO0FBTTNEOzs7Ozs7O0dBT0c7QUFDSCxTQUFnQixrQkFBa0IsQ0FBQyxNQUFnQixFQUFFLFVBQWtCLEVBQUUsaUJBQXFDLEVBQUUsS0FBZ0I7SUFDNUgsSUFBSSxpQkFBaUIsSUFBSSxTQUFTLEVBQUU7UUFDaEMsT0FBTyxTQUFTLENBQUM7S0FDcEI7SUFDRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGdDQUFxQixDQUFDLEtBQUssRUFBRSxHQUFHLFVBQVUsa0JBQWtCLEVBQUU7UUFDN0UsWUFBWSxFQUFFLGVBQWUsVUFBVSxFQUFFO1FBQ3pDLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLGNBQWMsRUFBRSxpQkFBaUI7S0FDcEMsQ0FBQyxDQUFDO0lBRUgsTUFBTSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFbEMsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELGdEQWFDO0FBRUQsTUFBYSwyQkFBMkI7SUFDcEMsWUFBWSxLQUF1QixFQUFFLEdBQUcsT0FBNEI7UUFDaEUsSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLGtCQUFrQixFQUFFO1lBQ3hDLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ3JCLE1BQU0sTUFBTSxHQUFHLElBQUksZ0NBQXFCLENBQUMsS0FBSyxFQUFFLEdBQUcsTUFBTSxDQUFDLFNBQVMsa0JBQWtCLEVBQUU7b0JBQ25GLFlBQVksRUFBRSxlQUFlLE1BQU0sQ0FBQyxTQUFTLEVBQUU7b0JBQy9DLGFBQWEsRUFBRSxFQUFFO29CQUNqQixjQUFjLEVBQUUsS0FBSyxDQUFDLGFBQWEsQ0FBQyxrQkFBNEI7aUJBQ25FLENBQUMsQ0FBQztnQkFFSCxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUN0QyxDQUFDLENBQUMsQ0FBQztTQUNOO0lBQ0wsQ0FBQztDQUNKO0FBZEQsa0VBY0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0NmblN1YnNjcmlwdGlvbkZpbHRlcn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0IHtGdW5jdGlvbn0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWxhbWJkYSc7XG5pbXBvcnQge0RpZ2l0cmFmZmljU3RhY2t9IGZyb20gXCIuL3N0YWNrXCI7XG5pbXBvcnQge0NvbnN0cnVjdH0gZnJvbSBcImNvbnN0cnVjdHNcIjtcbmltcG9ydCB7TW9uaXRvcmVkRnVuY3Rpb259IGZyb20gXCIuL21vbml0b3JlZGZ1bmN0aW9uXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhIHN1YnNjcmlwdGlvbiBmaWx0ZXIgdGhhdCBzdWJzY3JpYmVzIHRvIGEgTGFtYmRhIExvZyBHcm91cCBhbmQgZGVsaXZlcnMgdGhlIGxvZ3MgdG8gYW5vdGhlciBkZXN0aW5hdGlvbi5cbiAqIGh0dHBzOi8vZG9jcy5hd3MuYW1hem9uLmNvbS9BV1NDbG91ZEZvcm1hdGlvbi9sYXRlc3QvVXNlckd1aWRlL2F3cy1yZXNvdXJjZS1sb2dzLXN1YnNjcmlwdGlvbmZpbHRlci5odG1sXG4gKiBAcGFyYW0gbGFtYmRhIFRoZSBMYW1iZGEgZnVuY3Rpb24sIG5lZWRlZCB0byBjcmVhdGUgYSBkZXBlbmRlbmN5XG4gKiBAcGFyYW0gbGFtYmRhTmFtZSBUaGUgTGFtYmRhIG5hbWUgZnJvbSB3aGljaCB0aGUgTG9nIEdyb3VwIG5hbWUgaXMgZGVyaXZlZFxuICogQHBhcmFtIGxvZ0Rlc3RpbmF0aW9uQXJuIERlc3RpbmF0aW9uIGZvciBzdHJlYW1lZCBsb2dzXG4gKiBAcGFyYW0gc3RhY2sgQ2xvdWRGb3JtYXRpb24gc3RhY2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVN1YnNjcmlwdGlvbihsYW1iZGE6IEZ1bmN0aW9uLCBsYW1iZGFOYW1lOiBzdHJpbmcsIGxvZ0Rlc3RpbmF0aW9uQXJuOiBzdHJpbmcgfCB1bmRlZmluZWQsIHN0YWNrOiBDb25zdHJ1Y3QpOiBDZm5TdWJzY3JpcHRpb25GaWx0ZXIgfCB1bmRlZmluZWQge1xuICAgIGlmIChsb2dEZXN0aW5hdGlvbkFybiA9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYU5hbWV9YCxcbiAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgIGRlc3RpbmF0aW9uQXJuOiBsb2dEZXN0aW5hdGlvbkFybixcbiAgICB9KTtcblxuICAgIGZpbHRlci5ub2RlLmFkZERlcGVuZGVuY3kobGFtYmRhKTtcblxuICAgIHJldHVybiBmaWx0ZXI7XG59XG5cbmV4cG9ydCBjbGFzcyBEaWdpdHJhZmZpY0xvZ1N1YnNjcmlwdGlvbnMge1xuICAgIGNvbnN0cnVjdG9yKHN0YWNrOiBEaWdpdHJhZmZpY1N0YWNrLCAuLi5sYW1iZGFzOiBNb25pdG9yZWRGdW5jdGlvbltdKSB7XG4gICAgICAgIGlmIChzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybikge1xuICAgICAgICAgICAgbGFtYmRhcy5mb3JFYWNoKGxhbWJkYSA9PiB7XG4gICAgICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gbmV3IENmblN1YnNjcmlwdGlvbkZpbHRlcihzdGFjaywgYCR7bGFtYmRhLmdpdmVuTmFtZX1Mb2dzU3Vic2NyaXB0aW9uYCwge1xuICAgICAgICAgICAgICAgICAgICBsb2dHcm91cE5hbWU6IGAvYXdzL2xhbWJkYS8ke2xhbWJkYS5naXZlbk5hbWV9YCxcbiAgICAgICAgICAgICAgICAgICAgZmlsdGVyUGF0dGVybjogJycsXG4gICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uQXJuOiBzdGFjay5jb25maWd1cmF0aW9uLmxvZ3NEZXN0aW5hdGlvbkFybiBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgICAgICBmaWx0ZXIubm9kZS5hZGREZXBlbmRlbmN5KGxhbWJkYSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
@@ -1,15 +0,0 @@
|
|
1
|
-
import { IApiKey, RestApi } from 'aws-cdk-lib/aws-apigateway';
|
2
|
-
/**
|
3
|
-
* Creates an usage plan for a REST API with a single API key
|
4
|
-
* @param api The REST API
|
5
|
-
* @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
|
6
|
-
* @param apiKeyName Name for the API key, this is displayed in the AWS Console
|
7
|
-
* @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
|
8
|
-
*/
|
9
|
-
export declare function createUsagePlan(api: RestApi, apiKeyId: string, apiKeyName: string): IApiKey;
|
10
|
-
/**
|
11
|
-
* Creates a default usage plan for a REST API with a single API key
|
12
|
-
* @param api The REST API
|
13
|
-
* @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
|
14
|
-
*/
|
15
|
-
export declare function createDefaultUsagePlan(api: RestApi, apiName: string): IApiKey;
|
package/aws/infra/usage-plans.js
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.createDefaultUsagePlan = exports.createUsagePlan = void 0;
|
4
|
-
/**
|
5
|
-
* Creates an usage plan for a REST API with a single API key
|
6
|
-
* @param api The REST API
|
7
|
-
* @param apiKeyId Id for the API key, this is a surrogate id for CDK, not displayed anywhere
|
8
|
-
* @param apiKeyName Name for the API key, this is displayed in the AWS Console
|
9
|
-
* @deprecated Creates randomized API key names, use createDefaultUsagePlan instead
|
10
|
-
*/
|
11
|
-
function createUsagePlan(api, apiKeyId, apiKeyName) {
|
12
|
-
const apiKey = api.addApiKey(apiKeyId);
|
13
|
-
const plan = api.addUsagePlan(apiKeyName, {
|
14
|
-
name: apiKeyName,
|
15
|
-
});
|
16
|
-
plan.addApiStage({
|
17
|
-
stage: api.deploymentStage,
|
18
|
-
});
|
19
|
-
plan.addApiKey(apiKey);
|
20
|
-
return apiKey;
|
21
|
-
}
|
22
|
-
exports.createUsagePlan = createUsagePlan;
|
23
|
-
/**
|
24
|
-
* Creates a default usage plan for a REST API with a single API key
|
25
|
-
* @param api The REST API
|
26
|
-
* @param apiName Name of the api. Will generate key: apiName + ' API Key' and plan: apiName + ' API Usage Plan'
|
27
|
-
*/
|
28
|
-
function createDefaultUsagePlan(api, apiName) {
|
29
|
-
const apiKeyName = apiName + ' API Key';
|
30
|
-
const usagePlanName = apiName + ' API Usage Plan';
|
31
|
-
const apiKey = api.addApiKey(apiKeyName, { apiKeyName: apiKeyName });
|
32
|
-
const plan = api.addUsagePlan(usagePlanName, {
|
33
|
-
name: usagePlanName,
|
34
|
-
});
|
35
|
-
plan.addApiStage({
|
36
|
-
stage: api.deploymentStage,
|
37
|
-
});
|
38
|
-
plan.addApiKey(apiKey);
|
39
|
-
return apiKey;
|
40
|
-
}
|
41
|
-
exports.createDefaultUsagePlan = createDefaultUsagePlan;
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNhZ2UtcGxhbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL2luZnJhL3VzYWdlLXBsYW5zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7R0FNRztBQUNILFNBQWdCLGVBQWUsQ0FBQyxHQUFZLEVBQUUsUUFBZ0IsRUFBRSxVQUFrQjtJQUM5RSxNQUFNLE1BQU0sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxZQUFZLENBQUMsVUFBVSxFQUFFO1FBQ3RDLElBQUksRUFBRSxVQUFVO0tBQ25CLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxXQUFXLENBQUM7UUFDYixLQUFLLEVBQUUsR0FBRyxDQUFDLGVBQWU7S0FDN0IsQ0FBQyxDQUFDO0lBQ0gsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUV2QixPQUFPLE1BQU0sQ0FBQztBQUNsQixDQUFDO0FBWEQsMENBV0M7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0Isc0JBQXNCLENBQUMsR0FBWSxFQUFFLE9BQWU7SUFDaEUsTUFBTSxVQUFVLEdBQUcsT0FBTyxHQUFHLFVBQVUsQ0FBQztJQUN4QyxNQUFNLGFBQWEsR0FBRyxPQUFPLEdBQUcsaUJBQWlCLENBQUM7SUFDbEQsTUFBTSxNQUFNLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQztJQUNyRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsWUFBWSxDQUFDLGFBQWEsRUFBRTtRQUN6QyxJQUFJLEVBQUUsYUFBYTtLQUN0QixDQUFDLENBQUM7SUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDO1FBQ2IsS0FBSyxFQUFFLEdBQUcsQ0FBQyxlQUFlO0tBQzdCLENBQUMsQ0FBQztJQUNILElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFdkIsT0FBTyxNQUFNLENBQUM7QUFDbEIsQ0FBQztBQWJELHdEQWFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJQXBpS2V5LCBSZXN0QXBpfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtYXBpZ2F0ZXdheSc7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiB1c2FnZSBwbGFuIGZvciBhIFJFU1QgQVBJIHdpdGggYSBzaW5nbGUgQVBJIGtleVxuICogQHBhcmFtIGFwaSBUaGUgUkVTVCBBUElcbiAqIEBwYXJhbSBhcGlLZXlJZCBJZCBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgYSBzdXJyb2dhdGUgaWQgZm9yIENESywgbm90IGRpc3BsYXllZCBhbnl3aGVyZVxuICogQHBhcmFtIGFwaUtleU5hbWUgTmFtZSBmb3IgdGhlIEFQSSBrZXksIHRoaXMgaXMgZGlzcGxheWVkIGluIHRoZSBBV1MgQ29uc29sZVxuICogQGRlcHJlY2F0ZWQgQ3JlYXRlcyByYW5kb21pemVkIEFQSSBrZXkgbmFtZXMsIHVzZSBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuIGluc3RlYWRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVVzYWdlUGxhbihhcGk6IFJlc3RBcGksIGFwaUtleUlkOiBzdHJpbmcsIGFwaUtleU5hbWU6IHN0cmluZyk6IElBcGlLZXkge1xuICAgIGNvbnN0IGFwaUtleSA9IGFwaS5hZGRBcGlLZXkoYXBpS2V5SWQpO1xuICAgIGNvbnN0IHBsYW4gPSBhcGkuYWRkVXNhZ2VQbGFuKGFwaUtleU5hbWUsIHtcbiAgICAgICAgbmFtZTogYXBpS2V5TmFtZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaVN0YWdlKHtcbiAgICAgICAgc3RhZ2U6IGFwaS5kZXBsb3ltZW50U3RhZ2UsXG4gICAgfSk7XG4gICAgcGxhbi5hZGRBcGlLZXkoYXBpS2V5KTtcblxuICAgIHJldHVybiBhcGlLZXk7XG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlZmF1bHQgdXNhZ2UgcGxhbiBmb3IgYSBSRVNUIEFQSSB3aXRoIGEgc2luZ2xlIEFQSSBrZXlcbiAqIEBwYXJhbSBhcGkgVGhlIFJFU1QgQVBJXG4gKiBAcGFyYW0gYXBpTmFtZSBOYW1lIG9mIHRoZSBhcGkuIFdpbGwgZ2VuZXJhdGUga2V5OiBhcGlOYW1lICsgJyBBUEkgS2V5JyBhbmQgcGxhbjogYXBpTmFtZSArICcgQVBJIFVzYWdlIFBsYW4nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVEZWZhdWx0VXNhZ2VQbGFuKGFwaTogUmVzdEFwaSwgYXBpTmFtZTogc3RyaW5nKTogSUFwaUtleSB7XG4gICAgY29uc3QgYXBpS2V5TmFtZSA9IGFwaU5hbWUgKyAnIEFQSSBLZXknO1xuICAgIGNvbnN0IHVzYWdlUGxhbk5hbWUgPSBhcGlOYW1lICsgJyBBUEkgVXNhZ2UgUGxhbic7XG4gICAgY29uc3QgYXBpS2V5ID0gYXBpLmFkZEFwaUtleShhcGlLZXlOYW1lLCB7IGFwaUtleU5hbWU6IGFwaUtleU5hbWUgfSk7XG4gICAgY29uc3QgcGxhbiA9IGFwaS5hZGRVc2FnZVBsYW4odXNhZ2VQbGFuTmFtZSwge1xuICAgICAgICBuYW1lOiB1c2FnZVBsYW5OYW1lLFxuICAgIH0pO1xuICAgIHBsYW4uYWRkQXBpU3RhZ2Uoe1xuICAgICAgICBzdGFnZTogYXBpLmRlcGxveW1lbnRTdGFnZSxcbiAgICB9KTtcbiAgICBwbGFuLmFkZEFwaUtleShhcGlLZXkpO1xuXG4gICAgcmV0dXJuIGFwaUtleTtcbn1cbiJdfQ==
|
package/aws/runtime/apikey.d.ts
DELETED
package/aws/runtime/apikey.js
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.getApiKeyFromAPIGateway = void 0;
|
4
|
-
const aws_sdk_1 = require("aws-sdk");
|
5
|
-
function getApiKeyFromAPIGateway(keyId) {
|
6
|
-
const agw = new aws_sdk_1.APIGateway();
|
7
|
-
return agw.getApiKey({
|
8
|
-
apiKey: keyId,
|
9
|
-
includeValue: true,
|
10
|
-
}).promise();
|
11
|
-
}
|
12
|
-
exports.getApiKeyFromAPIGateway = getApiKeyFromAPIGateway;
|
13
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpa2V5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL2FwaWtleS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUM7QUFFbkMsU0FBZ0IsdUJBQXVCLENBQUMsS0FBYTtJQUNqRCxNQUFNLEdBQUcsR0FBRyxJQUFJLG9CQUFVLEVBQUUsQ0FBQztJQUM3QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUM7UUFDakIsTUFBTSxFQUFFLEtBQUs7UUFDYixZQUFZLEVBQUUsSUFBSTtLQUNyQixDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDakIsQ0FBQztBQU5ELDBEQU1DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtBUElHYXRld2F5fSBmcm9tIFwiYXdzLXNka1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXBpS2V5RnJvbUFQSUdhdGV3YXkoa2V5SWQ6IHN0cmluZyk6IFByb21pc2U8QVBJR2F0ZXdheS5UeXBlcy5BcGlLZXk+IHtcbiAgICBjb25zdCBhZ3cgPSBuZXcgQVBJR2F0ZXdheSgpO1xuICAgIHJldHVybiBhZ3cuZ2V0QXBpS2V5KHtcbiAgICAgICAgYXBpS2V5OiBrZXlJZCxcbiAgICAgICAgaW5jbHVkZVZhbHVlOiB0cnVlLFxuICAgIH0pLnByb21pc2UoKTtcbn1cbiJdfQ==
|
@@ -1,8 +0,0 @@
|
|
1
|
-
import { IntegrationResponse } from "aws-cdk-lib/aws-apigateway";
|
2
|
-
import { MediaType } from "../types/mediatypes";
|
3
|
-
export declare abstract class DigitrafficIntegrationResponse {
|
4
|
-
static ok(mediaType: MediaType): IntegrationResponse;
|
5
|
-
static badRequest(mediaType?: MediaType): IntegrationResponse;
|
6
|
-
static notImplemented(mediaType?: MediaType): IntegrationResponse;
|
7
|
-
static create(statusCode: string, mediaType: MediaType): IntegrationResponse;
|
8
|
-
}
|
@@ -1,26 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.DigitrafficIntegrationResponse = void 0;
|
4
|
-
const mediatypes_1 = require("../types/mediatypes");
|
5
|
-
const response_1 = require("../infra/api/response");
|
6
|
-
class DigitrafficIntegrationResponse {
|
7
|
-
static ok(mediaType) {
|
8
|
-
return this.create("200", mediaType);
|
9
|
-
}
|
10
|
-
static badRequest(mediaType) {
|
11
|
-
return this.create("400", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
|
12
|
-
}
|
13
|
-
static notImplemented(mediaType) {
|
14
|
-
return this.create("501", mediaType ?? mediatypes_1.MediaType.TEXT_PLAIN);
|
15
|
-
}
|
16
|
-
static create(statusCode, mediaType) {
|
17
|
-
return {
|
18
|
-
statusCode,
|
19
|
-
responseTemplates: {
|
20
|
-
[mediaType]: response_1.RESPONSE_DEFAULT_LAMBDA,
|
21
|
-
},
|
22
|
-
};
|
23
|
-
}
|
24
|
-
}
|
25
|
-
exports.DigitrafficIntegrationResponse = DigitrafficIntegrationResponse;
|
26
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZGlnaXRyYWZmaWMtaW50ZWdyYXRpb24tcmVzcG9uc2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esb0RBQThDO0FBQzlDLG9EQUE4RDtBQUU5RCxNQUFzQiw4QkFBOEI7SUFFaEQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxTQUFvQjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLFNBQXFCO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsU0FBUyxJQUFJLHNCQUFTLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUVELE1BQU0sQ0FBQyxjQUFjLENBQUMsU0FBcUI7UUFDdkMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLElBQUksc0JBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFrQixFQUFFLFNBQW9CO1FBQ2xELE9BQU87WUFDSCxVQUFVO1lBQ1YsaUJBQWlCLEVBQUU7Z0JBQ2YsQ0FBQyxTQUFTLENBQUMsRUFBRSxrQ0FBdUI7YUFDdkM7U0FDSixDQUFDO0lBQ04sQ0FBQztDQUNKO0FBdEJELHdFQXNCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW50ZWdyYXRpb25SZXNwb25zZX0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1hcGlnYXRld2F5XCI7XG5pbXBvcnQge01lZGlhVHlwZX0gZnJvbSBcIi4uL3R5cGVzL21lZGlhdHlwZXNcIjtcbmltcG9ydCB7UkVTUE9OU0VfREVGQVVMVF9MQU1CREF9IGZyb20gXCIuLi9pbmZyYS9hcGkvcmVzcG9uc2VcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIERpZ2l0cmFmZmljSW50ZWdyYXRpb25SZXNwb25zZSB7XG5cbiAgICBzdGF0aWMgb2sobWVkaWFUeXBlOiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiMjAwXCIsIG1lZGlhVHlwZSk7XG4gICAgfVxuXG4gICAgc3RhdGljIGJhZFJlcXVlc3QobWVkaWFUeXBlPzogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB0aGlzLmNyZWF0ZShcIjQwMFwiLCBtZWRpYVR5cGUgPz8gTWVkaWFUeXBlLlRFWFRfUExBSU4pO1xuICAgIH1cblxuICAgIHN0YXRpYyBub3RJbXBsZW1lbnRlZChtZWRpYVR5cGU/OiBNZWRpYVR5cGUpOiBJbnRlZ3JhdGlvblJlc3BvbnNlIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3JlYXRlKFwiNTAxXCIsIG1lZGlhVHlwZSA/PyBNZWRpYVR5cGUuVEVYVF9QTEFJTik7XG4gICAgfVxuXG4gICAgc3RhdGljIGNyZWF0ZShzdGF0dXNDb2RlOiBzdHJpbmcsIG1lZGlhVHlwZTogTWVkaWFUeXBlKTogSW50ZWdyYXRpb25SZXNwb25zZSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzdGF0dXNDb2RlLFxuICAgICAgICAgICAgcmVzcG9uc2VUZW1wbGF0ZXM6IHtcbiAgICAgICAgICAgICAgICBbbWVkaWFUeXBlXTogUkVTUE9OU0VfREVGQVVMVF9MQU1CREEsXG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbn1cblxuIl19
|
@@ -1 +0,0 @@
|
|
1
|
-
export declare function envValue(key: string): string;
|
@@ -1,12 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.envValue = void 0;
|
4
|
-
function envValue(key) {
|
5
|
-
const value = process.env[key];
|
6
|
-
if (value == null) {
|
7
|
-
throw new Error(`Missing environment value ${key}`);
|
8
|
-
}
|
9
|
-
return value;
|
10
|
-
}
|
11
|
-
exports.envValue = envValue;
|
12
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXdzL3J1bnRpbWUvZW52aXJvbm1lbnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsU0FBZ0IsUUFBUSxDQUFDLEdBQVc7SUFDaEMsTUFBTSxLQUFLLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUUvQixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7UUFDZixNQUFNLElBQUksS0FBSyxDQUFDLDZCQUE2QixHQUFHLEVBQUUsQ0FBQyxDQUFDO0tBQ3ZEO0lBRUQsT0FBTyxLQUFLLENBQUM7QUFDakIsQ0FBQztBQVJELDRCQVFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGVudlZhbHVlKGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCB2YWx1ZSA9IHByb2Nlc3MuZW52W2tleV07XG5cbiAgICBpZiAodmFsdWUgPT0gbnVsbCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE1pc3NpbmcgZW52aXJvbm1lbnQgdmFsdWUgJHtrZXl9YCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHZhbHVlO1xufVxuIl19
|
@@ -1,10 +0,0 @@
|
|
1
|
-
import { SNS } from "aws-sdk";
|
2
|
-
/**
|
3
|
-
* Utility function for publishing SNS messages.
|
4
|
-
* Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
|
5
|
-
* Retries a single time in case of failure.
|
6
|
-
* @param message
|
7
|
-
* @param topicArn
|
8
|
-
* @param sns
|
9
|
-
*/
|
10
|
-
export declare function snsPublish(message: string, topicArn: string, sns: SNS): Promise<void>;
|
package/aws/runtime/messaging.js
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
"use strict";
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
3
|
-
exports.snsPublish = void 0;
|
4
|
-
/**
|
5
|
-
* Utility function for publishing SNS messages.
|
6
|
-
* Made because using *await* with AWS APIs doesn't require calling promise() but nothing works if it isn't called.
|
7
|
-
* Retries a single time in case of failure.
|
8
|
-
* @param message
|
9
|
-
* @param topicArn
|
10
|
-
* @param sns
|
11
|
-
*/
|
12
|
-
async function snsPublish(message, topicArn, sns) {
|
13
|
-
const publishParams = {
|
14
|
-
Message: message,
|
15
|
-
TopicArn: topicArn,
|
16
|
-
};
|
17
|
-
try {
|
18
|
-
await sns.publish(publishParams).promise();
|
19
|
-
}
|
20
|
-
catch (error) {
|
21
|
-
console.error('method=snsPublish error, retrying', error);
|
22
|
-
try {
|
23
|
-
await sns.publish(publishParams).promise();
|
24
|
-
}
|
25
|
-
catch (e2) {
|
26
|
-
console.error('method=snsPublish error after retry', e2);
|
27
|
-
}
|
28
|
-
}
|
29
|
-
}
|
30
|
-
exports.snsPublish = snsPublish;
|
31
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVzc2FnaW5nLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2F3cy9ydW50aW1lL21lc3NhZ2luZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQTs7Ozs7OztHQU9HO0FBQ0ksS0FBSyxVQUFVLFVBQVUsQ0FBQyxPQUFlLEVBQUUsUUFBZ0IsRUFBRSxHQUFRO0lBQ3hFLE1BQU0sYUFBYSxHQUFHO1FBQ2xCLE9BQU8sRUFBRSxPQUFPO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO0tBQ3JCLENBQUM7SUFDRixJQUFJO1FBQ0EsTUFBTSxHQUFHLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO0tBQzlDO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDWixPQUFPLENBQUMsS0FBSyxDQUFDLG1DQUFtQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzFELElBQUk7WUFDQSxNQUFNLEdBQUcsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7U0FDOUM7UUFBQyxPQUFPLEVBQUUsRUFBRTtZQUNULE9BQU8sQ0FBQyxLQUFLLENBQUMscUNBQXFDLEVBQUUsRUFBRSxDQUFDLENBQUM7U0FDNUQ7S0FDSjtBQUNMLENBQUM7QUFmRCxnQ0FlQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U05TfSBmcm9tIFwiYXdzLXNka1wiO1xuXG4vKipcbiAqIFV0aWxpdHkgZnVuY3Rpb24gZm9yIHB1Ymxpc2hpbmcgU05TIG1lc3NhZ2VzLlxuICogTWFkZSBiZWNhdXNlIHVzaW5nICphd2FpdCogd2l0aCBBV1MgQVBJcyBkb2Vzbid0IHJlcXVpcmUgY2FsbGluZyBwcm9taXNlKCkgYnV0IG5vdGhpbmcgd29ya3MgaWYgaXQgaXNuJ3QgY2FsbGVkLlxuICogUmV0cmllcyBhIHNpbmdsZSB0aW1lIGluIGNhc2Ugb2YgZmFpbHVyZS5cbiAqIEBwYXJhbSBtZXNzYWdlXG4gKiBAcGFyYW0gdG9waWNBcm5cbiAqIEBwYXJhbSBzbnNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHNuc1B1Ymxpc2gobWVzc2FnZTogc3RyaW5nLCB0b3BpY0Fybjogc3RyaW5nLCBzbnM6IFNOUykge1xuICAgIGNvbnN0IHB1Ymxpc2hQYXJhbXMgPSB7XG4gICAgICAgIE1lc3NhZ2U6IG1lc3NhZ2UsXG4gICAgICAgIFRvcGljQXJuOiB0b3BpY0FybixcbiAgICB9O1xuICAgIHRyeSB7XG4gICAgICAgIGF3YWl0IHNucy5wdWJsaXNoKHB1Ymxpc2hQYXJhbXMpLnByb21pc2UoKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciwgcmV0cnlpbmcnLCBlcnJvcik7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBhd2FpdCBzbnMucHVibGlzaChwdWJsaXNoUGFyYW1zKS5wcm9taXNlKCk7XG4gICAgICAgIH0gY2F0Y2ggKGUyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdtZXRob2Q9c25zUHVibGlzaCBlcnJvciBhZnRlciByZXRyeScsIGUyKTtcbiAgICAgICAgfVxuICAgIH1cbn1cbiJdfQ==
|
package/aws/runtime/s3.d.ts
DELETED