@rio-cloud/cdk-v2-constructs 9.0.0-alpha.0 → 9.0.0-alpha.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/.jsii +2825 -7033
- package/lib/contributions/cop-frontend/cloudfront/rio-cloudfront-distribution.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/autoscaling-runner.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/runner-roles.js +1 -5
- package/lib/contributions/smart-route/gitlab-runner/spot-role.js +1 -5
- package/lib/contributions/team-claid/aws-backup-monitoring/aws-backup-monitoring.js +1 -7
- package/lib/contributions/team-claid/aws-glue/csv-table.js +1 -5
- package/lib/contributions/team-claid/aws-glue/schema.js +1 -5
- package/lib/contributions/team-claid/aws-glue/view-table.js +1 -5
- package/lib/contributions/team-claid/datadog-usage-monitoring/datadog-usage-monitoring.js +1 -5
- package/lib/contributions/team-outbound-order-book/aws-ecs-abruptly-stopped-monitor/aws-ecs-abruptly-stopped-monitor.js +1 -5
- package/lib/contributions/team-outbound-order-book/index.d.ts +1 -0
- package/lib/contributions/team-outbound-order-book/index.js +18 -0
- package/lib/contributions/team-shipper-inbound-blue/index.d.ts +1 -0
- package/lib/contributions/team-shipper-inbound-blue/index.js +18 -0
- package/lib/contributions/team-shipper-inbound-blue/pipeline/code-build-project.js +1 -5
- package/lib/contributions/team-shipper-inbound-blue/pipeline/pipeline-build-stage-actions.js +1 -5
- package/lib/contributions/team-transport/datadog/datadog-dashboard-construct.js +41 -0
- package/lib/contributions/team-transport/datadog/datadog-dashboard-downloader.js +120 -0
- package/lib/contributions/{team-transport-two → team-transport}/datadog/index.js +1 -1
- package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/datadog-synthetics-test-custom-resource/handler.cjs +2 -2
- package/lib/contributions/team-transport/datadog-synthetics/datadog-synthetics-test.js +77 -0
- package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/index.js +1 -1
- package/lib/contributions/team-transport/index.d.ts +3 -0
- package/lib/contributions/team-transport/index.js +20 -0
- package/lib/contributions/team-transport/pipeline/application-stage.js +16 -0
- package/lib/contributions/team-transport/pipeline/build-project.js +39 -0
- package/lib/contributions/team-transport/pipeline/buildspecs.js +227 -0
- package/lib/contributions/team-transport/pipeline/datadog-monitors.js +45 -0
- package/lib/contributions/{team-transport-two → team-transport}/pipeline/index.js +1 -1
- package/lib/contributions/team-transport/pipeline/monitoring-deploy-step.js +28 -0
- package/lib/contributions/team-transport/pipeline/pipeline-stack.js +430 -0
- package/lib/index.d.ts +0 -8
- package/lib/index.js +1 -9
- package/package.json +15 -5
- package/version.json +1 -1
- package/lib/contributions/team-transport-two/datadog/datadog-dashboard-construct.js +0 -45
- package/lib/contributions/team-transport-two/datadog/datadog-dashboard-downloader.js +0 -120
- package/lib/contributions/team-transport-two/datadog-synthetics/datadog-synthetics-test.js +0 -81
- package/lib/contributions/team-transport-two/pipeline/application-stage.js +0 -16
- package/lib/contributions/team-transport-two/pipeline/build-project.js +0 -39
- package/lib/contributions/team-transport-two/pipeline/buildspecs.js +0 -227
- package/lib/contributions/team-transport-two/pipeline/datadog-monitors.js +0 -45
- package/lib/contributions/team-transport-two/pipeline/monitoring-deploy-step.js +0 -28
- package/lib/contributions/team-transport-two/pipeline/pipeline-stack.js +0 -434
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/datadog-dashboard-construct.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/datadog-dashboard-downloader.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/datadog-synthetics-test.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/datadog-synthetics/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/application-stage.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/build-project.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/buildspecs.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/datadog-monitors.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/index.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/monitoring-deploy-step.d.ts +0 -0
- /package/lib/contributions/{team-transport-two → team-transport}/pipeline/pipeline-stack.d.ts +0 -0
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
],
|
|
16
16
|
"main": "lib/index.js",
|
|
17
17
|
"license": "Apache-2.0",
|
|
18
|
-
"version": "9.0.0-alpha.
|
|
18
|
+
"version": "9.0.0-alpha.1",
|
|
19
19
|
"types": "lib/index.d.ts",
|
|
20
20
|
"stability": "stable",
|
|
21
21
|
"exports": {
|
|
@@ -23,8 +23,12 @@
|
|
|
23
23
|
"./datadog": "./lib/datadog/index.js",
|
|
24
24
|
"./datadogv2": "./lib/datadogv2/index.js",
|
|
25
25
|
"./watchfulv2": "./lib/watchfulv2/index.js",
|
|
26
|
-
"./contributions/team-shipper-inbound-blue/pipeline": "./lib/contributions/team-shipper-inbound-blue/pipeline/index.js",
|
|
27
26
|
"./contributions/team-claid": "./lib/contributions/team-claid/index.js",
|
|
27
|
+
"./contributions/team-outbound-order-book": "./lib/contributions/team-outbound-order-book/index.js",
|
|
28
|
+
"./contributions/team-shipper-inbound-blue": "./lib/contributions/team-shipper-inbound-blue/index.js",
|
|
29
|
+
"./contributions/smart-route": "./lib/contributions/smart-route/index.js",
|
|
30
|
+
"./contributions/team-transport": "./lib/contributions/team-transport/index.js",
|
|
31
|
+
"./contributions/cop-frontend": "./lib/contributions/cop-frontend/index.js",
|
|
28
32
|
"./AGENTS_DOCUMENTATION.md": "./docs/AGENTS_DOCUMENTATION.md",
|
|
29
33
|
"./docs/AGENTS_RIO_INFRASTRUCTURE_GUIDE.md": "./docs/AGENTS_RIO_INFRASTRUCTURE_GUIDE.md"
|
|
30
34
|
},
|
|
@@ -32,7 +36,7 @@
|
|
|
32
36
|
"outdir": "dist",
|
|
33
37
|
"targets": {},
|
|
34
38
|
"excludeTypescript": [
|
|
35
|
-
"src/contributions/team-transport
|
|
39
|
+
"src/contributions/team-transport/datadog-synthetics/datadog-synthetics-test-custom-resource/*.ts",
|
|
36
40
|
"src/fargate/codedeploy-custom-resources/*.ts",
|
|
37
41
|
"src/datadogv2/secret-locator-custom-resource/*.ts",
|
|
38
42
|
"src/datadogv2/service-catalog-custom-resource/*.ts",
|
|
@@ -90,6 +94,7 @@
|
|
|
90
94
|
"@biomejs/biome": "2.5.0",
|
|
91
95
|
"@octokit/auth-app": "8.3.1",
|
|
92
96
|
"@octokit/rest": "22.0.1",
|
|
97
|
+
"@pepperize/cdk-autoscaling-gitlab-runner": "^0.2.624",
|
|
93
98
|
"@rio-cloud/biome-config-claid": "1.0.0",
|
|
94
99
|
"@types/node": "24.13.2",
|
|
95
100
|
"@types/tmp": "^0.2.6",
|
|
@@ -111,7 +116,13 @@
|
|
|
111
116
|
"peerDependencies": {
|
|
112
117
|
"aws-cdk-lib": "^2.272.0",
|
|
113
118
|
"constructs": "^10.5.1",
|
|
114
|
-
"datadog-cdk-constructs-v2": "^5.2.0"
|
|
119
|
+
"datadog-cdk-constructs-v2": "^5.2.0",
|
|
120
|
+
"@pepperize/cdk-autoscaling-gitlab-runner": "^0.2.624"
|
|
121
|
+
},
|
|
122
|
+
"peerDependenciesMeta": {
|
|
123
|
+
"@pepperize/cdk-autoscaling-gitlab-runner": {
|
|
124
|
+
"optional": true
|
|
125
|
+
}
|
|
115
126
|
},
|
|
116
127
|
"dependencies": {
|
|
117
128
|
"@aws-lambda-powertools/logger": "^2.10.0",
|
|
@@ -124,7 +135,6 @@
|
|
|
124
135
|
"@aws-sdk/client-secrets-manager": "^3.1036.0",
|
|
125
136
|
"@aws-sdk/client-ssm": "^3.1036.0",
|
|
126
137
|
"@datadog/datadog-api-client": "^1.29.0",
|
|
127
|
-
"@pepperize/cdk-autoscaling-gitlab-runner": "^0.2.624",
|
|
128
138
|
"@smithy/util-retry": "^3.0.8",
|
|
129
139
|
"@types/aws-lambda": "^8.10.145",
|
|
130
140
|
"js-yaml": "~5.4.2",
|
package/version.json
CHANGED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.DownloadableDatadogDashboard = void 0;
|
|
5
|
-
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
const path = require("path");
|
|
9
|
-
const rio_claidometer_1 = require("../../../rio-claidometer");
|
|
10
|
-
/**
|
|
11
|
-
* Wrapper around Datadog's CloudFormation `Datadog::Monitors::Dashboard`.
|
|
12
|
-
*
|
|
13
|
-
* Other than the {@link DatadogDashboard} this construct reads the dashboard from a file and
|
|
14
|
-
* is integrated with the {@link datadogDashboardDownloader} helper.
|
|
15
|
-
*
|
|
16
|
-
* To use this the Datadog resources have to be {@link https://docs.datadoghq.com/integrations/guide/amazon_cloudformation/
|
|
17
|
-
* |enabled in the CloudFormation registry} of the corresponding AWS account. Usually this is done
|
|
18
|
-
* automatically by the Datadog Integrations (account module AND ServiceCatalog) provided by CLAID.
|
|
19
|
-
*/
|
|
20
|
-
class DownloadableDatadogDashboard extends aws_cdk_lib_1.CfnResource {
|
|
21
|
-
static readDashboard(dashboardPath) {
|
|
22
|
-
// Validate that the file contains JSON. This also minimizes the file size.
|
|
23
|
-
return JSON.stringify(JSON.parse(fs.readFileSync(dashboardPath, 'utf8')));
|
|
24
|
-
}
|
|
25
|
-
constructor(scope, id, props) {
|
|
26
|
-
super(scope, id, {
|
|
27
|
-
type: 'Datadog::Dashboards::Dashboard',
|
|
28
|
-
properties: {
|
|
29
|
-
DashboardDefinition: DownloadableDatadogDashboard.readDashboard(props.path),
|
|
30
|
-
},
|
|
31
|
-
});
|
|
32
|
-
this.addMetadata('rio-dashboard-path', props.path);
|
|
33
|
-
const [feature, packageName] = __dirname.split(path.sep).reverse();
|
|
34
|
-
new rio_claidometer_1.Claidometer(this, 'Claidometer', {
|
|
35
|
-
product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
36
|
-
packageName,
|
|
37
|
-
feature,
|
|
38
|
-
version: '0.0.1',
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
exports.DownloadableDatadogDashboard = DownloadableDatadogDashboard;
|
|
43
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
44
|
-
DownloadableDatadogDashboard[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DownloadableDatadogDashboard", version: "0.0.0" };
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1kYXNoYm9hcmQtY29uc3RydWN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbnRyaWJ1dGlvbnMvdGVhbS10cmFuc3BvcnQtdHdvL2RhdGFkb2cvZGF0YWRvZy1kYXNoYm9hcmQtY29uc3RydWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkNBQTBDO0FBRTFDLHlCQUF5QjtBQUN6Qiw2QkFBNkI7QUFDN0IsOERBQTJFO0FBUzNFOzs7Ozs7Ozs7R0FTRztBQUNILE1BQWEsNEJBQTZCLFNBQVEseUJBQVc7SUFDbkQsTUFBTSxDQUFDLGFBQWEsQ0FBQyxhQUFxQjtRQUNoRCwyRUFBMkU7UUFDM0UsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLFlBQVksQ0FBQyxhQUFhLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVFLENBQUM7SUFFRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXdDO1FBQ2hGLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFO1lBQ2YsSUFBSSxFQUFFLGdDQUFnQztZQUN0QyxVQUFVLEVBQUU7Z0JBQ1YsbUJBQW1CLEVBQUUsNEJBQTRCLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUM7YUFDNUU7U0FDRixDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUVuRCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25FLElBQUksNkJBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7WUFDNUMsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXRCSCxvRUF1QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDZm5SZXNvdXJjZSB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuaW1wb3J0ICogYXMgZnMgZnJvbSAnZnMnO1xuaW1wb3J0ICogYXMgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IENsYWlkb21ldGVyLCBDbGFpZG9tZXRlclByb2R1Y3QgfSBmcm9tICcuLi8uLi8uLi9yaW8tY2xhaWRvbWV0ZXInO1xuXG5leHBvcnQgaW50ZXJmYWNlIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmRQcm9wcyB7XG4gIC8qKlxuICAgKiBUaGUgcGF0aCB0byB0aGUgZGFzaGJvYXJkIEpTT04gZmlsZSAocmVsYXRpdmUgZnJvbSB0aGUgY2RrIHJvb3QgZGlyZWN0b3J5KS5cbiAgICovXG4gIHJlYWRvbmx5IHBhdGg6IHN0cmluZztcbn1cblxuLyoqXG4gKiBXcmFwcGVyIGFyb3VuZCBEYXRhZG9nJ3MgQ2xvdWRGb3JtYXRpb24gYERhdGFkb2c6Ok1vbml0b3JzOjpEYXNoYm9hcmRgLlxuICpcbiAqIE90aGVyIHRoYW4gdGhlIHtAbGluayBEYXRhZG9nRGFzaGJvYXJkfSB0aGlzIGNvbnN0cnVjdCByZWFkcyB0aGUgZGFzaGJvYXJkIGZyb20gYSBmaWxlIGFuZFxuICogaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSB7QGxpbmsgZGF0YWRvZ0Rhc2hib2FyZERvd25sb2FkZXJ9IGhlbHBlci5cbiAqXG4gKiBUbyB1c2UgdGhpcyB0aGUgRGF0YWRvZyByZXNvdXJjZXMgaGF2ZSB0byBiZSB7QGxpbmsgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vaW50ZWdyYXRpb25zL2d1aWRlL2FtYXpvbl9jbG91ZGZvcm1hdGlvbi9cbiAqIHxlbmFibGVkIGluIHRoZSBDbG91ZEZvcm1hdGlvbiByZWdpc3RyeX0gb2YgdGhlIGNvcnJlc3BvbmRpbmcgQVdTIGFjY291bnQuIFVzdWFsbHkgdGhpcyBpcyBkb25lXG4gKiBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBEYXRhZG9nIEludGVncmF0aW9ucyAoYWNjb3VudCBtb2R1bGUgQU5EIFNlcnZpY2VDYXRhbG9nKSBwcm92aWRlZCBieSBDTEFJRC5cbiAqL1xuZXhwb3J0IGNsYXNzIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmQgZXh0ZW5kcyBDZm5SZXNvdXJjZSB7XG4gIHByaXZhdGUgc3RhdGljIHJlYWREYXNoYm9hcmQoZGFzaGJvYXJkUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAvLyBWYWxpZGF0ZSB0aGF0IHRoZSBmaWxlIGNvbnRhaW5zIEpTT04uIFRoaXMgYWxzbyBtaW5pbWl6ZXMgdGhlIGZpbGUgc2l6ZS5cbiAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoZGFzaGJvYXJkUGF0aCwgJ3V0ZjgnKSkpO1xuICB9XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmRQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCwge1xuICAgICAgdHlwZTogJ0RhdGFkb2c6OkRhc2hib2FyZHM6OkRhc2hib2FyZCcsXG4gICAgICBwcm9wZXJ0aWVzOiB7XG4gICAgICAgIERhc2hib2FyZERlZmluaXRpb246IERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmQucmVhZERhc2hib2FyZChwcm9wcy5wYXRoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gICAgdGhpcy5hZGRNZXRhZGF0YSgncmlvLWRhc2hib2FyZC1wYXRoJywgcHJvcHMucGF0aCk7XG5cbiAgICBjb25zdCBbZmVhdHVyZSwgcGFja2FnZU5hbWVdID0gX19kaXJuYW1lLnNwbGl0KHBhdGguc2VwKS5yZXZlcnNlKCk7XG4gICAgbmV3IENsYWlkb21ldGVyKHRoaXMsICdDbGFpZG9tZXRlcicsIHtcbiAgICAgIHByb2R1Y3Q6IENsYWlkb21ldGVyUHJvZHVjdC5DREtfQ09OVFJJQlVUSU9OLFxuICAgICAgcGFja2FnZU5hbWUsXG4gICAgICBmZWF0dXJlLFxuICAgICAgdmVyc2lvbjogJzAuMC4xJyxcbiAgICB9KTtcbiAgfVxufVxuIl19
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.datadogDashboardDownloader = exports.downloadDashboards = void 0;
|
|
4
|
-
const client_cloudformation_1 = require("@aws-sdk/client-cloudformation");
|
|
5
|
-
const client_ssm_1 = require("@aws-sdk/client-ssm");
|
|
6
|
-
const datadog_api_client_1 = require("@datadog/datadog-api-client");
|
|
7
|
-
const fs = require("fs");
|
|
8
|
-
const CLI_GREEN = '\x1b[32m';
|
|
9
|
-
const CLI_BLUE = '\x1b[34m';
|
|
10
|
-
const CLI_RESET = '\x1b[0m';
|
|
11
|
-
/**
|
|
12
|
-
* Downloads dashboards from Datadog and saves them to the local filesystem.
|
|
13
|
-
* Run this function with a reference to your CDK application to download dashboards defined via {@link DownloadableDatadogDashboard} and update
|
|
14
|
-
* the existing dashboard definition files in place.
|
|
15
|
-
*
|
|
16
|
-
* See {@link datadogDashboardDownloader} for a convenience wrapper that can be used in your CDK entrypoint script.
|
|
17
|
-
*
|
|
18
|
-
* @param app - CDK application in entrypoint
|
|
19
|
-
*/
|
|
20
|
-
const downloadDashboards = async (application) => {
|
|
21
|
-
console.log('Downloading dashboards...');
|
|
22
|
-
const assembly = application.synth();
|
|
23
|
-
await Promise.all(assembly.stacksRecursively.map(async (stack) => {
|
|
24
|
-
let isStackRelevant = false;
|
|
25
|
-
const dashboardPathByLogicalId = {};
|
|
26
|
-
Object.entries(stack.template.Resources || []).forEach(([logicalId, resource]) => {
|
|
27
|
-
if (resource.Type === 'Datadog::Dashboards::Dashboard') {
|
|
28
|
-
const metadata = resource.Metadata || {};
|
|
29
|
-
const dashboardPath = metadata['rio-dashboard-path'];
|
|
30
|
-
if (dashboardPath) {
|
|
31
|
-
dashboardPathByLogicalId[logicalId] = dashboardPath;
|
|
32
|
-
isStackRelevant = true;
|
|
33
|
-
}
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
if (!isStackRelevant) {
|
|
37
|
-
return;
|
|
38
|
-
}
|
|
39
|
-
const datadogConfiguration = await getDatadogConfiguration();
|
|
40
|
-
const cloudFormationClient = new client_cloudformation_1.CloudFormationClient();
|
|
41
|
-
const response = await cloudFormationClient.send(new client_cloudformation_1.ListStackResourcesCommand({ StackName: stack.stackName }));
|
|
42
|
-
await Promise.all((response.StackResourceSummaries || []).map(async (resource) => {
|
|
43
|
-
if (resource.ResourceType === 'Datadog::Dashboards::Dashboard' && resource.LogicalResourceId) {
|
|
44
|
-
const dashboardPath = dashboardPathByLogicalId[resource.LogicalResourceId];
|
|
45
|
-
if (dashboardPath) {
|
|
46
|
-
console.log(`Downloading ${CLI_GREEN}${resource.LogicalResourceId}${CLI_RESET} (${resource.PhysicalResourceId}) to ${CLI_BLUE}${dashboardPath}${CLI_RESET}`);
|
|
47
|
-
const dashboard = await downloadDashboardViaDatadogApi(datadogConfiguration, resource.PhysicalResourceId);
|
|
48
|
-
console.log('Saving ...');
|
|
49
|
-
fs.writeFileSync(dashboardPath, prettifyDashboard(dashboard));
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
}));
|
|
53
|
-
}));
|
|
54
|
-
};
|
|
55
|
-
exports.downloadDashboards = downloadDashboards;
|
|
56
|
-
const getSsmParameter = async (parameterName) => {
|
|
57
|
-
const ssmClient = new client_ssm_1.SSMClient();
|
|
58
|
-
const command = new client_ssm_1.GetParameterCommand({ Name: parameterName });
|
|
59
|
-
const response = await ssmClient.send(command);
|
|
60
|
-
return response.Parameter?.Value;
|
|
61
|
-
};
|
|
62
|
-
const getDatadogConfiguration = async () => {
|
|
63
|
-
const apiKey = await getSsmParameter('/rio/config/datadog-integration/api-key');
|
|
64
|
-
const appKey = await getSsmParameter('/rio/config/datadog-integration/application-key');
|
|
65
|
-
const site = await getSsmParameter('/rio/config/datadog-integration/site');
|
|
66
|
-
return {
|
|
67
|
-
apiKey,
|
|
68
|
-
appKey,
|
|
69
|
-
site,
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
const downloadDashboardViaDatadogApi = async (config, dashboardId) => {
|
|
73
|
-
const configuration = datadog_api_client_1.client.createConfiguration({
|
|
74
|
-
authMethods: {
|
|
75
|
-
apiKeyAuth: config.apiKey,
|
|
76
|
-
appKeyAuth: config.appKey,
|
|
77
|
-
},
|
|
78
|
-
});
|
|
79
|
-
configuration.setServerVariables({
|
|
80
|
-
site: config.site,
|
|
81
|
-
});
|
|
82
|
-
const apiInstance = new datadog_api_client_1.v1.DashboardsApi(configuration);
|
|
83
|
-
return apiInstance.getDashboard({
|
|
84
|
-
dashboardId: dashboardId,
|
|
85
|
-
});
|
|
86
|
-
};
|
|
87
|
-
const prettifyDashboard = (dashboard) => {
|
|
88
|
-
// drop keys that are not present in the output when using the "export" button in the GUI
|
|
89
|
-
delete dashboard.id;
|
|
90
|
-
delete dashboard.isReadOnly;
|
|
91
|
-
delete dashboard.authorHandle;
|
|
92
|
-
delete dashboard.authorName;
|
|
93
|
-
delete dashboard.url;
|
|
94
|
-
delete dashboard.createdAt;
|
|
95
|
-
delete dashboard.modifiedAt;
|
|
96
|
-
delete dashboard.restrictedRoles;
|
|
97
|
-
const serializedDashboard = datadog_api_client_1.v1.ObjectSerializer.serialize(dashboard, 'Dashboard', '');
|
|
98
|
-
return JSON.stringify(serializedDashboard, null, 2);
|
|
99
|
-
};
|
|
100
|
-
/**
|
|
101
|
-
* Downloads dashboards from Datadog and saves them to the local filesystem.
|
|
102
|
-
* Call this wrapper with your CDK app in your entrypoint script.
|
|
103
|
-
*
|
|
104
|
-
* Run `cdk synth` with the environment variable
|
|
105
|
-
* `DOWNLOAD_DASHBOARDS=true`, to download dashboards defined via {@link DownloadableDatadogDashboard} and update
|
|
106
|
-
* the existing dashboard definition files in place.
|
|
107
|
-
*
|
|
108
|
-
* @param app - CDK application in entrypoint
|
|
109
|
-
*/
|
|
110
|
-
const datadogDashboardDownloader = (app) => {
|
|
111
|
-
const downloadDashboardsFlag = process.env.DOWNLOAD_DASHBOARDS?.toLowerCase();
|
|
112
|
-
if (downloadDashboardsFlag && ['true', '1', 'yes'].includes(downloadDashboardsFlag)) {
|
|
113
|
-
return (0, exports.downloadDashboards)(app)
|
|
114
|
-
.then(() => console.log('Dashboards downloaded successfully'))
|
|
115
|
-
.catch(error => console.error('Failed to download dashboards', error));
|
|
116
|
-
}
|
|
117
|
-
return Promise.resolve();
|
|
118
|
-
};
|
|
119
|
-
exports.datadogDashboardDownloader = datadogDashboardDownloader;
|
|
120
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1kYXNoYm9hcmQtZG93bmxvYWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9kYXRhZG9nL2RhdGFkb2ctZGFzaGJvYXJkLWRvd25sb2FkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsMEVBQWlHO0FBQ2pHLG9EQUFxRTtBQUNyRSxvRUFBeUQ7QUFFekQseUJBQXlCO0FBRXpCLE1BQU0sU0FBUyxHQUFHLFVBQVUsQ0FBQztBQUM3QixNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUM7QUFDNUIsTUFBTSxTQUFTLEdBQUcsU0FBUyxDQUFDO0FBRTVCOzs7Ozs7OztHQVFHO0FBQ0ksTUFBTSxrQkFBa0IsR0FBRyxLQUFLLEVBQUUsV0FBZ0IsRUFBRSxFQUFFO0lBQzNELE9BQU8sQ0FBQyxHQUFHLENBQUMsMkJBQTJCLENBQUMsQ0FBQztJQUN6QyxNQUFNLFFBQVEsR0FBRyxXQUFXLENBQUMsS0FBSyxFQUFFLENBQUM7SUFFckMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFFBQVEsQ0FBQyxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLEtBQUssRUFBQyxFQUFFO1FBQzNDLElBQUksZUFBZSxHQUFHLEtBQUssQ0FBQztRQUM1QixNQUFNLHdCQUF3QixHQUE4QixFQUFFLENBQUM7UUFDL0QsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLFNBQVMsSUFBSSxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxFQUFFO1lBQy9FLElBQUssUUFBZ0IsQ0FBQyxJQUFJLEtBQUssZ0NBQWdDLEVBQUUsQ0FBQztnQkFDaEUsTUFBTSxRQUFRLEdBQUksUUFBZ0IsQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDO2dCQUNsRCxNQUFNLGFBQWEsR0FBRyxRQUFR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LElBQUksc0JBQXNCLElBQUksQ0FBQyxNQUFNLEVBQUUsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxzQkFBc0IsQ0FBQyxFQUFFLENBQUM7UUFDcEYsT0FBTyxJQUFBLDBCQUFrQixFQUFDLEdBQUcsQ0FBQzthQUMzQixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFDO2FBQzdELEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsK0JBQStCLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUMzRSxDQUFDO0lBQ0QsT0FBTyxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7QUFDM0IsQ0FBQyxDQUFDO0FBUlcsUUFBQSwwQkFBMEIsOEJBUXJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ2xvdWRGb3JtYXRpb25DbGllbnQsIExpc3RTdGFja1Jlc291cmNlc0NvbW1hbmQgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtY2xvdWRmb3JtYXRpb24nO1xuaW1wb3J0IHsgR2V0UGFyYW1ldGVyQ29tbWFuZCwgU1NNQ2xpZW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXNzbSc7XG5pbXBvcnQgeyBjbGllbnQsIHYxIH0gZnJvbSAnQGRhdGFkb2cvZGF0YWRvZy1hcGktY2xpZW50JztcbmltcG9ydCB7IEFwcCB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGZzIGZyb20gJ2ZzJztcblxuY29uc3QgQ0xJX0dSRUVOID0gJ1xceDFiWzMybSc7XG5jb25zdCBDTElfQkxVRSA9ICdcXHgxYlszNG0nO1xuY29uc3QgQ0xJX1JFU0VUID0gJ1xceDFiWzBtJztcblxuLyoqXG4gKiBEb3dubG9hZHMgZGFzaGJvYXJkcyBmcm9tIERhdGFkb2cgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uXG4gKiBSdW4gdGhpcyBmdW5jdGlvbiB3aXRoIGEgcmVmZXJlbmNlIHRvIHlvdXIgQ0RLIGFwcGxpY2F0aW9uIHRvIGRvd25sb2FkIGRhc2hib2FyZHMgZGVmaW5lZCB2aWEge0BsaW5rIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmR9IGFuZCB1cGRhdGVcbiAqIHRoZSBleGlzdGluZyBkYXNoYm9hcmQgZGVmaW5pdGlvbiBmaWxlcyBpbiBwbGFjZS5cbiAqXG4gKiBTZWUge0BsaW5rIGRhdGFkb2dEYXNoYm9hcmREb3dubG9hZGVyfSBmb3IgYSBjb252ZW5pZW5jZSB3cmFwcGVyIHRoYXQgY2FuIGJlIHVzZWQgaW4geW91ciBDREsgZW50cnlwb2ludCBzY3JpcHQuXG4gKlxuICogQHBhcmFtIGFwcCAtIENESyBhcHBsaWNhdGlvbiBpbiBlbnRyeXBvaW50XG4gKi9cbmV4cG9ydCBjb25zdCBkb3dubG9hZERhc2hib2FyZHMgPSBhc3luYyAoYXBwbGljYXRpb246IEFwcCkgPT4ge1xuICBjb25zb2xlLmxvZygnRG93bmxvYWRpbmcgZGFzaGJvYXJkcy4uLicpO1xuICBjb25zdCBhc3NlbWJseSA9IGFwcGxpY2F0aW9uLnN5bnRoKCk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgYXNzZW1ibHkuc3RhY2tzUmVjdXJzaXZlbHkubWFwKGFzeW5jIHN0YWNrID0+IHtcbiAgICAgIGxldCBpc1N0YWNrUmVsZXZhbnQgPSBmYWxzZTtcbiAgICAgIGNvbnN0IGRhc2hib2FyZFBhdGhCeUxvZ2ljYWxJZDogeyBba2V5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuICAgICAgT2JqZWN0LmVudHJpZXMoc3RhY2sudGVtcGxhdGUuUmVzb3VyY2VzIHx8IFtdKS5mb3JFYWNoKChbbG9naWNhbElkLCByZXNvdXJjZV0pID0+IHtcbiAgICAgICAgaWYgKChyZXNvdXJjZSBhcyBhbnkpLlR5cGUgPT09ICdEYXRhZG9nOjpEYXNoYm9hcmRzOjpEYXNoYm9hcmQnKSB7XG4gICAgICAgICAgY29uc3QgbWV0YWRhdGEgPSAocmVzb3VyY2UgYXMgYW55KS5NZXRhZGF0YSB8fCB7fTtcbiAgICAgICAgICBjb25zdCBkYXNoYm9hcmRQYXRoID0gbWV0YWRhdGFbJ3Jpby1kYXNoYm9hcmQtcGF0aCddO1xuICAgICAgICAgIGlmIChkYXNoYm9hcmRQYXRoKSB7XG4gICAgICAgICAgICBkYXNoYm9hcmRQYXRoQnlMb2dpY2FsSWRbbG9naWNhbElkXSA9IGRhc2hib2FyZFBhdGg7XG4gICAgICAgICAgICBpc1N0YWNrUmVsZXZhbnQgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIGlmICghaXNTdGFja1JlbGV2YW50KSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZGF0YWRvZ0NvbmZpZ3VyYXRpb24gPSBhd2FpdCBnZXREYXRhZG9nQ29uZmlndXJhdGlvbigpO1xuXG4gICAgICBjb25zdCBjbG91ZEZvcm1hdGlvbkNsaWVudCA9IG5ldyBDbG91ZEZvcm1hdGlvbkNsaWVudCgpO1xuICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBjbG91ZEZvcm1hdGlvbkNsaWVudC5zZW5kKG5ldyBMaXN0U3RhY2tSZXNvdXJjZXNDb21tYW5kKHsgU3RhY2tOYW1lOiBzdGFjay5zdGFja05hbWUgfSkpO1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIChyZXNwb25zZS5TdGFja1Jlc291cmNlU3VtbWFyaWVzIHx8IFtdKS5tYXAoYXN5bmMgcmVzb3VyY2UgPT4ge1xuICAgICAgICAgIGlmIChyZXNvdXJjZS5SZXNvdXJjZVR5cGUgPT09ICdEYXRhZG9nOjpEYXNoYm9hcmRzOjpEYXNoYm9hcmQnICYmIHJlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkKSB7XG4gICAgICAgICAgICBjb25zdCBkYXNoYm9hcmRQYXRoID0gZGFzaGJvYXJkUGF0aEJ5TG9naWNhbElkW3Jlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkXTtcbiAgICAgICAgICAgIGlmIChkYXNoYm9hcmRQYXRoKSB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFxuICAgICAgICAgICAgICAgIGBEb3dubG9hZGluZyAke0NMSV9HUkVFTn0ke3Jlc291cmNlLkxvZ2ljYWxSZXNvdXJjZUlkfSR7Q0xJX1JFU0VUfSAoJHtyZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWR9KSB0byAke0NMSV9CTFVFfSR7ZGFzaGJvYXJkUGF0aH0ke0NMSV9SRVNFVH1gXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnN0IGRhc2hib2FyZCA9IGF3YWl0IGRvd25sb2FkRGFzaGJvYXJkVmlhRGF0YWRvZ0FwaShcbiAgICAgICAgICAgICAgICBkYXRhZG9nQ29uZmlndXJhdGlvbixcbiAgICAgICAgICAgICAgICByZXNvdXJjZS5QaHlzaWNhbFJlc291cmNlSWQgYXMgc3RyaW5nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKCdTYXZpbmcgLi4uJyk7XG4gICAgICAgICAgICAgIGZzLndyaXRlRmlsZVN5bmMoZGFzaGJvYXJkUGF0aCwgcHJldHRpZnlEYXNoYm9hcmQoZGFzaGJvYXJkKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9KVxuICApO1xufTtcblxuY29uc3QgZ2V0U3NtUGFyYW1ldGVyID0gYXN5bmMgKHBhcmFtZXRlck5hbWU6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gIGNvbnN0IHNzbUNsaWVudCA9IG5ldyBTU01DbGllbnQoKTtcbiAgY29uc3QgY29tbWFuZCA9IG5ldyBHZXRQYXJhbWV0ZXJDb21tYW5kKHsgTmFtZTogcGFyYW1ldGVyTmFtZSB9KTtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBzc21DbGllbnQuc2VuZChjb21tYW5kKTtcbiAgcmV0dXJuIHJlc3BvbnNlLlBhcmFtZXRlcj8uVmFsdWUgYXMgc3RyaW5nO1xufTtcblxuY29uc3QgZ2V0RGF0YWRvZ0NvbmZpZ3VyYXRpb24gPSBhc3luYyAoKTogUHJvbWlzZTx7IGFwaUtleTogc3RyaW5nOyBhcHBLZXk6IHN0cmluZzsgc2l0ZTogc3RyaW5nIH0+ID0+IHtcbiAgY29uc3QgYXBpS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwaS1rZXknKTtcbiAgY29uc3QgYXBwS2V5ID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL2FwcGxpY2F0aW9uLWtleScpO1xuICBjb25zdCBzaXRlID0gYXdhaXQgZ2V0U3NtUGFyYW1ldGVyKCcvcmlvL2NvbmZpZy9kYXRhZG9nLWludGVncmF0aW9uL3NpdGUnKTtcbiAgcmV0dXJuIHtcbiAgICBhcGlLZXksXG4gICAgYXBwS2V5LFxuICAgIHNpdGUsXG4gIH07XG59O1xuXG5jb25zdCBkb3dubG9hZERhc2hib2FyZFZpYURhdGFkb2dBcGkgPSBhc3luYyAoXG4gIGNvbmZpZzoge1xuICAgIGFwaUtleTogc3RyaW5nO1xuICAgIGFwcEtleTogc3RyaW5nO1xuICAgIHNpdGU6IHN0cmluZztcbiAgfSxcbiAgZGFzaGJvYXJkSWQ6IHN0cmluZ1xuKTogUHJvbWlzZTx2MS5EYXNoYm9hcmQ+ID0+IHtcbiAgY29uc3QgY29uZmlndXJhdGlvbiA9IGNsaWVudC5jcmVhdGVDb25maWd1cmF0aW9uKHtcbiAgICBhdXRoTWV0aG9kczoge1xuICAgICAgYXBpS2V5QXV0aDogY29uZmlnLmFwaUtleSxcbiAgICAgIGFwcEtleUF1dGg6IGNvbmZpZy5hcHBLZXksXG4gICAgfSxcbiAgfSk7XG4gIGNvbmZpZ3VyYXRpb24uc2V0U2VydmVyVmFyaWFibGVzKHtcbiAgICBzaXRlOiBjb25maWcuc2l0ZSxcbiAgfSk7XG4gIGNvbnN0IGFwaUluc3RhbmNlID0gbmV3IHYxLkRhc2hib2FyZHNBcGkoY29uZmlndXJhdGlvbik7XG4gIHJldHVybiBhcGlJbnN0YW5jZS5nZXREYXNoYm9hcmQoe1xuICAgIGRhc2hib2FyZElkOiBkYXNoYm9hcmRJZCxcbiAgfSk7XG59O1xuXG5jb25zdCBwcmV0dGlmeURhc2hib2FyZCA9IChkYXNoYm9hcmQ6IHYxLkRhc2hib2FyZCk6IHN0cmluZyA9PiB7XG4gIC8vIGRyb3Aga2V5cyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiB0aGUgb3V0cHV0IHdoZW4gdXNpbmcgdGhlIFwiZXhwb3J0XCIgYnV0dG9uIGluIHRoZSBHVUlcbiAgZGVsZXRlIGRhc2hib2FyZC5pZDtcbiAgZGVsZXRlIGRhc2hib2FyZC5pc1JlYWRPbmx5O1xuICBkZWxldGUgZGFzaGJvYXJkLmF1dGhvckhhbmRsZTtcbiAgZGVsZXRlIGRhc2hib2FyZC5hdXRob3JOYW1lO1xuICBkZWxldGUgZGFzaGJvYXJkLnVybDtcbiAgZGVsZXRlIGRhc2hib2FyZC5jcmVhdGVkQXQ7XG4gIGRlbGV0ZSBkYXNoYm9hcmQubW9kaWZpZWRBdDtcbiAgZGVsZXRlIGRhc2hib2FyZC5yZXN0cmljdGVkUm9sZXM7XG5cbiAgY29uc3Qgc2VyaWFsaXplZERhc2hib2FyZCA9IHYxLk9iamVjdFNlcmlhbGl6ZXIuc2VyaWFsaXplKGRhc2hib2FyZCwgJ0Rhc2hib2FyZCcsICcnKTtcbiAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHNlcmlhbGl6ZWREYXNoYm9hcmQsIG51bGwsIDIpO1xufTtcblxuLyoqXG4gKiBEb3dubG9hZHMgZGFzaGJvYXJkcyBmcm9tIERhdGFkb2cgYW5kIHNhdmVzIHRoZW0gdG8gdGhlIGxvY2FsIGZpbGVzeXN0ZW0uXG4gKiBDYWxsIHRoaXMgd3JhcHBlciB3aXRoIHlvdXIgQ0RLIGFwcCBpbiB5b3VyIGVudHJ5cG9pbnQgc2NyaXB0LlxuICpcbiAqIFJ1biBgY2RrIHN5bnRoYCB3aXRoIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZVxuICogYERPV05MT0FEX0RBU0hCT0FSRFM9dHJ1ZWAsIHRvIGRvd25sb2FkIGRhc2hib2FyZHMgZGVmaW5lZCB2aWEge0BsaW5rIERvd25sb2FkYWJsZURhdGFkb2dEYXNoYm9hcmR9IGFuZCB1cGRhdGVcbiAqIHRoZSBleGlzdGluZyBkYXNoYm9hcmQgZGVmaW5pdGlvbiBmaWxlcyBpbiBwbGFjZS5cbiAqXG4gKiBAcGFyYW0gYXBwIC0gQ0RLIGFwcGxpY2F0aW9uIGluIGVudHJ5cG9pbnRcbiAqL1xuZXhwb3J0IGNvbnN0IGRhdGFkb2dEYXNoYm9hcmREb3dubG9hZGVyID0gKGFwcDogQXBwKSA9PiB7XG4gIGNvbnN0IGRvd25sb2FkRGFzaGJvYXJkc0ZsYWcgPSBwcm9jZXNzLmVudi5ET1dOTE9BRF9EQVNIQk9BUkRTPy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoZG93bmxvYWREYXNoYm9hcmRzRmxhZyAmJiBbJ3RydWUnLCAnMScsICd5ZXMnXS5pbmNsdWRlcyhkb3dubG9hZERhc2hib2FyZHNGbGFnKSkge1xuICAgIHJldHVybiBkb3dubG9hZERhc2hib2FyZHMoYXBwKVxuICAgICAgLnRoZW4oKCkgPT4gY29uc29sZS5sb2coJ0Rhc2hib2FyZHMgZG93bmxvYWRlZCBzdWNjZXNzZnVsbHknKSlcbiAgICAgIC5jYXRjaChlcnJvciA9PiBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZG93bmxvYWQgZGFzaGJvYXJkcycsIGVycm9yKSk7XG4gIH1cbiAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSgpO1xufTtcbiJdfQ==
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var _a;
|
|
3
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
-
exports.DatadogSyntheticsTest = void 0;
|
|
5
|
-
const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti");
|
|
6
|
-
const cdk = require("aws-cdk-lib");
|
|
7
|
-
const lambda = require("aws-cdk-lib/aws-lambda");
|
|
8
|
-
const logs = require("aws-cdk-lib/aws-logs");
|
|
9
|
-
const customResources = require("aws-cdk-lib/custom-resources");
|
|
10
|
-
const constructs_1 = require("constructs");
|
|
11
|
-
const path = require("path");
|
|
12
|
-
const path_1 = require("path");
|
|
13
|
-
const constants_1 = require("../../../constants");
|
|
14
|
-
const datadogv2_1 = require("../../../datadogv2");
|
|
15
|
-
const rio_claidometer_1 = require("../../../rio-claidometer");
|
|
16
|
-
const rio_landing_zone_1 = require("../../../rio-landing-zone");
|
|
17
|
-
/**
|
|
18
|
-
* Creates a Datadog Synthetics test via Datadog API through a custom resource.
|
|
19
|
-
*
|
|
20
|
-
* See https://docs.datadoghq.com/api/latest/synthetics/ for more information (especially the typescript examples).
|
|
21
|
-
* Currently, tests of type `api`, `browser` and `mobile` are supported.
|
|
22
|
-
*
|
|
23
|
-
* The resource does the following modification to the passed `testConfig`:
|
|
24
|
-
* - Adds team name and service name to the test name.
|
|
25
|
-
* - Adds the usual tags (account_id, account_name, service, team, team_identifier) to the test tags.
|
|
26
|
-
*/
|
|
27
|
-
class DatadogSyntheticsTest extends constructs_1.Construct {
|
|
28
|
-
constructor(scope, id, props) {
|
|
29
|
-
super(scope, id);
|
|
30
|
-
const datadogSecret = datadogv2_1.DatadogSharedSecret.credentialsSecret(this);
|
|
31
|
-
const teamName = rio_landing_zone_1.RioLandingZone.getTeamNameParameter(this).stringValue;
|
|
32
|
-
const teamIdentifier = rio_landing_zone_1.RioLandingZone.getTeamIdentifierParameter(this).stringValue;
|
|
33
|
-
const accountName = rio_landing_zone_1.RioLandingZone.getAccountNameParameter(this).stringValue;
|
|
34
|
-
const datadogHandler = new lambda.Function(this, 'DatadogSyntheticsHandler', {
|
|
35
|
-
runtime: constants_1.DEFAULT_NODE_RUNTIME,
|
|
36
|
-
code: lambda.Code.fromAsset((0, path_1.join)(__dirname, 'datadog-synthetics-test-custom-resource'), {
|
|
37
|
-
exclude: ['*.js', '*.d.ts'],
|
|
38
|
-
}),
|
|
39
|
-
handler: 'handler.handler',
|
|
40
|
-
environment: {
|
|
41
|
-
DATADOG_SECRET_ARN: datadogSecret.secretArn,
|
|
42
|
-
},
|
|
43
|
-
logRetention: logs.RetentionDays.ONE_WEEK,
|
|
44
|
-
});
|
|
45
|
-
datadogSecret.grantRead(datadogHandler);
|
|
46
|
-
const provider = new customResources.Provider(this, 'DatadogSyntheticsProvider', {
|
|
47
|
-
onEventHandler: datadogHandler,
|
|
48
|
-
});
|
|
49
|
-
const enhancedName = `${teamName} ${props.serviceName} ${props.testConfig.name}`;
|
|
50
|
-
const enhancedTags = [
|
|
51
|
-
...(props.testConfig.tags ?? []),
|
|
52
|
-
`account_id:${cdk.Stack.of(this).account}`,
|
|
53
|
-
`account_name:${accountName}`,
|
|
54
|
-
`service:${props.serviceName}`,
|
|
55
|
-
`team:${teamName}`,
|
|
56
|
-
`team_identifier:${teamIdentifier}`,
|
|
57
|
-
];
|
|
58
|
-
const enhancedTestConfig = {
|
|
59
|
-
...props.testConfig,
|
|
60
|
-
name: enhancedName,
|
|
61
|
-
tags: enhancedTags,
|
|
62
|
-
};
|
|
63
|
-
new cdk.CustomResource(this, 'DatadogSyntheticsTestResource', {
|
|
64
|
-
serviceToken: provider.serviceToken,
|
|
65
|
-
properties: {
|
|
66
|
-
TestConfig: JSON.stringify(enhancedTestConfig),
|
|
67
|
-
},
|
|
68
|
-
});
|
|
69
|
-
const [feature, packageName] = __dirname.split(path.sep).reverse();
|
|
70
|
-
new rio_claidometer_1.Claidometer(this, 'Claidometer', {
|
|
71
|
-
product: rio_claidometer_1.ClaidometerProduct.CDK_CONTRIBUTION,
|
|
72
|
-
packageName,
|
|
73
|
-
feature,
|
|
74
|
-
version: '0.0.1',
|
|
75
|
-
});
|
|
76
|
-
}
|
|
77
|
-
}
|
|
78
|
-
exports.DatadogSyntheticsTest = DatadogSyntheticsTest;
|
|
79
|
-
_a = JSII_RTTI_SYMBOL_1;
|
|
80
|
-
DatadogSyntheticsTest[_a] = { fqn: "@rio-cloud/cdk-v2-constructs.DatadogSyntheticsTest", version: "0.0.0" };
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWRvZy1zeW50aGV0aWNzLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vZGF0YWRvZy1zeW50aGV0aWNzL2RhdGFkb2ctc3ludGhldGljcy10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBS0EsbUNBQW1DO0FBQ25DLGlEQUFpRDtBQUNqRCw2Q0FBNkM7QUFDN0MsZ0VBQWdFO0FBQ2hFLDJDQUF1QztBQUN2Qyw2QkFBNkI7QUFDN0IsK0JBQTRCO0FBQzVCLGtEQUEwRDtBQUMxRCxrREFBeUQ7QUFDekQsOERBQTJFO0FBQzNFLGdFQUEyRDtBQWlCM0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBYSxxQkFBc0IsU0FBUSxzQkFBUztJQUNsRCxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWlDO1FBQ3pFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFFakIsTUFBTSxhQUFhLEdBQUcsK0JBQW1CLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFFbEUsTUFBTSxRQUFRLEdBQUcsaUNBQWMsQ0FBQyxvQkFBb0IsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDdkUsTUFBTSxjQUFjLEdBQUcsaUNBQWMsQ0FBQywwQkFBMEIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFDbkYsTUFBTSxXQUFXLEdBQUcsaUNBQWMsQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxXQUFXLENBQUM7UUFFN0UsTUFBTSxjQUFjLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSwwQkFBMEIsRUFBRTtZQUMzRSxPQUFPLEVBQUUsZ0NBQW9CO1lBQzdCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFBLFdBQUksRUFBQyxTQUFTLEVBQUUseUNBQXlDLENBQUMsRUFBRTtnQkFDdEYsT0FBTyxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQzthQUM1QixDQUFDO1lBQ0YsT0FBTyxFQUFFLGlCQUFpQjtZQUMxQixXQUFXLEVBQUU7Z0JBQ1gsa0JBQWtCLEVBQUUsYUFBYSxDQUFDLFNBQVM7YUFDNUM7WUFDRCxZQUFZLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRO1NBQzFDLENBQUMsQ0FBQztRQUNILGFBQWEsQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLENBQUM7UUFFeEMsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRTtZQUMvRSxjQUFjLEVBQUUsY0FBYztTQUMvQixDQUFDLENBQUM7UUFFSCxNQUFNLFlBQVksR0FBRyxHQUFHLFFBQVEsSUFBSSxLQUFLLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDakYsTUFBTSxZQUFZLEdBQUc7WUFDbkIsR0FBRyxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUNoQyxjQUFjLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRTtZQUMxQyxnQkFBZ0IsV0FBVyxFQUFFO1lBQzdCLFdBQVcsS0FBSyxDQUFDLFdBQVcsRUFBRTtZQUM5QixRQUFRLFFBQVEsRUFBRTtZQUNsQixtQkFBbUIsY0FBYyxFQUFFO1NBQ3BDLENBQUM7UUFDRixNQUFNLGtCQUFrQixHQUFtQjtZQUN6QyxHQUFHLEtBQUssQ0FBQyxVQUFVO1lBQ25CLElBQUksRUFBRSxZQUFZO1lBQ2xCLElBQUksRUFBRSxZQUFZO1NBQ25CLENBQUM7UUFFRixJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLCtCQUErQixFQUFFO1lBQzVELFlBQVksRUFBRSxRQUFRLENBQUMsWUFBWTtZQUNuQyxVQUFVLEVBQUU7Z0JBQ1YsVUFBVSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsa0JBQWtCLENBQUM7YUFDL0M7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25FLElBQUksNkJBQVcsQ0FBQyxJQUFJLEVBQUUsYUFBYSxFQUFFO1lBQ25DLE9BQU8sRUFBRSxvQ0FBa0IsQ0FBQyxnQkFBZ0I7WUFDNUMsV0FBVztZQUNYLE9BQU87WUFDUCxPQUFPLEVBQUUsT0FBTztTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDOztBQXhESCxzREF5REMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7XG4gIFN5bnRoZXRpY3NBUElUZXN0LFxuICBTeW50aGV0aWNzQnJvd3NlclRlc3QsXG4gIFN5bnRoZXRpY3NNb2JpbGVUZXN0LFxufSBmcm9tICdAZGF0YWRvZy9kYXRhZG9nLWFwaS1jbGllbnQvZGlzdC9wYWNrYWdlcy9kYXRhZG9nLWFwaS1jbGllbnQtdjEnO1xuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGxhbWJkYSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbGFtYmRhJztcbmltcG9ydCAqIGFzIGxvZ3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWxvZ3MnO1xuaW1wb3J0ICogYXMgY3VzdG9tUmVzb3VyY2VzIGZyb20gJ2F3cy1jZGstbGliL2N1c3RvbS1yZXNvdXJjZXMnO1xuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgREVGQVVMVF9OT0RFX1JVTlRJTUUgfSBmcm9tICcuLi8uLi8uLi9jb25zdGFudHMnO1xuaW1wb3J0IHsgRGF0YWRvZ1NoYXJlZFNlY3JldCB9IGZyb20gJy4uLy4uLy4uL2RhdGFkb2d2Mic7XG5pbXBvcnQgeyBDbGFpZG9tZXRlciwgQ2xhaWRvbWV0ZXJQcm9kdWN0IH0gZnJvbSAnLi4vLi4vLi4vcmlvLWNsYWlkb21ldGVyJztcbmltcG9ydCB7IFJpb0xhbmRpbmdab25lIH0gZnJvbSAnLi4vLi4vLi4vcmlvLWxhbmRpbmctem9uZSc7XG5cbnR5cGUgU3ludGhldGljc1Rlc3QgPSBTeW50aGV0aWNzQVBJVGVzdCB8IFN5bnRoZXRpY3NCcm93c2VyVGVzdCB8IFN5bnRoZXRpY3NNb2JpbGVUZXN0O1xuXG5leHBvcnQgaW50ZXJmYWNlIERhdGFkb2dTeW50aGV0aWNzVGVzdFByb3BzIHtcbiAgLyoqXG4gICAqIFRoZSBuYW1lIG9mIHRoZSBzZXJ2aWNlIHRvIHdoaWNoIHRoZSB0ZXN0IGJlbG9uZ3MuXG4gICAqXG4gICAqIFVzZWQgdG8gZW5oYW5jZSB0aGUgdGVzdCBuYW1lIGFuZCBhcHBseSB0aGUgYHNlcnZpY2VgIHRhZy5cbiAgICovXG4gIHJlYWRvbmx5IHNlcnZpY2VOYW1lOiBzdHJpbmc7XG4gIC8qKlxuICAgKiBAanNpaSBpZ25vcmVcbiAgICovXG4gIHJlYWRvbmx5IHRlc3RDb25maWc6IFN5bnRoZXRpY3NUZXN0O1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBEYXRhZG9nIFN5bnRoZXRpY3MgdGVzdCB2aWEgRGF0YWRvZyBBUEkgdGhyb3VnaCBhIGN1c3RvbSByZXNvdXJjZS5cbiAqXG4gKiBTZWUgaHR0cHM6Ly9kb2NzLmRhdGFkb2docS5jb20vYXBpL2xhdGVzdC9zeW50aGV0aWNzLyBmb3IgbW9yZSBpbmZvcm1hdGlvbiAoZXNwZWNpYWxseSB0aGUgdHlwZXNjcmlwdCBleGFtcGxlcykuXG4gKiBDdXJyZW50bHksIHRlc3RzIG9mIHR5cGUgYGFwaWAsIGBicm93c2VyYCBhbmQgYG1vYmlsZWAgYXJlIHN1cHBvcnRlZC5cbiAqXG4gKiBUaGUgcmVzb3VyY2UgZG9lcyB0aGUgZm9sbG93aW5nIG1vZGlmaWNhdGlvbiB0byB0aGUgcGFzc2VkIGB0ZXN0Q29uZmlnYDpcbiAqIC0gQWRkcyB0ZWFtIG5hbWUgYW5kIHNlcnZpY2UgbmFtZSB0byB0aGUgdGVzdCBuYW1lLlxuICogLSBBZGRzIHRoZSB1c3VhbCB0YWdzIChhY2NvdW50X2lkLCBhY2NvdW50X25hbWUsIHNlcnZpY2UsIHRlYW0sIHRlYW1faWRlbnRpZmllcikgdG8gdGhlIHRlc3QgdGFncy5cbiAqL1xuZXhwb3J0IGNsYXNzIERhdGFkb2dTeW50aGV0aWNzVGVzdCBleHRlbmRzIENvbnN0cnVjdCB7XG4gIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBEYXRhZG9nU3ludGhldGljc1Rlc3RQcm9wcykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICBjb25zdCBkYXRhZG9nU2VjcmV0ID0gRGF0YWRvZ1NoYXJlZFNlY3JldC5jcmVkZW50aWFsc1NlY3JldCh0aGlzKTtcblxuICAgIGNvbnN0IHRlYW1OYW1lID0gUmlvTGFuZGluZ1pvbmUuZ2V0VGVhbU5hbWVQYXJhbWV0ZXIodGhpcykuc3RyaW5nVmFsdWU7XG4gICAgY29uc3QgdGVhbUlkZW50aWZpZXIgPSBSaW9MYW5kaW5nWm9uZS5nZXRUZWFtSWRlbnRpZmllclBhcmFtZXRlcih0aGlzKS5zdHJpbmdWYWx1ZTtcbiAgICBjb25zdCBhY2NvdW50TmFtZSA9IFJpb0xhbmRpbmdab25lLmdldEFjY291bnROYW1lUGFyYW1ldGVyKHRoaXMpLnN0cmluZ1ZhbHVlO1xuXG4gICAgY29uc3QgZGF0YWRvZ0hhbmRsZXIgPSBuZXcgbGFtYmRhLkZ1bmN0aW9uKHRoaXMsICdEYXRhZG9nU3ludGhldGljc0hhbmRsZXInLCB7XG4gICAgICBydW50aW1lOiBERUZBVUxUX05PREVfUlVOVElNRSxcbiAgICAgIGNvZGU6IGxhbWJkYS5Db2RlLmZyb21Bc3NldChqb2luKF9fZGlybmFtZSwgJ2RhdGFkb2ctc3ludGhldGljcy10ZXN0LWN1c3RvbS1yZXNvdXJjZScpLCB7XG4gICAgICAgIGV4Y2x1ZGU6IFsnKi5qcycsICcqLmQudHMnXSxcbiAgICAgIH0pLFxuICAgICAgaGFuZGxlcjogJ2hhbmRsZXIuaGFuZGxlcicsXG4gICAgICBlbnZpcm9ubWVudDoge1xuICAgICAgICBEQVRBRE9HX1NFQ1JFVF9BUk46IGRhdGFkb2dTZWNyZXQuc2VjcmV0QXJuLFxuICAgICAgfSxcbiAgICAgIGxvZ1JldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLk9ORV9XRUVLLFxuICAgIH0pO1xuICAgIGRhdGFkb2dTZWNyZXQuZ3JhbnRSZWFkKGRhdGFkb2dIYW5kbGVyKTtcblxuICAgIGNvbnN0IHByb3ZpZGVyID0gbmV3IGN1c3RvbVJlc291cmNlcy5Qcm92aWRlcih0aGlzLCAnRGF0YWRvZ1N5bnRoZXRpY3NQcm92aWRlcicsIHtcbiAgICAgIG9uRXZlbnRIYW5kbGVyOiBkYXRhZG9nSGFuZGxlcixcbiAgICB9KTtcblxuICAgIGNvbnN0IGVuaGFuY2VkTmFtZSA9IGAke3RlYW1OYW1lfSAke3Byb3BzLnNlcnZpY2VOYW1lfSAke3Byb3BzLnRlc3RDb25maWcubmFtZX1gO1xuICAgIGNvbnN0IGVuaGFuY2VkVGFncyA9IFtcbiAgICAgIC4uLihwcm9wcy50ZXN0Q29uZmlnLnRhZ3MgPz8gW10pLFxuICAgICAgYGFjY291bnRfaWQ6JHtjZGsuU3RhY2sub2YodGhpcykuYWNjb3VudH1gLFxuICAgICAgYGFjY291bnRfbmFtZToke2FjY291bnROYW1lfWAsXG4gICAgICBgc2VydmljZToke3Byb3BzLnNlcnZpY2VOYW1lfWAsXG4gICAgICBgdGVhbToke3RlYW1OYW1lfWAsXG4gICAgICBgdGVhbV9pZGVudGlmaWVyOiR7dGVhbUlkZW50aWZpZXJ9YCxcbiAgICBdO1xuICAgIGNvbnN0IGVuaGFuY2VkVGVzdENvbmZpZzogU3ludGhldGljc1Rlc3QgPSB7XG4gICAgICAuLi5wcm9wcy50ZXN0Q29uZmlnLFxuICAgICAgbmFtZTogZW5oYW5jZWROYW1lLFxuICAgICAgdGFnczogZW5oYW5jZWRUYWdzLFxuICAgIH07XG5cbiAgICBuZXcgY2RrLkN1c3RvbVJlc291cmNlKHRoaXMsICdEYXRhZG9nU3ludGhldGljc1Rlc3RSZXNvdXJjZScsIHtcbiAgICAgIHNlcnZpY2VUb2tlbjogcHJvdmlkZXIuc2VydmljZVRva2VuLFxuICAgICAgcHJvcGVydGllczoge1xuICAgICAgICBUZXN0Q29uZmlnOiBKU09OLnN0cmluZ2lmeShlbmhhbmNlZFRlc3RDb25maWcpLFxuICAgICAgfSxcbiAgICB9KTtcblxuICAgIGNvbnN0IFtmZWF0dXJlLCBwYWNrYWdlTmFtZV0gPSBfX2Rpcm5hbWUuc3BsaXQocGF0aC5zZXApLnJldmVyc2UoKTtcbiAgICBuZXcgQ2xhaWRvbWV0ZXIodGhpcywgJ0NsYWlkb21ldGVyJywge1xuICAgICAgcHJvZHVjdDogQ2xhaWRvbWV0ZXJQcm9kdWN0LkNES19DT05UUklCVVRJT04sXG4gICAgICBwYWNrYWdlTmFtZSxcbiAgICAgIGZlYXR1cmUsXG4gICAgICB2ZXJzaW9uOiAnMC4wLjEnLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Application = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
class Application extends aws_cdk_lib_1.Stage {
|
|
6
|
-
constructor(scope, id, props) {
|
|
7
|
-
super(scope, id, props);
|
|
8
|
-
props.appStackFactory.create(this, {
|
|
9
|
-
serviceName: props.serviceName,
|
|
10
|
-
stackName: props.serviceName,
|
|
11
|
-
version: props.version,
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
exports.Application = Application;
|
|
16
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBwbGljYXRpb24tc3RhZ2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvY29udHJpYnV0aW9ucy90ZWFtLXRyYW5zcG9ydC10d28vcGlwZWxpbmUvYXBwbGljYXRpb24tc3RhZ2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkNBQWdEO0FBVWhELE1BQWEsV0FBWSxTQUFRLG1CQUFLO0lBQ3BDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7UUFDL0QsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsS0FBSyxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO1lBQ2pDLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztZQUM5QixTQUFTLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDNUIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1NBQ3ZCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQVZELGtDQVVDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhZ2UsIFN0YWdlUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcbmltcG9ydCB7IElBcHBTdGFja0ZhY3RvcnkgfSBmcm9tICcuL3BpcGVsaW5lLXN0YWNrJztcblxuaW50ZXJmYWNlIEFwcGxpY2F0aW9uUHJvcHMgZXh0ZW5kcyBTdGFnZVByb3BzIHtcbiAgcmVhZG9ubHkgc2VydmljZU5hbWU6IHN0cmluZztcbiAgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nO1xuICByZWFkb25seSBhcHBTdGFja0ZhY3Rvcnk6IElBcHBTdGFja0ZhY3Rvcnk7XG59XG5cbmV4cG9ydCBjbGFzcyBBcHBsaWNhdGlvbiBleHRlbmRzIFN0YWdlIHtcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM6IEFwcGxpY2F0aW9uUHJvcHMpIHtcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgIHByb3BzLmFwcFN0YWNrRmFjdG9yeS5jcmVhdGUodGhpcywge1xuICAgICAgc2VydmljZU5hbWU6IHByb3BzLnNlcnZpY2VOYW1lLFxuICAgICAgc3RhY2tOYW1lOiBwcm9wcy5zZXJ2aWNlTmFtZSxcbiAgICAgIHZlcnNpb246IHByb3BzLnZlcnNpb24sXG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.RioCodeBuildProject = void 0;
|
|
4
|
-
const aws_cdk_lib_1 = require("aws-cdk-lib");
|
|
5
|
-
const codebuild = require("aws-cdk-lib/aws-codebuild");
|
|
6
|
-
const codepipeline = require("aws-cdk-lib/aws-codepipeline");
|
|
7
|
-
const pipelines = require("aws-cdk-lib/pipelines");
|
|
8
|
-
class RioCodeBuildProject extends pipelines.CodeBuildStep {
|
|
9
|
-
constructor(scope, id, props) {
|
|
10
|
-
super(id, {
|
|
11
|
-
input: props.input,
|
|
12
|
-
partialBuildSpec: props.partialBuildSpec,
|
|
13
|
-
commands: [],
|
|
14
|
-
buildEnvironment: {
|
|
15
|
-
buildImage: props?.buildEnvironment?.buildImage ||
|
|
16
|
-
codebuild.LinuxBuildImage.fromCodeBuildImageId('aws/codebuild/amazonlinux2-x86_64-standard:5.0'),
|
|
17
|
-
computeType: props?.buildEnvironment?.computeType || codebuild.ComputeType.LARGE,
|
|
18
|
-
environmentVariables: {
|
|
19
|
-
AWS_ACCOUNT_ID: { value: aws_cdk_lib_1.Stack.of(scope).account },
|
|
20
|
-
SERVICE_NAME: { value: props.serviceName },
|
|
21
|
-
HOSTED_ZONE: { value: props.hostedZoneName },
|
|
22
|
-
...props.buildEnvironment?.environmentVariables,
|
|
23
|
-
},
|
|
24
|
-
privileged: props?.buildEnvironment?.privileged,
|
|
25
|
-
certificate: props?.buildEnvironment?.certificate,
|
|
26
|
-
},
|
|
27
|
-
primaryOutputDirectory: props.cdkOutDirectory ?? './',
|
|
28
|
-
env: {
|
|
29
|
-
PIPELINE_EXECUTION_ID: codepipeline.GlobalVariables.executionId,
|
|
30
|
-
...props.env,
|
|
31
|
-
},
|
|
32
|
-
cache: props.cacheBucket
|
|
33
|
-
? codebuild.Cache.bucket(props.cacheBucket, { prefix: `codebuild-cache/${props.serviceName}` })
|
|
34
|
-
: undefined,
|
|
35
|
-
});
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
exports.RioCodeBuildProject = RioCodeBuildProject;
|
|
39
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGQtcHJvamVjdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jb250cmlidXRpb25zL3RlYW0tdHJhbnNwb3J0LXR3by9waXBlbGluZS9idWlsZC1wcm9qZWN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZDQUFvQztBQUNwQyx1REFBdUQ7QUFDdkQsNkRBQTZEO0FBRTdELG1EQUFtRDtBQWNuRCxNQUFhLG1CQUFvQixTQUFRLFNBQVMsQ0FBQyxhQUFhO0lBQzlELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBK0I7UUFDdkUsS0FBSyxDQUFDLEVBQUUsRUFBRTtZQUNSLEtBQUssRUFBRSxLQUFLLENBQUMsS0FBSztZQUNsQixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFFBQVEsRUFBRSxFQUFFO1lBQ1osZ0JBQWdCLEVBQUU7Z0JBQ2hCLFVBQVUsRUFDUixLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVTtvQkFDbkMsU0FBUyxDQUFDLGVBQWUsQ0FBQyxvQkFBb0IsQ0FBQyxnREFBZ0QsQ0FBQztnQkFDbEcsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxXQUFXLElBQUksU0FBUyxDQUFDLFdBQVcsQ0FBQyxLQUFLO2dCQUNoRixvQkFBb0IsRUFBRTtvQkFDcEIsY0FBYyxFQUFFLEVBQUUsS0FBSyxFQUFFLG1CQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxDQUFDLE9BQU8sRUFBRTtvQkFDbEQsWUFBWSxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxXQUFXLEVBQUU7b0JBQzFDLFdBQVcsRUFBRSxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsY0FBYyxFQUFFO29CQUM1QyxHQUFHLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxvQkFBb0I7aUJBQ2hEO2dCQUNELFVBQVUsRUFBRSxLQUFLLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVTtnQkFDL0MsV0FBVyxFQUFFLEtBQUssRUFBRSxnQkFBZ0IsRUFBRSxXQUFXO2FBQ2xEO1lBQ0Qsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLGVBQWUsSUFBSSxJQUFJO1lBQ3JELEdBQUcsRUFBRTtnQkFDSCxxQkFBcUIsRUFBRSxZQUFZLENBQUMsZUFBZSxDQUFDLFdBQVc7Z0JBQy9ELEdBQUcsS0FBSyxDQUFDLEdBQUc7YUFDYjtZQUNELEtBQUssRUFBRSxLQUFLLENBQUMsV0FBVztnQkFDdEIsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxNQUFNLEVBQUUsbUJBQW1CLEtBQUssQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDO2dCQUMvRixDQUFDLENBQUMsU0FBUztTQUNkLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRjtBQTlCRCxrREE4QkMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGFjayB9IGZyb20gJ2F3cy1jZGstbGliJztcbmltcG9ydCAqIGFzIGNvZGVidWlsZCBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZWJ1aWxkJztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtY29kZXBpcGVsaW5lJztcbmltcG9ydCB7IElCdWNrZXQgfSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtczMnO1xuaW1wb3J0ICogYXMgcGlwZWxpbmVzIGZyb20gJ2F3cy1jZGstbGliL3BpcGVsaW5lcyc7XG5pbXBvcnQgeyBDb25zdHJ1Y3QgfSBmcm9tICdjb25zdHJ1Y3RzJztcblxuZXhwb3J0IGludGVyZmFjZSBSaW9Db2RlQnVpbGRQcm9qZWN0UHJvcHMge1xuICBpbnB1dDogcGlwZWxpbmVzLklGaWxlU2V0UHJvZHVjZXI7XG4gIGNka091dERpcmVjdG9yeT86IHN0cmluZztcbiAgcGFydGlhbEJ1aWxkU3BlYzogY29kZWJ1aWxkLkJ1aWxkU3BlYztcbiAgYnVpbGRFbnZpcm9ubWVudD86IGNvZGVidWlsZC5CdWlsZEVudmlyb25tZW50O1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBob3N0ZWRab25lTmFtZTogc3RyaW5nO1xuICBlbnY/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICBjYWNoZUJ1Y2tldD86IElCdWNrZXQ7XG59XG5cbmV4cG9ydCBjbGFzcyBSaW9Db2RlQnVpbGRQcm9qZWN0IGV4dGVuZHMgcGlwZWxpbmVzLkNvZGVCdWlsZFN0ZXAge1xuICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogUmlvQ29kZUJ1aWxkUHJvamVjdFByb3BzKSB7XG4gICAgc3VwZXIoaWQsIHtcbiAgICAgIGlucHV0OiBwcm9wcy5pbnB1dCxcbiAgICAgIHBhcnRpYWxCdWlsZFNwZWM6IHByb3BzLnBhcnRpYWxCdWlsZFNwZWMsXG4gICAgICBjb21tYW5kczogW10sXG4gICAgICBidWlsZEVudmlyb25tZW50OiB7XG4gICAgICAgIGJ1aWxkSW1hZ2U6XG4gICAgICAgICAgcHJvcHM/LmJ1aWxkRW52aXJvbm1lbnQ/LmJ1aWxkSW1hZ2UgfHxcbiAgICAgICAgICBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLmZyb21Db2RlQnVpbGRJbWFnZUlkKCdhd3MvY29kZWJ1aWxkL2FtYXpvbmxpbnV4Mi14ODZfNjQtc3RhbmRhcmQ6NS4wJyksXG4gICAgICAgIGNvbXB1dGVUeXBlOiBwcm9wcz8uYnVpbGRFbnZpcm9ubWVudD8uY29tcHV0ZVR5cGUgfHwgY29kZWJ1aWxkLkNvbXB1dGVUeXBlLkxBUkdFLFxuICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgIEFXU19BQ0NPVU5UX0lEOiB7IHZhbHVlOiBTdGFjay5vZihzY29wZSkuYWNjb3VudCB9LFxuICAgICAgICAgIFNFUlZJQ0VfTkFNRTogeyB2YWx1ZTogcHJvcHMuc2VydmljZU5hbWUgfSxcbiAgICAgICAgICBIT1NURURfWk9ORTogeyB2YWx1ZTogcHJvcHMuaG9zdGVkWm9uZU5hbWUgfSxcbiAgICAgICAgICAuLi5wcm9wcy5idWlsZEVudmlyb25tZW50Py5lbnZpcm9ubWVudFZhcmlhYmxlcyxcbiAgICAgICAgfSxcbiAgICAgICAgcHJpdmlsZWdlZDogcHJvcHM/LmJ1aWxkRW52aXJvbm1lbnQ/LnByaXZpbGVnZWQsXG4gICAgICAgIGNlcnRpZmljYXRlOiBwcm9wcz8uYnVpbGRFbnZpcm9ubWVudD8uY2VydGlmaWNhdGUsXG4gICAgICB9LFxuICAgICAgcHJpbWFyeU91dHB1dERpcmVjdG9yeTogcHJvcHMuY2RrT3V0RGlyZWN0b3J5ID8/ICcuLycsXG4gICAgICBlbnY6IHtcbiAgICAgICAgUElQRUxJTkVfRVhFQ1VUSU9OX0lEOiBjb2RlcGlwZWxpbmUuR2xvYmFsVmFyaWFibGVzLmV4ZWN1dGlvbklkLFxuICAgICAgICAuLi5wcm9wcy5lbnYsXG4gICAgICB9LFxuICAgICAgY2FjaGU6IHByb3BzLmNhY2hlQnVja2V0XG4gICAgICAgID8gY29kZWJ1aWxkLkNhY2hlLmJ1Y2tldChwcm9wcy5jYWNoZUJ1Y2tldCwgeyBwcmVmaXg6IGBjb2RlYnVpbGQtY2FjaGUvJHtwcm9wcy5zZXJ2aWNlTmFtZX1gIH0pXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgIH0pO1xuICB9XG59XG4iXX0=
|