From d9c79f438f1ce56864af552aba15a6010e556efd Mon Sep 17 00:00:00 2001 From: engel80 Date: Tue, 20 Dec 2022 13:17:02 +0900 Subject: [PATCH 1/2] . --- .github/workflows/build.yml | 23 ++- package-lock.json | 60 ++++--- package.json | 7 +- ts.out/code-pipeline/bin/index.d.ts | 2 + ts.out/code-pipeline/bin/index.js | 40 +++++ .../lib/ecs-codedeploy-stack.d.ts | 17 ++ .../code-pipeline/lib/ecs-codedeploy-stack.js | 149 +++++++++++++++++ ts.out/config.d.ts | 18 +++ ts.out/config.js | 18 +++ ts.out/ecr-codecommit/bin/index.d.ts | 2 + ts.out/ecr-codecommit/bin/index.js | 40 +++++ .../lib/ecr-codecommit-stack.d.ts | 12 ++ .../lib/ecr-codecommit-stack.js | 77 +++++++++ ts.out/ecs-fargate-cluster/bin/index.d.ts | 2 + ts.out/ecs-fargate-cluster/bin/index.js | 39 +++++ .../lib/cluster-config.d.ts | 3 + .../ecs-fargate-cluster/lib/cluster-config.js | 7 + .../lib/ecs-fargate-cluster-stack.d.ts | 9 ++ .../lib/ecs-fargate-cluster-stack.js | 61 +++++++ .../bin/index.d.ts | 2 + .../ecs-fargate-service-restapi/bin/index.js | 38 +++++ .../ecs-fargate-service-restapi-stack.d.ts | 10 ++ .../lib/ecs-fargate-service-restapi-stack.js | 142 ++++++++++++++++ .../bin/index.d.ts | 2 + .../bin/index.js | 38 +++++ ...ecs-fargatespot-service-restapi-stack.d.ts | 10 ++ .../ecs-fargatespot-service-restapi-stack.js | 151 ++++++++++++++++++ ts.out/ecs-iam-role/bin/index.d.ts | 2 + ts.out/ecs-iam-role/bin/index.js | 37 +++++ .../ecs-iam-role/lib/ecs-iam-role-stack.d.ts | 13 ++ ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js | 79 +++++++++ ts.out/vpc/bin/index.d.ts | 2 + ts.out/vpc/bin/index.js | 37 +++++ ts.out/vpc/lib/vpc-stack.d.ts | 5 + ts.out/vpc/lib/vpc-stack.js | 56 +++++++ 35 files changed, 1183 insertions(+), 27 deletions(-) create mode 100644 ts.out/code-pipeline/bin/index.d.ts create mode 100644 ts.out/code-pipeline/bin/index.js create mode 100644 ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts create mode 100644 ts.out/code-pipeline/lib/ecs-codedeploy-stack.js create mode 100644 ts.out/config.d.ts create mode 100644 ts.out/config.js create mode 100644 ts.out/ecr-codecommit/bin/index.d.ts create mode 100644 ts.out/ecr-codecommit/bin/index.js create mode 100644 ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts create mode 100644 ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js create mode 100644 ts.out/ecs-fargate-cluster/bin/index.d.ts create mode 100644 ts.out/ecs-fargate-cluster/bin/index.js create mode 100644 ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts create mode 100644 ts.out/ecs-fargate-cluster/lib/cluster-config.js create mode 100644 ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts create mode 100644 ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js create mode 100644 ts.out/ecs-fargate-service-restapi/bin/index.d.ts create mode 100644 ts.out/ecs-fargate-service-restapi/bin/index.js create mode 100644 ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts create mode 100644 ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js create mode 100644 ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts create mode 100644 ts.out/ecs-fargatespot-service-restapi/bin/index.js create mode 100644 ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts create mode 100644 ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js create mode 100644 ts.out/ecs-iam-role/bin/index.d.ts create mode 100644 ts.out/ecs-iam-role/bin/index.js create mode 100644 ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts create mode 100644 ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js create mode 100644 ts.out/vpc/bin/index.d.ts create mode 100644 ts.out/vpc/bin/index.js create mode 100644 ts.out/vpc/lib/vpc-stack.d.ts create mode 100644 ts.out/vpc/lib/vpc-stack.js diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2bda9ba..784e849 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -7,7 +7,28 @@ on: pull_request: types: [opened, synchronize, reopened] jobs: - build: + cdk-build: + runs-on: ubuntu-latest + strategy: + matrix: + node: [ 18 ] + name: Node ${{ matrix.node }} sample + steps: + - uses: actions/checkout@v3 + - name: Setup node + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node }} + - run: npm install && npm run build + + docker-build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Build the Docker image + run: cd app && docker build . -t eks-cdk:$(date +%s) + + sonarqube: name: Build runs-on: ubuntu-latest steps: diff --git a/package-lock.json b/package-lock.json index 4d84603..c84045e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,9 +10,10 @@ "dependencies": { "@types/js-yaml": "4.0.5", "aws-cdk-lib": "2.32.1", - "cdk-ecr-deployment": "2.5.5", + "cdk-ecr-deployment": "^2.5.6", "constructs": "^10.0.0", - "sync-request": "6.1.0" + "sync-request": "6.1.0", + "tsc": "^2.0.4" }, "bin": { "cluster": "ecs-ec2-cluster/bin/index.js" @@ -24,7 +25,7 @@ "jest": "^26.4.2", "ts-jest": "^26.2.0", "ts-node": "^9.0.0", - "typescript": "~3.9.7" + "typescript": "^4.9.4" } }, "node_modules/@ampproject/remapping": { @@ -1749,9 +1750,9 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "node_modules/cdk-ecr-deployment": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-2.5.5.tgz", - "integrity": "sha512-glU4fIotzz/sTDqpTqEUs3XKSlYxWBFt5sTAWgZAzIUf149i3AIhrq3OoJsH7Q7WwjFcGcLX5+BFiHvPe9l1yg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-2.5.6.tgz", + "integrity": "sha512-Vl6FksKZLC1wE/ZjHvShg4fVZqOR8x2aIUAP+M3fe1MLKQHztApi0cG4ceVYf4FLpUlYXGRjTkJR28/cWY9RnQ==", "bundleDependencies": [ "got", "hpagent" @@ -1925,7 +1926,7 @@ } }, "node_modules/cdk-ecr-deployment/node_modules/got": { - "version": "11.8.3", + "version": "11.8.5", "inBundle": true, "license": "MIT", "dependencies": { @@ -2416,9 +2417,9 @@ "dev": true }, "node_modules/decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true, "engines": { "node": ">=0.10" @@ -6438,6 +6439,14 @@ "typescript": ">=2.7" } }, + "node_modules/tsc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/tsc/-/tsc-2.0.4.tgz", + "integrity": "sha512-fzoSieZI5KKJVBYGvwbVZs/J5za84f2lSTLPYf6AGiIf43tZ3GNrI1QzTLcjtyDDP4aLxd46RTZq1nQxe7+k5Q==", + "bin": { + "tsc": "bin/tsc" + } + }, "node_modules/type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -6486,9 +6495,9 @@ } }, "node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -8208,9 +8217,9 @@ "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" }, "cdk-ecr-deployment": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-2.5.5.tgz", - "integrity": "sha512-glU4fIotzz/sTDqpTqEUs3XKSlYxWBFt5sTAWgZAzIUf149i3AIhrq3OoJsH7Q7WwjFcGcLX5+BFiHvPe9l1yg==", + "version": "2.5.6", + "resolved": "https://registry.npmjs.org/cdk-ecr-deployment/-/cdk-ecr-deployment-2.5.6.tgz", + "integrity": "sha512-Vl6FksKZLC1wE/ZjHvShg4fVZqOR8x2aIUAP+M3fe1MLKQHztApi0cG4ceVYf4FLpUlYXGRjTkJR28/cWY9RnQ==", "requires": { "aws-cdk-lib": "^2.0.0", "constructs": "^10.0.5", @@ -8331,7 +8340,7 @@ } }, "got": { - "version": "11.8.3", + "version": "11.8.5", "bundled": true, "requires": { "@sindresorhus/is": "^4.0.0", @@ -8711,9 +8720,9 @@ "dev": true }, "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", "dev": true }, "deep-is": { @@ -11842,6 +11851,11 @@ "yn": "3.1.1" } }, + "tsc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/tsc/-/tsc-2.0.4.tgz", + "integrity": "sha512-fzoSieZI5KKJVBYGvwbVZs/J5za84f2lSTLPYf6AGiIf43tZ3GNrI1QzTLcjtyDDP4aLxd46RTZq1nQxe7+k5Q==" + }, "type-check": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", @@ -11878,9 +11892,9 @@ } }, "typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", + "version": "4.9.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz", + "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==", "dev": true }, "union-value": { diff --git a/package.json b/package.json index 2a277b8..2449849 100644 --- a/package.json +++ b/package.json @@ -17,13 +17,14 @@ "jest": "^26.4.2", "ts-jest": "^26.2.0", "ts-node": "^9.0.0", - "typescript": "~3.9.7" + "typescript": "^4.9.4" }, "dependencies": { "@types/js-yaml": "4.0.5", "aws-cdk-lib": "2.32.1", - "cdk-ecr-deployment": "2.5.5", + "cdk-ecr-deployment": "^2.5.6", "constructs": "^10.0.0", - "sync-request": "6.1.0" + "sync-request": "6.1.0", + "tsc": "^2.0.4" } } diff --git a/ts.out/code-pipeline/bin/index.d.ts b/ts.out/code-pipeline/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/code-pipeline/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/code-pipeline/bin/index.js b/ts.out/code-pipeline/bin/index.js new file mode 100644 index 0000000..dfbc643 --- /dev/null +++ b/ts.out/code-pipeline/bin/index.js @@ -0,0 +1,40 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const config_1 = require("../../config"); +const ecs_codedeploy_stack_1 = require("../lib/ecs-codedeploy-stack"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION, +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +const serviceName = 'fargate-restapi'; +new ecs_codedeploy_stack_1.EcsCodeDeployStack(app, `codepipeline-${serviceName}-${stage}`, { + env, + stage, + serviceName, + description: `Code Pipeline, service name: ${serviceName}-${stage}`, + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2RlLXBpcGVsaW5lL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBQ25DLHlDQUE2QztBQUM3QyxzRUFBaUU7QUFFakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUc7SUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7SUFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0NBQ3pDLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxzQkFBYSxDQUFDO0FBRS9ELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDO0FBRXRDLElBQUkseUNBQWtCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixXQUFXLElBQUksS0FBSyxFQUFFLEVBQUU7SUFDaEUsR0FBRztJQUNILEtBQUs7SUFDTCxXQUFXO0lBQ1gsV0FBVyxFQUFFLGdDQUFnQyxXQUFXLElBQUksS0FBSyxFQUFFO0lBQ25FLHFCQUFxQixFQUFFLEtBQUssS0FBRyxzQkFBYTtDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBFY3NDb2RlRGVwbG95U3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWNvZGVkZXBsb3ktc3RhY2snO1xuXG5jb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuY29uc3QgZW52ID0ge1xuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG59O1xuY29uc3Qgc3RhZ2UgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KCdzdGFnZScpIHx8IERFRkFVTFRfU1RBR0U7XG5cbmNvbnN0IHNlcnZpY2VOYW1lID0gJ2ZhcmdhdGUtcmVzdGFwaSc7XG5cbm5ldyBFY3NDb2RlRGVwbG95U3RhY2soYXBwLCBgY29kZXBpcGVsaW5lLSR7c2VydmljZU5hbWV9LSR7c3RhZ2V9YCwge1xuICAgIGVudixcbiAgICBzdGFnZSxcbiAgICBzZXJ2aWNlTmFtZSxcbiAgICBkZXNjcmlwdGlvbjogYENvZGUgUGlwZWxpbmUsIHNlcnZpY2UgbmFtZTogJHtzZXJ2aWNlTmFtZX0tJHtzdGFnZX1gLFxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts new file mode 100644 index 0000000..5aeeb21 --- /dev/null +++ b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts @@ -0,0 +1,17 @@ +import { Stack, StackProps } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +export interface EcsCodeDeployStackProps extends StackProps { + stage: string; + serviceName: string; +} +/** + * SSM parameters: + * /cdk-ecs-fargate/ecr-repo-arn + * /cdk-ecs-fargate/ecr-repo-name + * /cdk-ecs-fargate/cluster-securitygroup-id + * /cdk-ecs-fargate/cluster-name + * /cdk-ecs-fargate/codecommit-arn + */ +export declare class EcsCodeDeployStack extends Stack { + constructor(scope: Construct, id: string, props: EcsCodeDeployStackProps); +} diff --git a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js new file mode 100644 index 0000000..bed7e38 --- /dev/null +++ b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js @@ -0,0 +1,149 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EcsCodeDeployStack = void 0; +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const cdk = __importStar(require("aws-cdk-lib")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const ecr = __importStar(require("aws-cdk-lib/aws-ecr")); +const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); +const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); +const iam = __importStar(require("aws-cdk-lib/aws-iam")); +const codebuild = __importStar(require("aws-cdk-lib/aws-codebuild")); +const codepipeline = __importStar(require("aws-cdk-lib/aws-codepipeline")); +const codecommit = __importStar(require("aws-cdk-lib/aws-codecommit")); +const codepipeline_actions = __importStar(require("aws-cdk-lib/aws-codepipeline-actions")); +const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); +const config_1 = require("../../config"); +/** + * SSM parameters: + * /cdk-ecs-fargate/ecr-repo-arn + * /cdk-ecs-fargate/ecr-repo-name + * /cdk-ecs-fargate/cluster-securitygroup-id + * /cdk-ecs-fargate/cluster-name + * /cdk-ecs-fargate/codecommit-arn + */ +class EcsCodeDeployStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + var _a, _b; + super(scope, id, props); + const ecrRepo = ecr.Repository.fromRepositoryAttributes(this, 'ecr-repo', { + repositoryArn: cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/ecr-repo-arn`) }), + repositoryName: ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/ecr-repo-name`) + }); + const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); + const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); + const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); + const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); + const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { + clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, + vpc, + securityGroups: [ecsSecurityGroup] + }); + const service = ecs.FargateService.fromFargateServiceAttributes(this, 'fargate-cluster', { + cluster, + serviceName: cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-name`) }) + }); + const serviceName = props.serviceName; + const repository = codecommit.Repository.fromRepositoryArn(this, `${serviceName}-codecommit-arn`, cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/codecommit-arn`) })); + /** + * buildImage: codebuild.LinuxBuildImage.AMAZON_LINUX_2_4, + * buildImage: codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/h1a5s9h8/alpine:latest') + */ + const project = new codebuild.Project(this, `cb-project-${serviceName}`, { + projectName: `${serviceName}-build`, + source: codebuild.Source.codeCommit({ repository }), + environment: { + buildImage: codebuild.LinuxBuildImage.STANDARD_6_0, + privileged: true + }, + buildSpec: codebuild.BuildSpec.fromSourceFilename('./buildspec.yaml'), + badge: true, + environmentVariables: { + 'ACCOUNT_ID': { + value: (_a = props === null || props === void 0 ? void 0 : props.env) === null || _a === void 0 ? void 0 : _a.account + }, + 'CLUSTER_NAME': { + value: `${service.cluster.clusterName}` + }, + 'SERVICE_NAME': { + value: `${service.serviceName}` + }, + 'ECR_REPO_URI': { + value: `${ecrRepo.repositoryUri}` + } + } + }); + ecrRepo.grantPullPush(project.role); + (_b = project.role) === null || _b === void 0 ? void 0 : _b.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonEC2ContainerRegistryPowerUser')); + const sourceOutput = new codepipeline.Artifact(); + const buildOutput = new codepipeline.Artifact(); + /** + * aws secretsmanager create-secret --name '/github/token' --secret-string {your-token} + * or set the token with oauthToken: cdk.SecretValue.plainText(''), + */ + const sourceAction = new codepipeline_actions.GitHubSourceAction({ + actionName: 'GitHub_Source', + owner: 'engel80', + repo: 'fargate-restapi-local', + branch: 'master', + oauthToken: cdk.SecretValue.secretsManager("/github/token"), + output: sourceOutput + }); + const buildAction = new codepipeline_actions.CodeBuildAction({ + actionName: 'CodeBuild', + project, + input: sourceOutput, + outputs: [buildOutput], + }); + const manualApprovalAction = new codepipeline_actions.ManualApprovalAction({ + actionName: 'Approve', + }); + const deployAction = new codepipeline_actions.EcsDeployAction({ + actionName: 'DeployAction', + service: service, + imageFile: new codepipeline.ArtifactPath(buildOutput, `imagedefinitions.json`) + }); + new codepipeline.Pipeline(this, 'ecs-deploy-pipeline', { + pipelineName: `ecs-deploy-${service.serviceName}`, + stages: [ + { + stageName: 'Source', + actions: [sourceAction], + }, + { + stageName: 'Build', + actions: [buildAction], + }, + { + stageName: 'Approve', + actions: [manualApprovalAction], + }, + { + stageName: 'Deploy', + actions: [deployAction], + } + ] + }); + } +} +exports.EcsCodeDeployStack = EcsCodeDeployStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWNvZGVkZXBsb3ktc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2RlLXBpcGVsaW5lL2xpYi9lY3MtY29kZWRlcGxveS1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWdEO0FBQ2hELGlEQUFtQztBQUNuQyx5REFBMkM7QUFFM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHFFQUF1RDtBQUN2RCwyRUFBNkQ7QUFDN0QsdUVBQXlEO0FBQ3pELDJGQUE2RTtBQUk3RSxpRkFBNEU7QUFDNUUseUNBQTBDO0FBTzFDOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0RSxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsbUJBQVUsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMxSCxjQUFjLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsbUJBQVUsZ0JBQWdCLENBQUM7U0FDM0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcs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UTtvQkFDbkIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjtnQkFDRDtvQkFDSSxTQUFTLEVBQUUsT0FBTztvQkFDbEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6QjtnQkFDRDtvQkFDSSxTQUFTLEVBQUUsU0FBUztvQkFDcEIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDO2dCQUNEO29CQUNJLFNBQVMsRUFBRSxRQUFRO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQzFCO2FBQ0o7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFoSEQsZ0RBZ0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjb2RlYnVpbGQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZSc7XG5pbXBvcnQgKiBhcyBjb2RlY29tbWl0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlY29tbWl0JztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZV9hY3Rpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9ucyc7XG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVjc0NvZGVEZXBsb3lTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gICAgc3RhZ2U6IHN0cmluZztcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuLyoqXG4gKiBTU00gcGFyYW1ldGVyczpcbiAqIC9jZGstZWNzLWZhcmdhdGUvZWNyLXJlcG8tYXJuXG4gKiAvY2RrLWVjcy1mYXJnYXRlL2Vjci1yZXBvLW5hbWVcbiAqIC9jZGstZWNzLWZhcmdhdGUvY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkXG4gKiAvY2RrLWVjcy1mYXJnYXRlL2NsdXN0ZXItbmFtZVxuICogL2Nkay1lY3MtZmFyZ2F0ZS9jb2RlY29tbWl0LWFyblxuICovXG5leHBvcnQgY2xhc3MgRWNzQ29kZURlcGxveVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFY3NDb2RlRGVwbG95U3RhY2tQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgICAgICBjb25zdCBlY3JSZXBvID0gZWNyLlJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlBdHRyaWJ1dGVzKHRoaXMsICdlY3ItcmVwbycsIHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnlBcm46IGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2Vjci1yZXBvLWFybmApIH0pLFxuICAgICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2Vjci1yZXBvLW5hbWVgKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xuICAgICAgICBjb25zdCB2cGMgPSBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ3ZwYycsIHsgdnBjSWQgfSk7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJTZ0lkID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCk7XG4gICAgICAgIGNvbnN0IGVjc1NlY3VyaXR5R3JvdXAgPSBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCBjbHVzdGVyU2dJZCk7XG5cbiAgICAgICAgY29uc3QgY2x1c3RlciA9IGVjcy5DbHVzdGVyLmZyb21DbHVzdGVyQXR0cmlidXRlcyh0aGlzLCAnZWNzLWZhcmdhdGUtY2x1c3RlcicsIHtcbiAgICAgICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YCxcbiAgICAgICAgICAgIHZwYyxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbZWNzU2VjdXJpdHlHcm91cF1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBlY3MuRmFyZ2F0ZVNlcnZpY2UuZnJvbUZhcmdhdGVTZXJ2aWNlQXR0cmlidXRlcyh0aGlzLCAnZmFyZ2F0ZS1jbHVzdGVyJywge1xuICAgICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBjZGsuTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRnJvbUxvb2t1cCh0aGlzLCBgJHtTU01fUFJFRklYfS9jbHVzdGVyLW5hbWVgKSB9KVxuICAgICAgICB9KSBhcyBJQmFzZVNlcnZpY2U7XG5cbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvZGVjb21taXQuUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeUFybih0aGlzLCBgJHtzZXJ2aWNlTmFtZX0tY29kZWNvbW1pdC1hcm5gLFxuICAgICAgICAgICAgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY29kZWNvbW1pdC1hcm5gKSB9KSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfNCxcbiAgICAgICAgICogYnVpbGRJbWFnZTogY29kZWJ1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ3B1YmxpYy5lY3IuYXdzL2gxYTVzOWg4L2FscGluZTpsYXRlc3QnKVxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdCh0aGlzLCBgY2ItcHJvamVjdC0ke3NlcnZpY2VOYW1lfWAsIHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBgJHtzZXJ2aWNlTmFtZX0tYnVpbGRgLFxuICAgICAgICAgICAgc291cmNlOiBjb2RlYnVpbGQuU291cmNlLmNvZGVDb21taXQoeyByZXBvc2l0b3J5IH0pLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBidWlsZEltYWdlOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMCxcbiAgICAgICAgICAgICAgICBwcml2aWxlZ2VkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21Tb3VyY2VGaWxlbmFtZSgnLi9idWlsZHNwZWMueWFtbCcpLFxuICAgICAgICAgICAgYmFkZ2U6IHRydWUsXG4gICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICdBQ0NPVU5UX0lEJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcHM/LmVudj8uYWNjb3VudFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ0NMVVNURVJfTkFNRSc6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGAke3NlcnZpY2UuY2x1c3Rlci5jbHVzdGVyTmFtZX1gXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnU0VSVklDRV9OQU1FJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYCR7c2VydmljZS5zZXJ2aWNlTmFtZX1gXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnRUNSX1JFUE9fVVJJJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYCR7ZWNyUmVwby5yZXBvc2l0b3J5VXJpfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2gocHJvamVjdC5yb2xlISk7XG4gICAgICAgIHByb2plY3Qucm9sZT8uYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UG93ZXJVc2VyJykpO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZU91dHB1dCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKTtcbiAgICAgICAgY29uc3QgYnVpbGRPdXRwdXQgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGF3cyBzZWNyZXRzbWFuYWdlciBjcmVhdGUtc2VjcmV0IC0tbmFtZSAnL2dpdGh1Yi90b2tlbicgLS1zZWNyZXQtc3RyaW5nIHt5b3VyLXRva2VufVxuICAgICAgICAgKiBvciBzZXQgdGhlIHRva2VuIHdpdGggb2F1dGhUb2tlbjogY2RrLlNlY3JldFZhbHVlLnBsYWluVGV4dCgnPHBsYWluLXRleHQ+JyksXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBzb3VyY2VBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuR2l0SHViU291cmNlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6ICdHaXRIdWJfU291cmNlJyxcbiAgICAgICAgICAgIG93bmVyOiAnZW5nZWw4MCcsXG4gICAgICAgICAgICByZXBvOiAnZmFyZ2F0ZS1yZXN0YXBpLWxvY2FsJyxcbiAgICAgICAgICAgIGJyYW5jaDogJ21hc3RlcicsXG4gICAgICAgICAgICBvYXV0aFRva2VuOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoXCIvZ2l0aHViL3Rva2VuXCIpLFxuICAgICAgICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYnVpbGRBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6ICdDb2RlQnVpbGQnLFxuICAgICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICAgIGlucHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgICAgICAgICBvdXRwdXRzOiBbYnVpbGRPdXRwdXRdLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbWFudWFsQXBwcm92YWxBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuTWFudWFsQXBwcm92YWxBY3Rpb24oe1xuICAgICAgICAgICAgYWN0aW9uTmFtZTogJ0FwcHJvdmUnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVwbG95QWN0aW9uID0gbmV3IGNvZGVwaXBlbGluZV9hY3Rpb25zLkVjc0RlcGxveUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiAnRGVwbG95QWN0aW9uJyxcbiAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICBpbWFnZUZpbGU6IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoKGJ1aWxkT3V0cHV0LCBgaW1hZ2VkZWZpbml0aW9ucy5qc29uYClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IGNvZGVwaXBlbGluZS5QaXBlbGluZSh0aGlzLCAnZWNzLWRlcGxveS1waXBlbGluZScsIHtcbiAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogYGVjcy1kZXBsb3ktJHtzZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzdGFnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YWdlTmFtZTogJ1NvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtzb3VyY2VBY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZU5hbWU6ICdCdWlsZCcsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtidWlsZEFjdGlvbl0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YWdlTmFtZTogJ0FwcHJvdmUnLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbbWFudWFsQXBwcm92YWxBY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZU5hbWU6ICdEZXBsb3knLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbZGVwbG95QWN0aW9uXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/ts.out/config.d.ts b/ts.out/config.d.ts new file mode 100644 index 0000000..316142e --- /dev/null +++ b/ts.out/config.d.ts @@ -0,0 +1,18 @@ +import * as cdk from 'aws-cdk-lib'; +/** + * /cdk-ecs-fargate/vpc-id + * + * ecs-fargate-cluster: + * /cdk-ecs-fargate/cluster-capacityprovider-name + * /cdk-ecs-fargate/cluster-securitygroup-id + * + * iam-role: + * /cdk-ecs-fargate/task-execution-role-arn + * /cdk-ecs-fargate/default-task-role-arn + * + */ +export declare const SSM_PREFIX = "/cdk-ecs-fargate"; +export declare const DEFAULT_STAGE = "dev"; +export interface StackCommonProps extends cdk.StackProps { + stage: string; +} diff --git a/ts.out/config.js b/ts.out/config.js new file mode 100644 index 0000000..75adcb3 --- /dev/null +++ b/ts.out/config.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DEFAULT_STAGE = exports.SSM_PREFIX = void 0; +/** + * /cdk-ecs-fargate/vpc-id + * + * ecs-fargate-cluster: + * /cdk-ecs-fargate/cluster-capacityprovider-name + * /cdk-ecs-fargate/cluster-securitygroup-id + * + * iam-role: + * /cdk-ecs-fargate/task-execution-role-arn + * /cdk-ecs-fargate/default-task-role-arn + * + */ +exports.SSM_PREFIX = '/cdk-ecs-fargate'; +exports.DEFAULT_STAGE = 'dev'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7QUFHaEMsUUFBQSxhQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiAvY2RrLWVjcy1mYXJnYXRlL3ZwYy1pZFxuICogXG4gKiBlY3MtZmFyZ2F0ZS1jbHVzdGVyOlxuICogICAvY2RrLWVjcy1mYXJnYXRlL2NsdXN0ZXItY2FwYWNpdHlwcm92aWRlci1uYW1lXG4gKiAgIC9jZGstZWNzLWZhcmdhdGUvY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkXG4gKiBcbiAqIGlhbS1yb2xlOlxuICogICAvY2RrLWVjcy1mYXJnYXRlL3Rhc2stZXhlY3V0aW9uLXJvbGUtYXJuXG4gKiAgIC9jZGstZWNzLWZhcmdhdGUvZGVmYXVsdC10YXNrLXJvbGUtYXJuXG4gKiBcbiAqL1xuZXhwb3J0IGNvbnN0IFNTTV9QUkVGSVggPSAnL2Nkay1lY3MtZmFyZ2F0ZSc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RBR0UgPSAnZGV2JztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0NvbW1vblByb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICAgIHN0YWdlOiBzdHJpbmc7XG59Il19 \ No newline at end of file diff --git a/ts.out/ecr-codecommit/bin/index.d.ts b/ts.out/ecr-codecommit/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/ecr-codecommit/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/ecr-codecommit/bin/index.js b/ts.out/ecr-codecommit/bin/index.js new file mode 100644 index 0000000..86d1cb0 --- /dev/null +++ b/ts.out/ecr-codecommit/bin/index.js @@ -0,0 +1,40 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const ecr_codecommit_stack_1 = require("../lib/ecr-codecommit-stack"); +const config_1 = require("../../config"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +const serviceName = `fargate-restapi-${stage}`; +new ecr_codecommit_stack_1.EcrCodeCommitStack(app, `ecr-${serviceName}`, { + env, + stage, + serviceName, + description: `ECR: ${serviceName}`, + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3ItY29kZWNvbW1pdC9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyxzRUFBaUU7QUFDakUseUNBQTZDO0FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sR0FBRyxHQUFHO0lBQ1IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO0lBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtDQUN6QyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksc0JBQWEsQ0FBQztBQUMvRCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsS0FBSyxFQUFFLENBQUE7QUFFOUMsSUFBSSx5Q0FBa0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxXQUFXLEVBQUUsRUFBRTtJQUM5QyxHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVc7SUFDWCxXQUFXLEVBQUUsUUFBUSxXQUFXLEVBQUU7SUFDbEMscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgRWNyQ29kZUNvbW1pdFN0YWNrIH0gZnJvbSAnLi4vbGliL2Vjci1jb2RlY29tbWl0LXN0YWNrJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcblxyXG5jb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xyXG5jb25zdCBlbnYgPSB7XHJcbiAgICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxyXG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT05cclxufTtcclxuY29uc3Qgc3RhZ2UgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KCdzdGFnZScpIHx8IERFRkFVTFRfU1RBR0U7XHJcbmNvbnN0IHNlcnZpY2VOYW1lID0gYGZhcmdhdGUtcmVzdGFwaS0ke3N0YWdlfWBcclxuXHJcbm5ldyBFY3JDb2RlQ29tbWl0U3RhY2soYXBwLCBgZWNyLSR7c2VydmljZU5hbWV9YCwge1xyXG4gICAgZW52LFxyXG4gICAgc3RhZ2UsXHJcbiAgICBzZXJ2aWNlTmFtZSxcclxuICAgIGRlc2NyaXB0aW9uOiBgRUNSOiAke3NlcnZpY2VOYW1lfWAsXHJcbiAgICB0ZXJtaW5hdGlvblByb3RlY3Rpb246IHN0YWdlIT09REVGQVVMVF9TVEFHRVxyXG59KTtcclxuIl19 \ No newline at end of file diff --git a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts new file mode 100644 index 0000000..c120464 --- /dev/null +++ b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts @@ -0,0 +1,12 @@ +import { Construct } from 'constructs'; +import { Stack } from 'aws-cdk-lib'; +import { StackCommonProps } from '../../config'; +export interface EcrStackProps extends StackCommonProps { + serviceName: string; +} +/** + * Build 'app/Dockerfile' and push to ECR for X86 and ARM + */ +export declare class EcrCodeCommitStack extends Stack { + constructor(scope: Construct, id: string, props: EcrStackProps); +} diff --git a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js new file mode 100644 index 0000000..4817230 --- /dev/null +++ b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js @@ -0,0 +1,77 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EcrCodeCommitStack = void 0; +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const path = __importStar(require("path")); +const codecommit = __importStar(require("aws-cdk-lib/aws-codecommit")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const ecr = __importStar(require("aws-cdk-lib/aws-ecr")); +const assets = __importStar(require("aws-cdk-lib/aws-ecr-assets")); +const ecrdeploy = __importStar(require("cdk-ecr-deployment")); +const config_1 = require("../../config"); +/** + * Build 'app/Dockerfile' and push to ECR for X86 and ARM + */ +class EcrCodeCommitStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + super(scope, id, props); + const stage = props.stage; + const serviceName = props.serviceName; + const assetX86 = new assets.DockerImageAsset(this, 'ecr-image-x86', { + directory: path.join(__dirname, "../../", "app") + }); + const ecrRepo = new ecr.Repository(this, `${serviceName}`, { + repositoryName: `${serviceName}` + }); + new ecrdeploy.ECRDeployment(this, 'ecr-deploy-x86', { + src: new ecrdeploy.DockerImageName(assetX86.imageUri), + dest: new ecrdeploy.DockerImageName(`${ecrRepo.repositoryUriForTag('latest')}`), + }); + const assetArm = new assets.DockerImageAsset(this, 'ecr-image-arm', { + directory: path.join(__dirname, "../../", "app"), + platform: assets.Platform.LINUX_ARM64, + }); + const ecrArmRepo = new ecr.Repository(this, `${serviceName}-arm`, { + repositoryName: `${serviceName}-arm` + }); + new ecrdeploy.ECRDeployment(this, 'ecr-deploy-arm', { + src: new ecrdeploy.DockerImageName(assetArm.imageUri), + dest: new ecrdeploy.DockerImageName(`${ecrArmRepo.repositoryUriForTag('latest')}`), + }); + const codecommitRepo = new codecommit.Repository(this, `${serviceName}-codecommit`, { + repositoryName: `${serviceName}` + }); + aws_cdk_lib_1.Tags.of(codecommitRepo).add('Stage', stage); + aws_cdk_lib_1.Tags.of(ecrRepo).add('Stage', stage); + aws_cdk_lib_1.Tags.of(ecrArmRepo).add('Stage', stage); + new aws_cdk_lib_1.CfnOutput(this, 'URI', { value: ecrRepo.repositoryUri }); + new aws_cdk_lib_1.CfnOutput(this, 'URIARM', { value: ecrArmRepo.repositoryUri }); + new ssm.StringParameter(this, 'ssm-codecommit-arn', { parameterName: `${config_1.SSM_PREFIX}/codecommit-arn`, stringValue: codecommitRepo.repositoryArn }); + new ssm.StringParameter(this, 'ssm-ecr-repo-name', { parameterName: `${config_1.SSM_PREFIX}/ecr-repo-name`, stringValue: ecrRepo.repositoryName }); + new ssm.StringParameter(this, 'ssm-ecr-repo-arn', { parameterName: `${config_1.SSM_PREFIX}/ecr-repo-arn`, stringValue: ecrRepo.repositoryArn }); + new ssm.StringParameter(this, 'ssm-ecr-armrepo-name', { parameterName: `${config_1.SSM_PREFIX}/ecr-armrepo-name`, stringValue: ecrArmRepo.repositoryUri }); + new ssm.StringParameter(this, 'ssm-ecr-armrepo-arn', { parameterName: `${config_1.SSM_PREFIX}/ecr-armrepo-arn`, stringValue: ecrArmRepo.repositoryArn }); + new aws_cdk_lib_1.CfnOutput(this, 'CodeCommitRepoUrl', { value: codecommitRepo.repositoryCloneUrlHttp }); + } +} +exports.EcrCodeCommitStack = EcrCodeCommitStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLWNvZGVjb21taXQtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3ItY29kZWNvbW1pdC9saWIvZWNyLWNvZGVjb21taXQtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUFxRDtBQUNyRCwyQ0FBNkI7QUFDN0IsdUVBQXlEO0FBQ3pELHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsbUVBQXFEO0FBQ3JELDhEQUFnRDtBQUVoRCx5Q0FBNEQ7QUFLNUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBRXRDLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFO1lBQ3ZELGNBQWMsRUFBRSxHQUFHLFdBQVcsRUFBRTtTQUNuQyxDQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ2hELEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyRCxJQUFJLEVBQUUsSUFBSSxTQUFTLENB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LENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQUNKO0FBbERELGdEQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgeyBTdGFjaywgQ2ZuT3V0cHV0LCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgKiBhcyBjb2RlY29tbWl0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlY29tbWl0JztcclxuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xyXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XHJcbmltcG9ydCAqIGFzIGFzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyLWFzc2V0cyc7XHJcbmltcG9ydCAqIGFzIGVjcmRlcGxveSBmcm9tICdjZGstZWNyLWRlcGxveW1lbnQnO1xyXG5cclxuaW1wb3J0IHsgU3RhY2tDb21tb25Qcm9wcywgU1NNX1BSRUZJWCB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVjclN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja0NvbW1vblByb3BzIHtcclxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmc7XHJcbn1cclxuLyoqXHJcbiAqIEJ1aWxkICdhcHAvRG9ja2VyZmlsZScgYW5kIHB1c2ggdG8gRUNSIGZvciBYODYgYW5kIEFSTVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVjckNvZGVDb21taXRTdGFjayBleHRlbmRzIFN0YWNrIHtcclxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFY3JTdGFja1Byb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0YWdlID0gcHJvcHMuc3RhZ2U7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcclxuXHJcbiAgICAgICAgY29uc3QgYXNzZXRYODYgPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ2Vjci1pbWFnZS14ODYnLCB7XHJcbiAgICAgICAgICAgIGRpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9cIiwgXCJhcHBcIilcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBlY3JSZXBvID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIGAke3NlcnZpY2VOYW1lfWAsIHtcclxuICAgICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IGAke3NlcnZpY2VOYW1lfWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXcgZWNyZGVwbG95LkVDUkRlcGxveW1lbnQodGhpcywgJ2Vjci1kZXBsb3kteDg2Jywge1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBlY3JkZXBsb3kuRG9ja2VySW1hZ2VOYW1lKGFzc2V0WDg2LmltYWdlVXJpKSxcclxuICAgICAgICAgICAgZGVzdDogbmV3IGVjcmRlcGxveS5Eb2NrZXJJbWFnZU5hbWUoYCR7ZWNyUmVwby5yZXBvc2l0b3J5VXJpRm9yVGFnKCdsYXRlc3QnKX1gKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgYXNzZXRBcm0gPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ2Vjci1pbWFnZS1hcm0nLCB7XHJcbiAgICAgICAgICAgIGRpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9cIiwgXCJhcHBcIiksXHJcbiAgICAgICAgICAgIHBsYXRmb3JtOiBhc3NldHMuUGxhdGZvcm0uTElOVVhfQVJNNjQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZWNyQXJtUmVwbyA9IG5ldyBlY3IuUmVwb3NpdG9yeSh0aGlzLCBgJHtzZXJ2aWNlTmFtZX0tYXJtYCwge1xyXG4gICAgICAgICAgICByZXBvc2l0b3J5TmFtZTogYCR7c2VydmljZU5hbWV9LWFybWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXcgZWNyZGVwbG95LkVDUkRlcGxveW1lbnQodGhpcywgJ2Vjci1kZXBsb3ktYXJtJywge1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBlY3JkZXBsb3kuRG9ja2VySW1hZ2VOYW1lKGFzc2V0QXJtLmltYWdlVXJpKSxcclxuICAgICAgICAgICAgZGVzdDogbmV3IGVjcmRlcGxveS5Eb2NrZXJJbWFnZU5hbWUoYCR7ZWNyQXJtUmVwby5yZXBvc2l0b3J5VXJpRm9yVGFnKCdsYXRlc3QnKX1gKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY29kZWNvbW1pdFJlcG8gPSBuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHRoaXMsIGAke3NlcnZpY2VOYW1lfS1jb2RlY29tbWl0YCwge1xyXG4gICAgICAgICAgICByZXBvc2l0b3J5TmFtZTogYCR7c2VydmljZU5hbWV9YFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBUYWdzLm9mKGNvZGVjb21taXRSZXBvKS5hZGQoJ1N0YWdlJywgc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoZWNyUmVwbykuYWRkKCdTdGFnZScsIHN0YWdlKTtcclxuICAgICAgICBUYWdzLm9mKGVjckFybVJlcG8pLmFkZCgnU3RhZ2UnLCBzdGFnZSk7XHJcblxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1VSSScsIHsgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdVUklBUk0nLCB7IHZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlVcmkgfSk7XHJcblxyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tY29kZWNvbW1pdC1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NvZGVjb21taXQtYXJuYCwgc3RyaW5nVmFsdWU6IGNvZGVjb21taXRSZXBvLnJlcG9zaXRvcnlBcm4gfSk7XHJcblxyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLXJlcG8tbmFtZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZWNyLXJlcG8tbmFtZWAsIHN0cmluZ1ZhbHVlOiBlY3JSZXBvLnJlcG9zaXRvcnlOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLXJlcG8tYXJuJywgeyBwYXJhbWV0ZXJOYW1lOiBgJHtTU01fUFJFRklYfS9lY3ItcmVwby1hcm5gLCBzdHJpbmdWYWx1ZTogZWNyUmVwby5yZXBvc2l0b3J5QXJuIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLWFybXJlcG8tbmFtZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZWNyLWFybXJlcG8tbmFtZWAsIHN0cmluZ1ZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlVcmkgfSk7XHJcbiAgICAgICAgbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1lY3ItYXJtcmVwby1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2Vjci1hcm1yZXBvLWFybmAsIHN0cmluZ1ZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlBcm4gfSk7XHJcblxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0NvZGVDb21taXRSZXBvVXJsJywgeyB2YWx1ZTogY29kZWNvbW1pdFJlcG8ucmVwb3NpdG9yeUNsb25lVXJsSHR0cCB9KTtcclxuICAgIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/bin/index.d.ts b/ts.out/ecs-fargate-cluster/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/ecs-fargate-cluster/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/ecs-fargate-cluster/bin/index.js b/ts.out/ecs-fargate-cluster/bin/index.js new file mode 100644 index 0000000..f4eb09f --- /dev/null +++ b/ts.out/ecs-fargate-cluster/bin/index.js @@ -0,0 +1,39 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const config_1 = require("../../config"); +const cluster_config_1 = require("../lib/cluster-config"); +const ecs_fargate_cluster_stack_1 = require("../lib/ecs-fargate-cluster-stack"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION, +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +new ecs_fargate_cluster_stack_1.EcsFargateClusterStack(app, `ecs-fargate-cluster-${cluster_config_1.CLUSTER_NAME}-${stage}`, { + env, + stage, + description: `ECS Fargate cluster, cluster name: ${cluster_config_1.CLUSTER_NAME}-${stage}`, + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBRW5DLHlDQUE2QztBQUM3QywwREFBcUQ7QUFDckQsZ0ZBQTBFO0FBRTFFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sR0FBRyxHQUFHO0lBQ1IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO0lBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtDQUN6QyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksc0JBQWEsQ0FBQztBQUUvRCxJQUFJLGtEQUFzQixDQUFDLEdBQUcsRUFBRSx1QkFBdUIsNkJBQVksSUFBSSxLQUFLLEVBQUUsRUFBRTtJQUM1RSxHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVcsRUFBRSxzQ0FBc0MsNkJBQVksSUFBSSxLQUFLLEVBQUU7SUFDMUUscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCB7IERFRkFVTFRfU1RBR0UgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgQ0xVU1RFUl9OQU1FIH0gZnJvbSAnLi4vbGliL2NsdXN0ZXItY29uZmlnJztcbmltcG9ydCB7IEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWZhcmdhdGUtY2x1c3Rlci1zdGFjayc7XG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5jb25zdCBlbnYgPSB7XG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbn07XG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcblxubmV3IEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2soYXBwLCBgZWNzLWZhcmdhdGUtY2x1c3Rlci0ke0NMVVNURVJfTkFNRX0tJHtzdGFnZX1gLCB7XG4gICAgZW52LFxuICAgIHN0YWdlLFxuICAgIGRlc2NyaXB0aW9uOiBgRUNTIEZhcmdhdGUgY2x1c3RlciwgY2x1c3RlciBuYW1lOiAke0NMVVNURVJfTkFNRX0tJHtzdGFnZX1gLFxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts b/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts new file mode 100644 index 0000000..b0ed70b --- /dev/null +++ b/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts @@ -0,0 +1,3 @@ +#!/usr/bin/env node +export declare const CLUSTER_NAME = "fargate"; +export declare const INSTANCE_TYPE = "c5.xlarge"; diff --git a/ts.out/ecs-fargate-cluster/lib/cluster-config.js b/ts.out/ecs-fargate-cluster/lib/cluster-config.js new file mode 100644 index 0000000..2400c9e --- /dev/null +++ b/ts.out/ecs-fargate-cluster/lib/cluster-config.js @@ -0,0 +1,7 @@ +#!/usr/bin/env node +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.INSTANCE_TYPE = exports.CLUSTER_NAME = void 0; +exports.CLUSTER_NAME = 'fargate'; +exports.INSTANCE_TYPE = 'c5.xlarge'; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRWEsUUFBQSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBRXpCLFFBQUEsYUFBYSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuZXhwb3J0IGNvbnN0IENMVVNURVJfTkFNRSA9ICdmYXJnYXRlJztcblxuZXhwb3J0IGNvbnN0IElOU1RBTkNFX1RZUEUgPSAnYzUueGxhcmdlJztcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts new file mode 100644 index 0000000..286570f --- /dev/null +++ b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts @@ -0,0 +1,9 @@ +import { Stack } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import { StackCommonProps } from '../../config'; +/** + * Create ECS Fargate cluster and shared security group for ALB ingress + */ +export declare class EcsFargateClusterStack extends Stack { + constructor(scope: Construct, id: string, props: StackCommonProps); +} diff --git a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js new file mode 100644 index 0000000..b1a0d53 --- /dev/null +++ b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js @@ -0,0 +1,61 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EcsFargateClusterStack = void 0; +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); +const cluster_config_1 = require("../lib/cluster-config"); +const config_1 = require("../../config"); +/** + * Create ECS Fargate cluster and shared security group for ALB ingress + */ +class EcsFargateClusterStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + super(scope, id, props); + const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); + const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); + const clusterName = `${cluster_config_1.CLUSTER_NAME}-${props.stage}`; + const cluster = new ecs.Cluster(this, 'ecs-cluster', { + vpc, + clusterName, + containerInsights: true, + }); + const securityGroupName = `ecssg-${clusterName}`; + const ecsSecurityGroup = new ec2.SecurityGroup(this, 'ecs-security-group', { + vpc, + securityGroupName, + description: `ECS Fargate shared security group for ALB ingress, cluster: ${cluster}`, + }); + aws_cdk_lib_1.Tags.of(ecsSecurityGroup).add('Stage', props.stage); + aws_cdk_lib_1.Tags.of(ecsSecurityGroup).add('Name', securityGroupName); + new aws_cdk_lib_1.CfnOutput(this, 'Cluster', { value: cluster.clusterName }); + new aws_cdk_lib_1.CfnOutput(this, 'ECS Security Group ID', { value: ecsSecurityGroup.securityGroupId }); + // cluster-name and cluster-arn is used for deployment pipeline + new ssm.StringParameter(this, 'ssm-cluster-name', { parameterName: `${config_1.SSM_PREFIX}/cluster-name`, stringValue: cluster.clusterName }); + new ssm.StringParameter(this, 'ssm-cluster-arn', { parameterName: `${config_1.SSM_PREFIX}/cluster-arn`, stringValue: cluster.clusterArn }); + // cluster-securitygroup-id is used to add inboud from ALB to Fargate service + new ssm.StringParameter(this, 'ssm-cluster-securitygroup-id', { parameterName: `${config_1.SSM_PREFIX}/cluster-securitygroup-id`, stringValue: ecsSecurityGroup.securityGroupId }); + } +} +exports.EcsFargateClusterStack = EcsFargateClusterStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGUtY2x1c3Rlci1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Vjcy1mYXJnYXRlLWNsdXN0ZXIvbGliL2Vjcy1mYXJnYXRlLWNsdXN0ZXItc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFxRDtBQUNyRCx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUczQywwREFBcUQ7QUFDckQseUNBQTREO0FBRTVEOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxtQkFBSztJQUM3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXZELE1BQU0sV0FBVyxHQUFHLEdBQUcsNkJBQVksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDakQsR0FBRztZQUNILFdBQVc7WUFDWCxpQkFBaUIsRUFBRSxJQUFJO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsU0FBUyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDdkUsR0FBRztZQUNILGlCQUFpQjtZQUNqQixXQUFXLEVBQUUsK0RBQStELE9BQU8sRUFBRTtTQUN4RixDQUFDLENBQUM7UUFDSCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGtCQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUV4RiwrREFBK0Q7UUFDL0QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckksSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFbEksNkVBQTZFO1FBQzdFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxtQkFBVSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUM5SyxDQUFDO0NBQ0o7QUFqQ0Qsd0RBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIENmbk91dHB1dCwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcblxyXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi9saWIvY2x1c3Rlci1jb25maWcnO1xyXG5pbXBvcnQgeyBTdGFja0NvbW1vblByb3BzLCBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgRUNTIEZhcmdhdGUgY2x1c3RlciBhbmQgc2hhcmVkIHNlY3VyaXR5IGdyb3VwIGZvciBBTEIgaW5ncmVzc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tDb21tb25Qcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xyXG5cclxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xyXG4gICAgICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAndnBjJywgeyB2cGNJZCB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY2x1c3Rlck5hbWUgPSBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YDtcclxuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHRoaXMsICdlY3MtY2x1c3RlcicsIHtcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBjbHVzdGVyTmFtZSxcclxuICAgICAgICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBOYW1lID0gYGVjc3NnLSR7Y2x1c3Rlck5hbWV9YDtcclxuICAgICAgICBjb25zdCBlY3NTZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCB7XHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cE5hbWUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRUNTIEZhcmdhdGUgc2hhcmVkIHNlY3VyaXR5IGdyb3VwIGZvciBBTEIgaW5ncmVzcywgY2x1c3RlcjogJHtjbHVzdGVyfWAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgVGFncy5vZihlY3NTZWN1cml0eUdyb3VwKS5hZGQoJ1N0YWdlJywgcHJvcHMuc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoZWNzU2VjdXJpdHlHcm91cCkuYWRkKCdOYW1lJywgc2VjdXJpdHlHcm91cE5hbWUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0NsdXN0ZXInLCB7IHZhbHVlOiBjbHVzdGVyLmNsdXN0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0VDUyBTZWN1cml0eSBHcm91cCBJRCcsIHt2YWx1ZTogZWNzU2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWR9KTtcclxuXHJcbiAgICAgICAgLy8gY2x1c3Rlci1uYW1lIGFuZCBjbHVzdGVyLWFybiBpcyB1c2VkIGZvciBkZXBsb3ltZW50IHBpcGVsaW5lXHJcbiAgICAgICAgbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1jbHVzdGVyLW5hbWUnLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItbmFtZWAsIHN0cmluZ1ZhbHVlOiBjbHVzdGVyLmNsdXN0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tY2x1c3Rlci1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItYXJuYCwgc3RyaW5nVmFsdWU6IGNsdXN0ZXIuY2x1c3RlckFybiB9KTtcclxuXHJcbiAgICAgICAgLy8gY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkIGlzIHVzZWQgdG8gYWRkIGluYm91ZCBmcm9tIEFMQiB0byBGYXJnYXRlIHNlcnZpY2VcclxuICAgICAgICBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnc3NtLWNsdXN0ZXItc2VjdXJpdHlncm91cC1pZCcsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCwgc3RyaW5nVmFsdWU6IGVjc1NlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-service-restapi/bin/index.d.ts b/ts.out/ecs-fargate-service-restapi/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/ecs-fargate-service-restapi/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/ecs-fargate-service-restapi/bin/index.js b/ts.out/ecs-fargate-service-restapi/bin/index.js new file mode 100644 index 0000000..f723788 --- /dev/null +++ b/ts.out/ecs-fargate-service-restapi/bin/index.js @@ -0,0 +1,38 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const config_1 = require("../../config"); +const ecs_fargate_service_restapi_stack_1 = require("../lib/ecs-fargate-service-restapi-stack"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +new ecs_fargate_service_restapi_stack_1.FargateRestAPIServiceStack(app, `ecs-fargate-service-restapi-${stage}`, { + env, + stage, + description: 'ECS Fargate service for RESTful API with ALB', + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGkvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMseUNBQTZDO0FBQzdDLGdHQUFzRjtBQUV0RixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSw4REFBMEIsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLEtBQUssRUFBRSxFQUFFO0lBQ3hFLEdBQUc7SUFDSCxLQUFLO0lBQ0wsV0FBVyxFQUFFLDhDQUE4QztJQUMzRCxxQkFBcUIsRUFBRSxLQUFLLEtBQUcsc0JBQWE7Q0FDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxyXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NUQUdFIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuaW1wb3J0IHsgRmFyZ2F0ZVJlc3RBUElTZXJ2aWNlU3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpLXN0YWNrJztcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XHJcbmNvbnN0IGVudiA9IHtcclxuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXHJcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTlxyXG59O1xyXG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcclxuXHJcbm5ldyBGYXJnYXRlUmVzdEFQSVNlcnZpY2VTdGFjayhhcHAsIGBlY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGktJHtzdGFnZX1gLCB7XHJcbiAgICBlbnYsXHJcbiAgICBzdGFnZSxcclxuICAgIGRlc2NyaXB0aW9uOiAnRUNTIEZhcmdhdGUgc2VydmljZSBmb3IgUkVTVGZ1bCBBUEkgd2l0aCBBTEInLFxyXG4gICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBzdGFnZSE9PURFRkFVTFRfU1RBR0VcclxufSk7XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts new file mode 100644 index 0000000..772da03 --- /dev/null +++ b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts @@ -0,0 +1,10 @@ +import { Construct } from 'constructs'; +import { Stack } from 'aws-cdk-lib'; +import { StackCommonProps } from '../../config'; +/** + * Crearte Fargate Service, Auto Scaling, ALB, and Log Group. + * Set the ALB options for the production-level. + */ +export declare class FargateRestAPIServiceStack extends Stack { + constructor(scope: Construct, id: string, props: StackCommonProps); +} diff --git a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js new file mode 100644 index 0000000..9dabdad --- /dev/null +++ b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js @@ -0,0 +1,142 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FargateRestAPIServiceStack = void 0; +const cdk = __importStar(require("aws-cdk-lib")); +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); +const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); +const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2")); +const logs = __importStar(require("aws-cdk-lib/aws-logs")); +const iam = __importStar(require("aws-cdk-lib/aws-iam")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); +const config_1 = require("../../config"); +/** + * Crearte Fargate Service, Auto Scaling, ALB, and Log Group. + * Set the ALB options for the production-level. + */ +class FargateRestAPIServiceStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + var _a, _b; + super(scope, id, props); + const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); + const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); + const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); + const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); + const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { + clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, + vpc, + securityGroups: [ecsSecurityGroup] + }); + const serviceName = 'fargate-restapi'; + const containerName = `${serviceName}-container`; + const applicationPort = 8080; + const executionRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/task-execution-role-arn`); + const taskRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/default-task-role-arn`); + const taskDefinition = new ecs.TaskDefinition(this, 'fargate-task-definition', { + cpu: '1024', + memoryMiB: '2048', + compatibility: ecs.Compatibility.FARGATE, + family: `${serviceName}-task`, + executionRole: iam.Role.fromRoleArn(this, 'task-execution-role', cdk.Lazy.string({ produce: () => executionRoleArn })), + taskRole: iam.Role.fromRoleArn(this, 'task-role', cdk.Lazy.string({ produce: () => taskRoleArn })) + }); + const regUrl = `${(_a = props.env) === null || _a === void 0 ? void 0 : _a.account}.dkr.ecr.${(_b = props.env) === null || _b === void 0 ? void 0 : _b.region}.amazonaws.com/fargate-restapi-${props.stage}:latest`; + const container = taskDefinition.addContainer('container-restapi', { + containerName, + image: ecs.ContainerImage.fromRegistry(regUrl), + // or build with /app folder asset + // import * as path from 'path'; + // image: ecs.ContainerImage.fromAsset(path.join(__dirname, "../../", "app")), + cpu: 1024, + memoryReservationMiB: 2048 + }); + container.addPortMappings({ containerPort: applicationPort, hostPort: applicationPort }); + const fargateservice = new ecs.FargateService(this, 'ecs-fargate-service', { + cluster, + serviceName: `${serviceName}-${props.stage}`, + taskDefinition, + enableExecuteCommand: true, + minHealthyPercent: 100, + maxHealthyPercent: 200, + healthCheckGracePeriod: aws_cdk_lib_1.Duration.seconds(0) // set the value as your application initialize time + }); + fargateservice.autoScaleTaskCount({ + minCapacity: 2, + maxCapacity: 100, + }).scaleOnCpuUtilization('cpuscaling', { + targetUtilizationPercent: 50, + scaleOutCooldown: aws_cdk_lib_1.Duration.seconds(60), + scaleInCooldown: aws_cdk_lib_1.Duration.seconds(120) + }); + const logGroup = new logs.LogGroup(this, 'loggroup', { + logGroupName: serviceName, + removalPolicy: cdk.RemovalPolicy.DESTROY, + retention: logs.RetentionDays.TWO_WEEKS, + }); + const albSecurityGroupName = `albsg-${serviceName}`; + const albSecurityGroup = new ec2.SecurityGroup(this, albSecurityGroupName, { + securityGroupName: albSecurityGroupName, + vpc, + allowAllOutbound: true, + description: `ALB security group for ${serviceName} Service` + }); + ecsSecurityGroup.addIngressRule(albSecurityGroup, ec2.Port.tcp(applicationPort), 'Allow from ALB'); + albSecurityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80), 'Allow any'); + const alb = new elbv2.ApplicationLoadBalancer(this, 'alb', { + securityGroup: albSecurityGroup, + vpc, + loadBalancerName: `alb-${serviceName}`, + internetFacing: true, + deletionProtection: false, + idleTimeout: cdk.Duration.seconds(30), + }); + alb.addListener('https-listener', { + protocol: elbv2.ApplicationProtocol.HTTP, + open: false, + }).addTargets('ec2-service-target', { + targetGroupName: `tg-${serviceName}`, + port: applicationPort, + protocol: elbv2.ApplicationProtocol.HTTP, + targets: [fargateservice.loadBalancerTarget({ + containerName: containerName, + containerPort: applicationPort, + })], + healthCheck: { + healthyThresholdCount: 2, + unhealthyThresholdCount: 5, + interval: aws_cdk_lib_1.Duration.seconds(31), + path: '/ping', + timeout: aws_cdk_lib_1.Duration.seconds(30), + }, + deregistrationDelay: aws_cdk_lib_1.Duration.seconds(15) + }); + aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Stage', props.stage); + aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Name', albSecurityGroupName); + new aws_cdk_lib_1.CfnOutput(this, 'Service', { value: fargateservice.serviceArn }); + new aws_cdk_lib_1.CfnOutput(this, 'TaskDefinition', { value: taskDefinition.family }); + new aws_cdk_lib_1.CfnOutput(this, 'LogGroup', { value: logGroup.logGroupName }); + new aws_cdk_lib_1.CfnOutput(this, 'ALB', { value: alb.loadBalancerDnsName }); + } +} +exports.FargateRestAPIServiceStack = FargateRestAPIServiceStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpL2xpYi9lY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGktc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyw2Q0FBK0Q7QUFDL0QseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyw4RUFBZ0U7QUFDaEUsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaUZBQTRFO0FBQzVFLHlDQUE0RDtBQUU1RDs7O0dBR0c7QUFDSCxNQUFhLDBCQUEyQixTQUFRLG1CQUFLO0lBQ2pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLDJCQUEyQixDQUFDLENBQUM7UUFDeEcsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RyxNQUFNLE9BQU8sR0FB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Q0FBQyxDQUFDO1FBQ3JFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0o7QUFqSEQsZ0VBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XHJcbmltcG9ydCB7IFN0YWNrLCBDZm5PdXRwdXQsIER1cmF0aW9uLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XHJcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcclxuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xyXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcclxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcblxyXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZyc7XHJcbmltcG9ydCB7IFN0YWNrQ29tbW9uUHJvcHMsIFNTTV9QUkVGSVggfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuLyoqXHJcbiAqIENyZWFydGUgRmFyZ2F0ZSBTZXJ2aWNlLCBBdXRvIFNjYWxpbmcsIEFMQiwgYW5kIExvZyBHcm91cC5cclxuICogU2V0IHRoZSBBTEIgb3B0aW9ucyBmb3IgdGhlIHByb2R1Y3Rpb24tbGV2ZWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RBUElTZXJ2aWNlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tDb21tb25Qcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xyXG5cclxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xyXG4gICAgICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAndnBjJywgeyB2cGNJZCB9KTtcclxuICAgICAgICBjb25zdCBjbHVzdGVyU2dJZCA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItc2VjdXJpdHlncm91cC1pZGApO1xyXG4gICAgICAgIGNvbnN0IGVjc1NlY3VyaXR5R3JvdXAgPSBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCBjbHVzdGVyU2dJZCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNsdXN0ZXIgPSBlY3MuQ2x1c3Rlci5mcm9tQ2x1c3RlckF0dHJpYnV0ZXModGhpcywgJ2Vjcy1mYXJnYXRlLWNsdXN0ZXInLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YCxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogW2Vjc1NlY3VyaXR5R3JvdXBdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSAnZmFyZ2F0ZS1yZXN0YXBpJ1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck5hbWUgPSBgJHtzZXJ2aWNlTmFtZX0tY29udGFpbmVyYFxyXG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uUG9ydCA9IDgwODA7XHJcblxyXG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvblJvbGVBcm4gPSBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRnJvbUxvb2t1cCh0aGlzLCBgJHtTU01fUFJFRklYfS90YXNrLWV4ZWN1dGlvbi1yb2xlLWFybmApO1xyXG4gICAgICAgIGNvbnN0IHRhc2tSb2xlQXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vZGVmYXVsdC10YXNrLXJvbGUtYXJuYCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5UYXNrRGVmaW5pdGlvbih0aGlzLCAnZmFyZ2F0ZS10YXNrLWRlZmluaXRpb24nLCB7XHJcbiAgICAgICAgICAgIGNwdTogJzEwMjQnLFxyXG4gICAgICAgICAgICBtZW1vcnlNaUI6ICcyMDQ4JyxcclxuICAgICAgICAgICAgY29tcGF0aWJpbGl0eTogZWNzLkNvbXBhdGliaWxpdHkuRkFSR0FURSxcclxuICAgICAgICAgICAgZmFtaWx5OiBgJHtzZXJ2aWNlTmFtZX0tdGFza2AsXHJcbiAgICAgICAgICAgIGV4ZWN1dGlvblJvbGU6IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICd0YXNrLWV4ZWN1dGlvbi1yb2xlJywgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gZXhlY3V0aW9uUm9sZUFybiB9KSksXHJcbiAgICAgICAgICAgIHRhc2tSb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAndGFzay1yb2xlJywgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gdGFza1JvbGVBcm4gfSkpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgcmVnVXJsID0gYCR7cHJvcHMuZW52Py5hY2NvdW50fS5ka3IuZWNyLiR7cHJvcHMuZW52Py5yZWdpb259LmFtYXpvbmF3cy5jb20vZmFyZ2F0ZS1yZXN0YXBpLSR7cHJvcHMuc3RhZ2V9OmxhdGVzdGA7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdjb250YWluZXItcmVzdGFwaScsIHtcclxuICAgICAgICAgICAgY29udGFpbmVyTmFtZSxcclxuICAgICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkocmVnVXJsKSxcclxuICAgICAgICAgICAgLy8gb3IgYnVpbGQgd2l0aCAvYXBwIGZvbGRlciBhc3NldFxyXG4gICAgICAgICAgICAvLyBpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG4gICAgICAgICAgICAvLyBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBcImFwcFwiKSksXHJcbiAgICAgICAgICAgIGNwdTogMTAyNCxcclxuICAgICAgICAgICAgbWVtb3J5UmVzZXJ2YXRpb25NaUI6IDIwNDhcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHsgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LCBob3N0UG9ydDogYXBwbGljYXRpb25Qb3J0IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBmYXJnYXRlc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ2Vjcy1mYXJnYXRlLXNlcnZpY2UnLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIsXHJcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBgJHtzZXJ2aWNlTmFtZX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB0YXNrRGVmaW5pdGlvbixcclxuICAgICAgICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXHJcbiAgICAgICAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMCkgLy8gc2V0IHRoZSB2YWx1ZSBhcyB5b3VyIGFwcGxpY2F0aW9uIGluaXRpYWxpemUgdGltZSBcclxuICAgICAgICB9KTtcclxuICAgICAgICBmYXJnYXRlc2VydmljZS5hdXRvU2NhbGVUYXNrQ291bnQoe1xyXG4gICAgICAgICAgICBtaW5DYXBhY2l0eTogMixcclxuICAgICAgICAgICAgbWF4Q2FwYWNpdHk6IDEwMCxcclxuICAgICAgICB9KS5zY2FsZU9uQ3B1VXRpbGl6YXRpb24oJ2NwdXNjYWxpbmcnLCB7XHJcbiAgICAgICAgICAgIHRhcmdldFV0aWxpemF0aW9uUGVyY2VudDogNTAsXHJcbiAgICAgICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxyXG4gICAgICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoMTIwKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBsb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdsb2dncm91cCcsIHtcclxuICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBzZXJ2aWNlTmFtZSxcclxuICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcclxuICAgICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBhbGJTZWN1cml0eUdyb3VwTmFtZSA9IGBhbGJzZy0ke3NlcnZpY2VOYW1lfWBcclxuICAgICAgICBjb25zdCBhbGJTZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGFsYlNlY3VyaXR5R3JvdXBOYW1lLCB7XHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBhbGJTZWN1cml0eUdyb3VwTmFtZSxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYEFMQiBzZWN1cml0eSBncm91cCBmb3IgJHtzZXJ2aWNlTmFtZX0gU2VydmljZWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBlY3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFsYlNlY3VyaXR5R3JvdXAsIGVjMi5Qb3J0LnRjcChhcHBsaWNhdGlvblBvcnQpLCAnQWxsb3cgZnJvbSBBTEInKTtcclxuICAgICAgICBhbGJTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGVjMi5QZWVyLmFueUlwdjQoKSwgZWMyLlBvcnQudGNwKDgwKSwgJ0FsbG93IGFueScpO1xyXG5cclxuICAgICAgICBjb25zdCBhbGIgPSBuZXcgZWxidjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgJ2FsYicsIHtcclxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cDogYWxiU2VjdXJpdHlHcm91cCxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBsb2FkQmFsYW5jZXJOYW1lOiBgYWxiLSR7c2VydmljZU5hbWV9YCxcclxuICAgICAgICAgICAgaW50ZXJuZXRGYWNpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGlkbGVUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYWxiLmFkZExpc3RlbmVyKCdodHRwcy1saXN0ZW5lcicsIHtcclxuICAgICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcclxuICAgICAgICAgICAgb3BlbjogZmFsc2UsXHJcbiAgICAgICAgfSkuYWRkVGFyZ2V0cygnZWMyLXNlcnZpY2UtdGFyZ2V0Jywge1xyXG4gICAgICAgICAgICB0YXJnZXRHcm91cE5hbWU6IGB0Zy0ke3NlcnZpY2VOYW1lfWAsXHJcbiAgICAgICAgICAgIHBvcnQ6IGFwcGxpY2F0aW9uUG9ydCxcclxuICAgICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcclxuICAgICAgICAgICAgdGFyZ2V0czogW2ZhcmdhdGVzZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXJOYW1lOiBjb250YWluZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LFxyXG4gICAgICAgICAgICB9KV0sXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrOiB7XHJcbiAgICAgICAgICAgICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IDIsXHJcbiAgICAgICAgICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogNSxcclxuICAgICAgICAgICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMxKSxcclxuICAgICAgICAgICAgICAgIHBhdGg6ICcvcGluZycsXHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogRHVyYXRpb24uc2Vjb25kcygxNSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVGFncy5vZihhbGJTZWN1cml0eUdyb3VwKS5hZGQoJ1N0YWdlJywgcHJvcHMuc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoYWxiU2VjdXJpdHlHcm91cCkuYWRkKCdOYW1lJywgYWxiU2VjdXJpdHlHcm91cE5hbWUpO1xyXG5cclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdTZXJ2aWNlJywgeyB2YWx1ZTogZmFyZ2F0ZXNlcnZpY2Uuc2VydmljZUFybiB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdUYXNrRGVmaW5pdGlvbicsIHsgdmFsdWU6IHRhc2tEZWZpbml0aW9uLmZhbWlseSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdMb2dHcm91cCcsIHsgdmFsdWU6IGxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdBTEInLCB7IHZhbHVlOiBhbGIubG9hZEJhbGFuY2VyRG5zTmFtZSB9KTtcclxuICAgIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts b/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/ecs-fargatespot-service-restapi/bin/index.js b/ts.out/ecs-fargatespot-service-restapi/bin/index.js new file mode 100644 index 0000000..cf46341 --- /dev/null +++ b/ts.out/ecs-fargatespot-service-restapi/bin/index.js @@ -0,0 +1,38 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const config_1 = require("../../config"); +const ecs_fargatespot_service_restapi_stack_1 = require("../lib/ecs-fargatespot-service-restapi-stack"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +new ecs_fargatespot_service_restapi_stack_1.FargateSpotRestAPIServiceStack(app, `ecs-fargatespot-service-restapi-${stage}`, { + env, + stage, + description: 'ECS Fargate service for RESTful API with Spot CapacityProvider and ALB', + terminationProtection: stage != config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZXNwb3Qtc2VydmljZS1yZXN0YXBpL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBQ25DLHlDQUE2QztBQUM3Qyx3R0FBOEY7QUFFOUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUc7SUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7SUFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0NBQ3pDLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxzQkFBYSxDQUFDO0FBRS9ELElBQUksc0VBQThCLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxLQUFLLEVBQUUsRUFBRTtJQUNoRixHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVcsRUFBRSx3RUFBd0U7SUFDckYscUJBQXFCLEVBQUUsS0FBSyxJQUFFLHNCQUFhO0NBQzlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IEZhcmdhdGVTcG90UmVzdEFQSVNlcnZpY2VTdGFjayB9IGZyb20gJy4uL2xpYi9lY3MtZmFyZ2F0ZXNwb3Qtc2VydmljZS1yZXN0YXBpLXN0YWNrJztcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XHJcbmNvbnN0IGVudiA9IHtcclxuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXHJcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTlxyXG59O1xyXG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcclxuXHJcbm5ldyBGYXJnYXRlU3BvdFJlc3RBUElTZXJ2aWNlU3RhY2soYXBwLCBgZWNzLWZhcmdhdGVzcG90LXNlcnZpY2UtcmVzdGFwaS0ke3N0YWdlfWAsIHtcclxuICAgIGVudixcclxuICAgIHN0YWdlLFxyXG4gICAgZGVzY3JpcHRpb246ICdFQ1MgRmFyZ2F0ZSBzZXJ2aWNlIGZvciBSRVNUZnVsIEFQSSB3aXRoIFNwb3QgQ2FwYWNpdHlQcm92aWRlciBhbmQgQUxCJyxcclxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPURFRkFVTFRfU1RBR0VcclxufSk7XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts new file mode 100644 index 0000000..afe9224 --- /dev/null +++ b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts @@ -0,0 +1,10 @@ +import { Construct } from 'constructs'; +import { Stack } from 'aws-cdk-lib'; +import { StackCommonProps } from '../../config'; +/** + * Crearte Fargate Service with Spot CapacityProvider, Auto Scaling, ALB, and Log Group. + * Set the ALB logs for the production-level. + */ +export declare class FargateSpotRestAPIServiceStack extends Stack { + constructor(scope: Construct, id: string, props: StackCommonProps); +} diff --git a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js new file mode 100644 index 0000000..8355c22 --- /dev/null +++ b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js @@ -0,0 +1,151 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FargateSpotRestAPIServiceStack = void 0; +const cdk = __importStar(require("aws-cdk-lib")); +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); +const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); +const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2")); +const logs = __importStar(require("aws-cdk-lib/aws-logs")); +const iam = __importStar(require("aws-cdk-lib/aws-iam")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); +const config_1 = require("../../config"); +/** + * Crearte Fargate Service with Spot CapacityProvider, Auto Scaling, ALB, and Log Group. + * Set the ALB logs for the production-level. + */ +class FargateSpotRestAPIServiceStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + var _a, _b; + super(scope, id, props); + const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); + const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); + const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); + const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); + const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { + clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, + vpc, + securityGroups: [ecsSecurityGroup] + }); + const serviceName = 'fargatespot-restapi'; + const containerName = `${serviceName}-container`; + const applicationPort = 8080; + const executionRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/task-execution-role-arn`); + const taskRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/default-task-role-arn`); + const taskDefinition = new ecs.TaskDefinition(this, 'fargate-task-definition', { + cpu: '1024', + memoryMiB: '2048', + compatibility: ecs.Compatibility.FARGATE, + family: `${serviceName}-task`, + executionRole: iam.Role.fromRoleArn(this, 'task-execution-role', cdk.Lazy.string({ produce: () => executionRoleArn })), + taskRole: iam.Role.fromRoleArn(this, 'task-role', cdk.Lazy.string({ produce: () => taskRoleArn })) + }); + const container = taskDefinition.addContainer('container-restapi', { + containerName, + image: ecs.ContainerImage.fromRegistry(`${(_a = props.env) === null || _a === void 0 ? void 0 : _a.account}.dkr.ecr.${(_b = props.env) === null || _b === void 0 ? void 0 : _b.region}.amazonaws.com/fargate-restapi-${props.stage}:latest`), + // or build with /app folder + // import * as path from 'path'; + // image: ecs.ContainerImage.fromAsset(path.join(__dirname, "../../", "app")), + cpu: 1024, + memoryReservationMiB: 2048 + }); + container.addPortMappings({ containerPort: applicationPort, hostPort: applicationPort }); + const fargateservice = new ecs.FargateService(this, 'ecs-fargate-service', { + cluster, + serviceName: `${serviceName}-${props.stage}`, + taskDefinition, + enableExecuteCommand: true, + minHealthyPercent: 100, + maxHealthyPercent: 200, + healthCheckGracePeriod: aws_cdk_lib_1.Duration.seconds(0), + capacityProviderStrategies: [ + { + capacityProvider: 'FARGATE_SPOT', + weight: 1, + }, + { + capacityProvider: 'FARGATE', + weight: 1, + } + ] + }); + fargateservice.autoScaleTaskCount({ + minCapacity: 2, + maxCapacity: 100, + }).scaleOnCpuUtilization('cpuscaling', { + targetUtilizationPercent: 50, + scaleOutCooldown: aws_cdk_lib_1.Duration.seconds(60), + scaleInCooldown: aws_cdk_lib_1.Duration.seconds(120) + }); + const logGroup = new logs.LogGroup(this, 'loggroup', { + logGroupName: serviceName, + removalPolicy: cdk.RemovalPolicy.DESTROY, + retention: logs.RetentionDays.TWO_WEEKS, + }); + const albSecurityGroupName = `albsg-${serviceName}`; + const albSecurityGroup = new ec2.SecurityGroup(this, albSecurityGroupName, { + securityGroupName: albSecurityGroupName, + vpc, + allowAllOutbound: true, + description: `ALB security group for ${serviceName} Service` + }); + ecsSecurityGroup.addIngressRule(albSecurityGroup, ec2.Port.tcp(applicationPort), 'Allow from ALB'); + albSecurityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80), 'Allow any'); + const alb = new elbv2.ApplicationLoadBalancer(this, 'alb', { + securityGroup: albSecurityGroup, + vpc, + loadBalancerName: `alb-${serviceName}`, + internetFacing: true, + deletionProtection: false, + idleTimeout: cdk.Duration.seconds(30), + }); + alb.addListener('https-listener', { + protocol: elbv2.ApplicationProtocol.HTTP, + open: false, + }).addTargets('ec2-service-target', { + targetGroupName: `tg-${serviceName}`, + port: applicationPort, + protocol: elbv2.ApplicationProtocol.HTTP, + targets: [fargateservice.loadBalancerTarget({ + containerName: containerName, + containerPort: applicationPort, + })], + healthCheck: { + healthyThresholdCount: 2, + unhealthyThresholdCount: 5, + interval: aws_cdk_lib_1.Duration.seconds(31), + path: '/ping', + timeout: aws_cdk_lib_1.Duration.seconds(30), + }, + deregistrationDelay: aws_cdk_lib_1.Duration.seconds(15) + }); + aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Stage', props.stage); + aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Name', albSecurityGroupName); + new aws_cdk_lib_1.CfnOutput(this, 'Service', { value: fargateservice.serviceArn }); + new aws_cdk_lib_1.CfnOutput(this, 'TaskDefinition', { value: taskDefinition.family }); + new aws_cdk_lib_1.CfnOutput(this, 'LogGroup', { value: logGroup.logGroupName }); + new aws_cdk_lib_1.CfnOutput(this, 'ALB', { value: alb.loadBalancerDnsName }); + } +} +exports.FargateSpotRestAPIServiceStack = FargateSpotRestAPIServiceStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGVzcG90LXNlcnZpY2UtcmVzdGFwaS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Vjcy1mYXJnYXRlc3BvdC1zZXJ2aWNlLXJlc3RhcGkvbGliL2Vjcy1mYXJnYXRlc3BvdC1zZXJ2aWNlLXJlc3RhcGktc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyw2Q0FBK0Q7QUFDL0QseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyw4RUFBZ0U7QUFDaEUsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaUZBQTRFO0FBQzVFLHlDQUE0RDtBQUU1RDs7O0dBR0c7QUFDSCxNQUFhLDhCQUErQixTQUFRLG1CQUFLO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLDJCQUEyQixDQUFDLENBQUM7UUFDeEcsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLHFCQUFxQixDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUMzRSxXQUFXLEVBQUUsR0FBRyw2QkFBWSxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFDN0MsR0FBRztZQUNILGNBQWMsRUFBRSxDQUFDLGdCQUFnQixDQUFDO1NBQ3JDLENBQUMsQ0FBQztRQUVILE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFBO1FBQ3pDLE1BQU0sYUFBYSxHQUFHLEdBQUcsV0FBVyxZQUFZLENBQUE7UUFDaEQsTUFBTSxlQUFlLEdBQUcsSUFBSSxDQUFDO1FBRTdCLE1BQU0sZ0JBQWdCLEdBQUcsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsbUJBQVUsMEJBQTBCLENBQUMsQ0FBQztRQUM1RyxNQUFNLFdBQVcsR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxtQkFBVSx3QkFBd0IsQ0FBQyxDQUFDO1FBRXJHLE1BQU0sY0FBYyxHQUFHLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUU7WUFDM0UsR0FBRyxFQUFFLE1BQU07WUFDWCxTQUFTLEVBQUUsTUFBTTtZQUNqQixhQUFhLEVBQUUsR0FBRyxDQUFDLGFBQWEsQ0FBQyxPQUFPO1lBQ3hDLE1BQU0sRUFBRSxHQUFHLFdBQVcsT0FBTztZQUM3QixhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFLEdBQUcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEdBQUcsRUFBRSxDQUFDLGdCQUFnQixFQUFFLENBQUMsQ0FBQztZQUN0SCxRQUFRLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLFdBQVcsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1NBQ3JHLENBQUMsQ0FBQztRQUNILE1BQU0sU0FBUyxHQUFHLGNBQWMsQ0FBQyxZQUFZLENBQUMsbUJBQW1CLEVBQUU7WUFDL0QsYUFBYTtZQUNiLEtBQUssRUFBRSxHQUFHLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQUEsS0FBSyxDQUFDLEdBQUcsMENBQUUsT0FBTyxZQUFZLE1BQUEsS0FBSyxDQUFDLEdBQUcsMENBQUUsTUFBTSxrQ0FBa0MsS0FBSyxDQUFDLEtBQUssU0FBUyxDQUFDO1lBQ2hKLDRCQUE0QjtZQUM1QixnQ0FBZ0M7WUFDaEMsOEVBQThFO1lBQzlFLEdBQUcsRUFBRSxJQUFJO1lBQ1Qsb0JBQW9CLEVBQUUsSUFBSTtTQUM3QixDQUFDLENBQUM7UUFDSCxTQUFTLENBQUMsZUFBZSxDQUFDLEVBQUUsYUFBYSxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUV6RixNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLHFCQUFxQixFQUFFO1lBQ3ZFLE9BQU87WUFDUCxXQUFXLEVBQUUsR0FBRyxXQUFXLElBQUksS0FBSyxDQUFDLEtBQUssRUFBRTtZQUM1QyxjQUFjO1lBQ2Qsb0JBQW9CLEVBQUUsSUFBSTtZQUMxQixpQkFBaUIsRUFBRSxHQUFHO1lBQ3RCLGlCQUFpQixFQUFFLEdBQUc7WUFDdEIsc0JBQXNCLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBQzNDLDBCQUEwQixFQUFFO2dCQUN4QjtvQkFDSSxnQkFBZ0IsRUFBRSxjQUFjO29CQUNoQyxNQUFNLEVBQUUsQ0FBQztpQkFDWjtnQkFDRDtvQkFDSSxnQkFBZ0IsRUFBRSxTQUFTO29CQUMzQixNQUFNLEVBQUUsQ0FBQztpQkFDWjthQUNKO1NBQ0osQ0FBQyxDQUFDO1FBQ0gsY0FBYyxDQUFDLGtCQUFrQixDQUFDO1lBQzlCLFdBQVcsRUFBRSxDQUFDO1lBQ2QsV0FBVyxFQUFFLEdBQUc7U0FDbkIsQ0FBQyxDQUFDLHFCQUFxQixDQUFDLFlBQVksRUFBRTtZQUNuQyx3QkFBd0IsRUFBRSxFQUFFO1lBQzVCLGdCQUFnQixFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUN0QyxlQUFlLEVBQUUsc0JBQVEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1NBQ3pDLENBQUMsQ0FBQztRQUVILE1BQU0sUUFBUSxHQUFHLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFO1lBQ2pELFlBQVksRUFBRSxXQUFXO1lBQ3pCLGFBQWEsRUFBRSxHQUFHLENBQUMsYUFBYSxDQUFDLE9BQU87WUFDeEMsU0FBUyxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsU0FBUztTQUMxQyxDQUFDLENBQUM7UUFFSCxNQUFNLG9CQUFvQixHQUFHLFNBQVMsV0FBVyxFQUFFLENBQUE7UUFDbkQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLEdBQUcsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLG9CQUFvQixFQUFFO1lBQ3ZFLGlCQUFpQixFQUFFLG9CQUFvQjtZQUN2QyxHQUFHO1lBQ0gsZ0JBQWdCLEVBQUUsSUFBSTtZQUN0QixXQUFXLEVBQUUsMEJBQTBCLFdBQVcsVUFBVTtTQUMvRCxDQUFDLENBQUM7UUFDSCxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsZ0JBQWdCLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztRQUNuRyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsRUFBRSxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUVuRixNQUFNLEdBQUcsR0FBRyxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFO1lBQ3ZELGFBQWEsRUFBRSxnQkFBZ0I7WUFDL0IsR0FBRztZQUNILGdCQUFnQixFQUFFLE9BQU8sV0FBVyxFQUFFO1lBQ3RDLGNBQWMsRUFBRSxJQUFJO1lBQ3BCLGtCQUFrQixFQUFFLEtBQUs7WUFDekIsV0FBVyxFQUFFLEdBQUcsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztTQUN4QyxDQUFDLENBQUM7UUFDSCxHQUFHLENBQUMsV0FBVyxDQUFDLGdCQUFnQixFQUFFO1lBQzlCLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSTtZQUN4QyxJQUFJLEVBQUUsS0FBSztTQUNkLENBQUMsQ0FBQyxVQUFVLENBQUMsb0JBQW9CLEVBQUU7WUFDaEMsZUFBZSxFQUFFLE1BQU0sV0FBVyxFQUFFO1lBQ3BDLElBQUksRUFBRSxlQUFlO1lBQ3JCLFFBQVEsRUFBRSxLQUFLLENBQUMsbUJBQW1CLENBQUMsSUFBSTtZQUN4QyxPQUFPLEVBQUUsQ0FBQyxjQUFjLENBQUMsa0JBQWtCLENBQUM7b0JBQ3hDLGFBQWEsRUFBRSxhQUFhO29CQUM1QixhQUFhLEVBQUUsZUFBZTtpQkFDakMsQ0FBQyxDQUFDO1lBQ0gsV0FBVyxFQUFFO2dCQUNULHFCQUFxQixFQUFFLENBQUM7Z0JBQ3hCLHVCQUF1QixFQUFFLENBQUM7Z0JBQzFCLFFBQVEsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7Z0JBQzlCLElBQUksRUFBRSxPQUFPO2dCQUNiLE9BQU8sRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7YUFDaEM7WUFDRCxtQkFBbUIsRUFBRSxzQkFBUSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7U0FDNUMsQ0FBQyxDQUFDO1FBRUgsa0JBQUksQ0FBQyxFQUFFLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNwRCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUU1RCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNKO0FBMUhELHdFQTBIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgeyBTdGFjaywgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xyXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XHJcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcclxuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XHJcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcclxuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xyXG5cclxuaW1wb3J0IHsgQ0xVU1RFUl9OQU1FIH0gZnJvbSAnLi4vLi4vZWNzLWZhcmdhdGUtY2x1c3Rlci9saWIvY2x1c3Rlci1jb25maWcnO1xyXG5pbXBvcnQgeyBTdGFja0NvbW1vblByb3BzLCBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBDcmVhcnRlIEZhcmdhdGUgU2VydmljZSB3aXRoIFNwb3QgQ2FwYWNpdHlQcm92aWRlciwgQXV0byBTY2FsaW5nLCBBTEIsIGFuZCBMb2cgR3JvdXAuXHJcbiAqIFNldCB0aGUgQUxCIGxvZ3MgZm9yIHRoZSBwcm9kdWN0aW9uLWxldmVsLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZhcmdhdGVTcG90UmVzdEFQSVNlcnZpY2VTdGFjayBleHRlbmRzIFN0YWNrIHtcclxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja0NvbW1vblByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZwY0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoJ3ZwY0lkJykgfHwgc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vdnBjLWlkYCk7XHJcbiAgICAgICAgY29uc3QgdnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsICd2cGMnLCB7IHZwY0lkIH0pO1xyXG4gICAgICAgIGNvbnN0IGNsdXN0ZXJTZ0lkID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCk7XHJcbiAgICAgICAgY29uc3QgZWNzU2VjdXJpdHlHcm91cCA9IGVjMi5TZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQodGhpcywgJ2Vjcy1zZWN1cml0eS1ncm91cCcsIGNsdXN0ZXJTZ0lkKTtcclxuXHJcbiAgICAgICAgY29uc3QgY2x1c3RlciA9IGVjcy5DbHVzdGVyLmZyb21DbHVzdGVyQXR0cmlidXRlcyh0aGlzLCAnZWNzLWZhcmdhdGUtY2x1c3RlcicsIHtcclxuICAgICAgICAgICAgY2x1c3Rlck5hbWU6IGAke0NMVVNURVJfTkFNRX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB2cGMsXHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbZWNzU2VjdXJpdHlHcm91cF1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSAnZmFyZ2F0ZXNwb3QtcmVzdGFwaSdcclxuICAgICAgICBjb25zdCBjb250YWluZXJOYW1lID0gYCR7c2VydmljZU5hbWV9LWNvbnRhaW5lcmBcclxuICAgICAgICBjb25zdCBhcHBsaWNhdGlvblBvcnQgPSA4MDgwO1xyXG5cclxuICAgICAgICBjb25zdCBleGVjdXRpb25Sb2xlQXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vdGFzay1leGVjdXRpb24tcm9sZS1hcm5gKTtcclxuICAgICAgICBjb25zdCB0YXNrUm9sZUFybiA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2RlZmF1bHQtdGFzay1yb2xlLWFybmApO1xyXG5cclxuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuVGFza0RlZmluaXRpb24odGhpcywgJ2ZhcmdhdGUtdGFzay1kZWZpbml0aW9uJywge1xyXG4gICAgICAgICAgICBjcHU6ICcxMDI0JyxcclxuICAgICAgICAgICAgbWVtb3J5TWlCOiAnMjA0OCcsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHk6IGVjcy5Db21wYXRpYmlsaXR5LkZBUkdBVEUsXHJcbiAgICAgICAgICAgIGZhbWlseTogYCR7c2VydmljZU5hbWV9LXRhc2tgLFxyXG4gICAgICAgICAgICBleGVjdXRpb25Sb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAndGFzay1leGVjdXRpb24tcm9sZScsIGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IGV4ZWN1dGlvblJvbGVBcm4gfSkpLFxyXG4gICAgICAgICAgICB0YXNrUm9sZTogaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ3Rhc2stcm9sZScsIGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHRhc2tSb2xlQXJuIH0pKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udGFpbmVyLXJlc3RhcGknLCB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lck5hbWUsXHJcbiAgICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KGAke3Byb3BzLmVudj8uYWNjb3VudH0uZGtyLmVjci4ke3Byb3BzLmVudj8ucmVnaW9ufS5hbWF6b25hd3MuY29tL2ZhcmdhdGUtcmVzdGFwaS0ke3Byb3BzLnN0YWdlfTpsYXRlc3RgKSxcclxuICAgICAgICAgICAgLy8gb3IgYnVpbGQgd2l0aCAvYXBwIGZvbGRlclxyXG4gICAgICAgICAgICAvLyBpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG4gICAgICAgICAgICAvLyBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBcImFwcFwiKSksXHJcbiAgICAgICAgICAgIGNwdTogMTAyNCxcclxuICAgICAgICAgICAgbWVtb3J5UmVzZXJ2YXRpb25NaUI6IDIwNDhcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHsgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LCBob3N0UG9ydDogYXBwbGljYXRpb25Qb3J0IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBmYXJnYXRlc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ2Vjcy1mYXJnYXRlLXNlcnZpY2UnLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIsXHJcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBgJHtzZXJ2aWNlTmFtZX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB0YXNrRGVmaW5pdGlvbixcclxuICAgICAgICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXHJcbiAgICAgICAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMCksIC8vIHNldCB0aGUgdmFsdWUgYXMgeW91ciBhcHBsaWNhdGlvbiBpbml0aWFsaXplIHRpbWUgXHJcbiAgICAgICAgICAgIGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FwYWNpdHlQcm92aWRlcjogJ0ZBUkdBVEVfU1BPVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURScsXHJcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZmFyZ2F0ZXNlcnZpY2UuYXV0b1NjYWxlVGFza0NvdW50KHtcclxuICAgICAgICAgICAgbWluQ2FwYWNpdHk6IDIsXHJcbiAgICAgICAgICAgIG1heENhcGFjaXR5OiAxMDAsXHJcbiAgICAgICAgfSkuc2NhbGVPbkNwdVV0aWxpemF0aW9uKCdjcHVzY2FsaW5nJywge1xyXG4gICAgICAgICAgICB0YXJnZXRVdGlsaXphdGlvblBlcmNlbnQ6IDUwLFxyXG4gICAgICAgICAgICBzY2FsZU91dENvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcclxuICAgICAgICAgICAgc2NhbGVJbkNvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDEyMClcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnbG9nZ3JvdXAnLCB7XHJcbiAgICAgICAgICAgIGxvZ0dyb3VwTmFtZTogc2VydmljZU5hbWUsXHJcbiAgICAgICAgICAgIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXHJcbiAgICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgYWxiU2VjdXJpdHlHcm91cE5hbWUgPSBgYWxic2ctJHtzZXJ2aWNlTmFtZX1gXHJcbiAgICAgICAgY29uc3QgYWxiU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBhbGJTZWN1cml0eUdyb3VwTmFtZSwge1xyXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwTmFtZTogYWxiU2VjdXJpdHlHcm91cE5hbWUsXHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBTEIgc2VjdXJpdHkgZ3JvdXAgZm9yICR7c2VydmljZU5hbWV9IFNlcnZpY2VgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZWNzU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShhbGJTZWN1cml0eUdyb3VwLCBlYzIuUG9ydC50Y3AoYXBwbGljYXRpb25Qb3J0KSwgJ0FsbG93IGZyb20gQUxCJyk7XHJcbiAgICAgICAgYWxiU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShlYzIuUGVlci5hbnlJcHY0KCksIGVjMi5Qb3J0LnRjcCg4MCksICdBbGxvdyBhbnknKTtcclxuXHJcbiAgICAgICAgY29uc3QgYWxiID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKHRoaXMsICdhbGInLCB7XHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXA6IGFsYlNlY3VyaXR5R3JvdXAsXHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyTmFtZTogYGFsYi0ke3NlcnZpY2VOYW1lfWAsXHJcbiAgICAgICAgICAgIGludGVybmV0RmFjaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBpZGxlVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFsYi5hZGRMaXN0ZW5lcignaHR0cHMtbGlzdGVuZXInLCB7XHJcbiAgICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXHJcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxyXG4gICAgICAgIH0pLmFkZFRhcmdldHMoJ2VjMi1zZXJ2aWNlLXRhcmdldCcsIHtcclxuICAgICAgICAgICAgdGFyZ2V0R3JvdXBOYW1lOiBgdGctJHtzZXJ2aWNlTmFtZX1gLFxyXG4gICAgICAgICAgICBwb3J0OiBhcHBsaWNhdGlvblBvcnQsXHJcbiAgICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXHJcbiAgICAgICAgICAgIHRhcmdldHM6IFtmYXJnYXRlc2VydmljZS5sb2FkQmFsYW5jZXJUYXJnZXQoe1xyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyTmFtZTogY29udGFpbmVyTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IGFwcGxpY2F0aW9uUG9ydCxcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBoZWFsdGhDaGVjazoge1xyXG4gICAgICAgICAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAyLFxyXG4gICAgICAgICAgICAgICAgdW5oZWFsdGh5VGhyZXNob2xkQ291bnQ6IDUsXHJcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygzMSksXHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3BpbmcnLFxyXG4gICAgICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6IER1cmF0aW9uLnNlY29uZHMoMTUpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIFRhZ3Mub2YoYWxiU2VjdXJpdHlHcm91cCkuYWRkKCdTdGFnZScsIHByb3BzLnN0YWdlKTtcclxuICAgICAgICBUYWdzLm9mKGFsYlNlY3VyaXR5R3JvdXApLmFkZCgnTmFtZScsIGFsYlNlY3VyaXR5R3JvdXBOYW1lKTtcclxuXHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnU2VydmljZScsIHsgdmFsdWU6IGZhcmdhdGVzZXJ2aWNlLnNlcnZpY2VBcm4gfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVGFza0RlZmluaXRpb24nLCB7IHZhbHVlOiB0YXNrRGVmaW5pdGlvbi5mYW1pbHkgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnTG9nR3JvdXAnLCB7IHZhbHVlOiBsb2dHcm91cC5sb2dHcm91cE5hbWUgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnQUxCJywgeyB2YWx1ZTogYWxiLmxvYWRCYWxhbmNlckRuc05hbWUgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/ts.out/ecs-iam-role/bin/index.d.ts b/ts.out/ecs-iam-role/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/ecs-iam-role/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/ecs-iam-role/bin/index.js b/ts.out/ecs-iam-role/bin/index.js new file mode 100644 index 0000000..a18ad6f --- /dev/null +++ b/ts.out/ecs-iam-role/bin/index.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const config_1 = require("../../config"); +const ecs_iam_role_stack_1 = require("../lib/ecs-iam-role-stack"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +new ecs_iam_role_stack_1.EcsIamRoleStack(app, `ecs-fargate-iam-role-${stage}`, { + env, + description: 'ECS Fargate IAM Role', + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtaWFtLXJvbGUvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMseUNBQTZDO0FBQzdDLGtFQUE0RDtBQUU1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSxvQ0FBZSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsS0FBSyxFQUFFLEVBQUc7SUFDdkQsR0FBRztJQUNILFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IEVjc0lhbVJvbGVTdGFjayB9IGZyb20gJy4uL2xpYi9lY3MtaWFtLXJvbGUtc3RhY2snO1xyXG5cclxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcclxuY29uc3QgZW52ID0ge1xyXG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcclxuICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OXHJcbn07XHJcbmNvbnN0IHN0YWdlID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dCgnc3RhZ2UnKSB8fCBERUZBVUxUX1NUQUdFO1xyXG5cclxubmV3IEVjc0lhbVJvbGVTdGFjayhhcHAsIGBlY3MtZmFyZ2F0ZS1pYW0tcm9sZS0ke3N0YWdlfWAsICB7XHJcbiAgICBlbnYsXHJcbiAgICBkZXNjcmlwdGlvbjogJ0VDUyBGYXJnYXRlIElBTSBSb2xlJyxcclxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXHJcbn0pOyJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts new file mode 100644 index 0000000..424b96c --- /dev/null +++ b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts @@ -0,0 +1,13 @@ +import { Stack, StackProps } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +/** + * This stack is written to share IAM role among multiple-cluster + * + * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html + * + * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html + * + */ +export declare class EcsIamRoleStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps); +} diff --git a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js new file mode 100644 index 0000000..ecdba39 --- /dev/null +++ b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js @@ -0,0 +1,79 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.EcsIamRoleStack = void 0; +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const iam = __importStar(require("aws-cdk-lib/aws-iam")); +const config_1 = require("../../config"); +/** + * This stack is written to share IAM role among multiple-cluster + * + * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html + * + * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html + * + */ +class EcsIamRoleStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + super(scope, id, props); + // AmazonECSTaskExecutionRole based on https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy$jsonEditor + const taskExecutionRole = new iam.Role(this, 'task-execution-role', { + roleName: 'AmazonECSFargateTaskExecutionRole', + assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'), + managedPolicies: [ + iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy'), + ] + }); + const defaultTaskRole = new iam.Role(this, 'default-task-role', { + roleName: 'ECSFargateDefaultTaskRole', + assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'), + managedPolicies: [ + iam.ManagedPolicy.fromAwsManagedPolicyName('AWSXrayWriteOnlyAccess'), + iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMReadOnlyAccess') + ], + inlinePolicies: { + ECSExec: new iam.PolicyDocument({ + statements: [ + new iam.PolicyStatement({ + effect: iam.Effect.ALLOW, + actions: [ + "ssmmessages:CreateControlChannel", + "ssmmessages:CreateDataChannel", + "ssmmessages:OpenControlChannel", + "ssmmessages:OpenDataChannel", + ], + resources: ["*"], + }), + ], + }), + } + }); + const taskExecRoleParam = new ssm.StringParameter(this, 'ssm-task-execution-role', { parameterName: `${config_1.SSM_PREFIX}/task-execution-role-arn`, stringValue: taskExecutionRole.roleArn }); + const defaultTaskRoleParam = new ssm.StringParameter(this, 'ssm-default-task-role', { parameterName: `${config_1.SSM_PREFIX}/default-task-role-arn`, stringValue: defaultTaskRole.roleArn }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMTaskExecRoleParam', { value: taskExecRoleParam.parameterName }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMTaskExecRoleParamValue', { value: taskExecRoleParam.stringValue }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMDefaultTaskRoleParam', { value: defaultTaskRoleParam.parameterName }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMDefaultTaskRoleParamValue', { value: defaultTaskRoleParam.stringValue }); + } +} +exports.EcsIamRoleStack = EcsIamRoleStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWlhbS1yb2xlLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZWNzLWlhbS1yb2xlL2xpYi9lY3MtaWFtLXJvbGUtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRDtBQUUzRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRzNDLHlDQUEwQztBQUUxQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxlQUFnQixTQUFRLG1CQUFLO0lBQ3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsbUxBQW1MO1FBQ25MLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNsRSxRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUM5RCxlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMsK0NBQStDLENBQ2hEO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQzlELFFBQVEsRUFBRSwyQkFBMkI7WUFDckMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO1lBQzlELGVBQWUsRUFBRTtnQkFDZixHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUN4Qyx3QkFBd0IsQ0FDekI7Z0JBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMseUJBQXlCLENBQzFCO2FBQ0Y7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsVUFBVSxFQUFFO3dCQUNWLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSzs0QkFDeEIsT0FBTyxFQUFFO2dDQUNQLGtDQUFrQztnQ0FDbEMsK0JBQStCO2dDQUMvQixnQ0FBZ0M7Z0NBQ2hDLDZCQUE2Qjs2QkFDOUI7NEJBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZMLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVwTCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM5RixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztDQUNGO0FBcERELDBDQW9EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzLCBDZm5PdXRwdXQgfSBmcm9tICdhd3MtY2RrLWxpYic7XHJcblxyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcclxuXHJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgeyBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHN0YWNrIGlzIHdyaXR0ZW4gdG8gc2hhcmUgSUFNIHJvbGUgYW1vbmcgbXVsdGlwbGUtY2x1c3RlclxyXG4gKiBcclxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdGFzay1pYW0tcm9sZXMuaHRtbFxyXG4gKiBcclxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZWNzLWV4ZWMuaHRtbFxyXG4gKiBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFY3NJYW1Sb2xlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcclxuXHJcbiAgICAvLyBBbWF6b25FQ1NUYXNrRXhlY3V0aW9uUm9sZSBiYXNlZCBvbiBodHRwczovL3VzLWVhc3QtMS5jb25zb2xlLmF3cy5hbWF6b24uY29tL2lhbS9ob21lIy9wb2xpY2llcy9hcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3kkanNvbkVkaXRvclxyXG4gICAgY29uc3QgdGFza0V4ZWN1dGlvblJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ3Rhc2stZXhlY3V0aW9uLXJvbGUnLCB7XHJcbiAgICAgIHJvbGVOYW1lOiAnQW1hem9uRUNTRmFyZ2F0ZVRhc2tFeGVjdXRpb25Sb2xlJyxcclxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Vjcy10YXNrcy5hbWF6b25hd3MuY29tJyksXHJcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xyXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcclxuICAgICAgICAgICdzZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3knLFxyXG4gICAgICAgICksXHJcbiAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRUYXNrUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnZGVmYXVsdC10YXNrLXJvbGUnLCB7XHJcbiAgICAgIHJvbGVOYW1lOiAnRUNTRmFyZ2F0ZURlZmF1bHRUYXNrUm9sZScsXHJcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlY3MtdGFza3MuYW1hem9uYXdzLmNvbScpLFxyXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcclxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXHJcbiAgICAgICAgICAnQVdTWHJheVdyaXRlT25seUFjY2VzcycsXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXHJcbiAgICAgICAgICAnQW1hem9uU1NNUmVhZE9ubHlBY2Nlc3MnLFxyXG4gICAgICAgIClcclxuICAgICAgXSxcclxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcclxuICAgICAgICBFQ1NFeGVjOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcclxuICAgICAgICAgIHN0YXRlbWVudHM6IFtcclxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xyXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcclxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZUNvbnRyb2xDaGFubmVsXCIsXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZURhdGFDaGFubmVsXCIsXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5Db250cm9sQ2hhbm5lbFwiLFxyXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuRGF0YUNoYW5uZWxcIixcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0YXNrRXhlY1JvbGVQYXJhbSA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tdGFzay1leGVjdXRpb24tcm9sZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vdGFzay1leGVjdXRpb24tcm9sZS1hcm5gLCBzdHJpbmdWYWx1ZTogdGFza0V4ZWN1dGlvblJvbGUucm9sZUFybiB9KTtcclxuICAgIGNvbnN0IGRlZmF1bHRUYXNrUm9sZVBhcmFtID0gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1kZWZhdWx0LXRhc2stcm9sZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZGVmYXVsdC10YXNrLXJvbGUtYXJuYCwgc3RyaW5nVmFsdWU6IGRlZmF1bHRUYXNrUm9sZS5yb2xlQXJuIH0pO1xyXG5cclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVRhc2tFeGVjUm9sZVBhcmFtJywgeyB2YWx1ZTogdGFza0V4ZWNSb2xlUGFyYW0ucGFyYW1ldGVyTmFtZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVRhc2tFeGVjUm9sZVBhcmFtVmFsdWUnLCB7IHZhbHVlOiB0YXNrRXhlY1JvbGVQYXJhbS5zdHJpbmdWYWx1ZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTURlZmF1bHRUYXNrUm9sZVBhcmFtJywgeyB2YWx1ZTogZGVmYXVsdFRhc2tSb2xlUGFyYW0ucGFyYW1ldGVyTmFtZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTURlZmF1bHRUYXNrUm9sZVBhcmFtVmFsdWUnLCB7IHZhbHVlOiBkZWZhdWx0VGFza1JvbGVQYXJhbS5zdHJpbmdWYWx1ZSB9KTtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/ts.out/vpc/bin/index.d.ts b/ts.out/vpc/bin/index.d.ts new file mode 100644 index 0000000..b798801 --- /dev/null +++ b/ts.out/vpc/bin/index.d.ts @@ -0,0 +1,2 @@ +#!/usr/bin/env node +export {}; diff --git a/ts.out/vpc/bin/index.js b/ts.out/vpc/bin/index.js new file mode 100644 index 0000000..a2f1965 --- /dev/null +++ b/ts.out/vpc/bin/index.js @@ -0,0 +1,37 @@ +#!/usr/bin/env node +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +const cdk = __importStar(require("aws-cdk-lib")); +const vpc_stack_1 = require("../lib/vpc-stack"); +const config_1 = require("../../config"); +const app = new cdk.App(); +const env = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION +}; +const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; +new vpc_stack_1.VpcStack(app, `ecs-vpc-${stage}`, { + env, + description: 'VPC for Fargate and EC2 ECS', + terminationProtection: stage !== config_1.DEFAULT_STAGE +}); +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi92cGMvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMsZ0RBQTRDO0FBQzVDLHlDQUE2QztBQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSxvQkFBUSxDQUFDLEdBQUcsRUFBRSxXQUFXLEtBQUssRUFBRSxFQUFHO0lBQ25DLEdBQUc7SUFDSCxXQUFXLEVBQUUsNkJBQTZCO0lBQzFDLHFCQUFxQixFQUFFLEtBQUssS0FBRyxzQkFBYTtDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXHJcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XHJcbmltcG9ydCB7IFZwY1N0YWNrIH0gZnJvbSAnLi4vbGliL3ZwYy1zdGFjayc7XHJcbmltcG9ydCB7IERFRkFVTFRfU1RBR0UgfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcclxuY29uc3QgZW52ID0ge1xyXG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcclxuICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OXHJcbn07XHJcbmNvbnN0IHN0YWdlID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dCgnc3RhZ2UnKSB8fCBERUZBVUxUX1NUQUdFO1xyXG5cclxubmV3IFZwY1N0YWNrKGFwcCwgYGVjcy12cGMtJHtzdGFnZX1gLCAge1xyXG4gICAgZW52LFxyXG4gICAgZGVzY3JpcHRpb246ICdWUEMgZm9yIEZhcmdhdGUgYW5kIEVDMiBFQ1MnLFxyXG4gICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBzdGFnZSE9PURFRkFVTFRfU1RBR0VcclxufSk7Il19 \ No newline at end of file diff --git a/ts.out/vpc/lib/vpc-stack.d.ts b/ts.out/vpc/lib/vpc-stack.d.ts new file mode 100644 index 0000000..8d92f51 --- /dev/null +++ b/ts.out/vpc/lib/vpc-stack.d.ts @@ -0,0 +1,5 @@ +import { Stack, StackProps } from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +export declare class VpcStack extends Stack { + constructor(scope: Construct, id: string, props?: StackProps); +} diff --git a/ts.out/vpc/lib/vpc-stack.js b/ts.out/vpc/lib/vpc-stack.js new file mode 100644 index 0000000..8e05b2d --- /dev/null +++ b/ts.out/vpc/lib/vpc-stack.js @@ -0,0 +1,56 @@ +"use strict"; +var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); +}) : (function(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +})); +var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { + Object.defineProperty(o, "default", { enumerable: true, value: v }); +}) : function(o, v) { + o["default"] = v; +}); +var __importStar = (this && this.__importStar) || function (mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); + __setModuleDefault(result, mod); + return result; +}; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.VpcStack = void 0; +const aws_cdk_lib_1 = require("aws-cdk-lib"); +const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); +const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); +const config_1 = require("../../config"); +class VpcStack extends aws_cdk_lib_1.Stack { + constructor(scope, id, props) { + super(scope, id, props); + const cidr = `10.100.0.0/16`; + const vpc = new ec2.Vpc(this, 'Vpc', { + maxAzs: 3, + natGateways: 3, + cidr, + subnetConfiguration: [ + { + cidrMask: 20, + name: 'public', + subnetType: ec2.SubnetType.PUBLIC, + }, + { + cidrMask: 20, + name: 'private', + subnetType: ec2.SubnetType.PRIVATE_WITH_NAT, + } + ] + }); + const parameter = new ssm.StringParameter(this, 'SSMVPCID', { parameterName: `${config_1.SSM_PREFIX}/vpc-id`, stringValue: vpc.vpcId }); + new aws_cdk_lib_1.CfnOutput(this, 'VPC', { value: vpc.vpcId }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMParameter', { value: parameter.parameterName }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMParameterValue', { value: vpc.vpcId }); + new aws_cdk_lib_1.CfnOutput(this, 'SSMURL', { value: `https://${this.region}.console.aws.amazon.com/systems-manager/parameters/` }); + } +} +exports.VpcStack = VpcStack; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdnBjL2xpYi92cGMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRDtBQUczRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLHlDQUEwQztBQUUxQyxNQUFhLFFBQVMsU0FBUSxtQkFBSztJQUMvQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUNqQyxNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxDQUFDO1lBQ2QsSUFBSTtZQUNKLG1CQUFtQixFQUFFO2dCQUNqQjtvQkFDSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2lCQUNwQztnQkFDRDtvQkFDSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7aUJBQzlDO2FBQ0o7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksQ0FBQyxNQUFNLHFEQUFxRCxFQUFFLENBQUMsQ0FBQztJQUMxSCxDQUFDO0NBQ0o7QUE3QkQsNEJBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMsIENmbk91dHB1dCB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcblxyXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XHJcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcclxuXHJcbmltcG9ydCB7IFNTTV9QUkVGSVggfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZwY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xyXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNpZHIgPSBgMTAuMTAwLjAuMC8xNmA7XHJcbiAgICAgICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGModGhpcywgJ1ZwYycsIHtcclxuICAgICAgICAgICAgbWF4QXpzOiAzLFxyXG4gICAgICAgICAgICBuYXRHYXRld2F5czogMyxcclxuICAgICAgICAgICAgY2lkcixcclxuICAgICAgICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNpZHJNYXNrOiAyMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGljJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNpZHJNYXNrOiAyMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHJpdmF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnU1NNVlBDSUQnLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L3ZwYy1pZGAsIHN0cmluZ1ZhbHVlOiB2cGMudnBjSWQgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVlBDJywgeyB2YWx1ZTogdnBjLnZwY0lkIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVBhcmFtZXRlcicsIHsgdmFsdWU6IHBhcmFtZXRlci5wYXJhbWV0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVBhcmFtZXRlclZhbHVlJywgeyB2YWx1ZTogdnBjLnZwY0lkIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVVSTCcsIHsgdmFsdWU6IGBodHRwczovLyR7dGhpcy5yZWdpb259LmNvbnNvbGUuYXdzLmFtYXpvbi5jb20vc3lzdGVtcy1tYW5hZ2VyL3BhcmFtZXRlcnMvYCB9KTtcclxuICAgIH1cclxufSJdfQ== \ No newline at end of file From d039296f35af60c37072b96450bf79d8ffcfef15 Mon Sep 17 00:00:00 2001 From: engel80 Date: Tue, 20 Dec 2022 13:18:13 +0900 Subject: [PATCH 2/2] . --- .gitignore | 1 + ts.out/code-pipeline/bin/index.d.ts | 2 - ts.out/code-pipeline/bin/index.js | 40 ----- .../lib/ecs-codedeploy-stack.d.ts | 17 -- .../code-pipeline/lib/ecs-codedeploy-stack.js | 149 ----------------- ts.out/config.d.ts | 18 --- ts.out/config.js | 18 --- ts.out/ecr-codecommit/bin/index.d.ts | 2 - ts.out/ecr-codecommit/bin/index.js | 40 ----- .../lib/ecr-codecommit-stack.d.ts | 12 -- .../lib/ecr-codecommit-stack.js | 77 --------- ts.out/ecs-fargate-cluster/bin/index.d.ts | 2 - ts.out/ecs-fargate-cluster/bin/index.js | 39 ----- .../lib/cluster-config.d.ts | 3 - .../ecs-fargate-cluster/lib/cluster-config.js | 7 - .../lib/ecs-fargate-cluster-stack.d.ts | 9 -- .../lib/ecs-fargate-cluster-stack.js | 61 ------- .../bin/index.d.ts | 2 - .../ecs-fargate-service-restapi/bin/index.js | 38 ----- .../ecs-fargate-service-restapi-stack.d.ts | 10 -- .../lib/ecs-fargate-service-restapi-stack.js | 142 ---------------- .../bin/index.d.ts | 2 - .../bin/index.js | 38 ----- ...ecs-fargatespot-service-restapi-stack.d.ts | 10 -- .../ecs-fargatespot-service-restapi-stack.js | 151 ------------------ ts.out/ecs-iam-role/bin/index.d.ts | 2 - ts.out/ecs-iam-role/bin/index.js | 37 ----- .../ecs-iam-role/lib/ecs-iam-role-stack.d.ts | 13 -- ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js | 79 --------- ts.out/vpc/bin/index.d.ts | 2 - ts.out/vpc/bin/index.js | 37 ----- ts.out/vpc/lib/vpc-stack.d.ts | 5 - ts.out/vpc/lib/vpc-stack.js | 56 ------- 33 files changed, 1 insertion(+), 1120 deletions(-) delete mode 100644 ts.out/code-pipeline/bin/index.d.ts delete mode 100644 ts.out/code-pipeline/bin/index.js delete mode 100644 ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts delete mode 100644 ts.out/code-pipeline/lib/ecs-codedeploy-stack.js delete mode 100644 ts.out/config.d.ts delete mode 100644 ts.out/config.js delete mode 100644 ts.out/ecr-codecommit/bin/index.d.ts delete mode 100644 ts.out/ecr-codecommit/bin/index.js delete mode 100644 ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts delete mode 100644 ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js delete mode 100644 ts.out/ecs-fargate-cluster/bin/index.d.ts delete mode 100644 ts.out/ecs-fargate-cluster/bin/index.js delete mode 100644 ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts delete mode 100644 ts.out/ecs-fargate-cluster/lib/cluster-config.js delete mode 100644 ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts delete mode 100644 ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js delete mode 100644 ts.out/ecs-fargate-service-restapi/bin/index.d.ts delete mode 100644 ts.out/ecs-fargate-service-restapi/bin/index.js delete mode 100644 ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts delete mode 100644 ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js delete mode 100644 ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts delete mode 100644 ts.out/ecs-fargatespot-service-restapi/bin/index.js delete mode 100644 ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts delete mode 100644 ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js delete mode 100644 ts.out/ecs-iam-role/bin/index.d.ts delete mode 100644 ts.out/ecs-iam-role/bin/index.js delete mode 100644 ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts delete mode 100644 ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js delete mode 100644 ts.out/vpc/bin/index.d.ts delete mode 100644 ts.out/vpc/bin/index.js delete mode 100644 ts.out/vpc/lib/vpc-stack.d.ts delete mode 100644 ts.out/vpc/lib/vpc-stack.js diff --git a/.gitignore b/.gitignore index 2c83b75..b09f9b6 100644 --- a/.gitignore +++ b/.gitignore @@ -28,6 +28,7 @@ **/cdk.out **/cdk.context.json **/cdk-outputs.json +**/ts.out #------------------- diff --git a/ts.out/code-pipeline/bin/index.d.ts b/ts.out/code-pipeline/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/code-pipeline/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/code-pipeline/bin/index.js b/ts.out/code-pipeline/bin/index.js deleted file mode 100644 index dfbc643..0000000 --- a/ts.out/code-pipeline/bin/index.js +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const config_1 = require("../../config"); -const ecs_codedeploy_stack_1 = require("../lib/ecs-codedeploy-stack"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION, -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -const serviceName = 'fargate-restapi'; -new ecs_codedeploy_stack_1.EcsCodeDeployStack(app, `codepipeline-${serviceName}-${stage}`, { - env, - stage, - serviceName, - description: `Code Pipeline, service name: ${serviceName}-${stage}`, - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2RlLXBpcGVsaW5lL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBQ25DLHlDQUE2QztBQUM3QyxzRUFBaUU7QUFFakUsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUc7SUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7SUFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0NBQ3pDLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxzQkFBYSxDQUFDO0FBRS9ELE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDO0FBRXRDLElBQUkseUNBQWtCLENBQUMsR0FBRyxFQUFFLGdCQUFnQixXQUFXLElBQUksS0FBSyxFQUFFLEVBQUU7SUFDaEUsR0FBRztJQUNILEtBQUs7SUFDTCxXQUFXO0lBQ1gsV0FBVyxFQUFFLGdDQUFnQyxXQUFXLElBQUksS0FBSyxFQUFFO0lBQ25FLHFCQUFxQixFQUFFLEtBQUssS0FBRyxzQkFBYTtDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBFY3NDb2RlRGVwbG95U3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWNvZGVkZXBsb3ktc3RhY2snO1xuXG5jb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xuY29uc3QgZW52ID0ge1xuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT04sXG59O1xuY29uc3Qgc3RhZ2UgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KCdzdGFnZScpIHx8IERFRkFVTFRfU1RBR0U7XG5cbmNvbnN0IHNlcnZpY2VOYW1lID0gJ2ZhcmdhdGUtcmVzdGFwaSc7XG5cbm5ldyBFY3NDb2RlRGVwbG95U3RhY2soYXBwLCBgY29kZXBpcGVsaW5lLSR7c2VydmljZU5hbWV9LSR7c3RhZ2V9YCwge1xuICAgIGVudixcbiAgICBzdGFnZSxcbiAgICBzZXJ2aWNlTmFtZSxcbiAgICBkZXNjcmlwdGlvbjogYENvZGUgUGlwZWxpbmUsIHNlcnZpY2UgbmFtZTogJHtzZXJ2aWNlTmFtZX0tJHtzdGFnZX1gLFxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts deleted file mode 100644 index 5aeeb21..0000000 --- a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -import { Stack, StackProps } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -export interface EcsCodeDeployStackProps extends StackProps { - stage: string; - serviceName: string; -} -/** - * SSM parameters: - * /cdk-ecs-fargate/ecr-repo-arn - * /cdk-ecs-fargate/ecr-repo-name - * /cdk-ecs-fargate/cluster-securitygroup-id - * /cdk-ecs-fargate/cluster-name - * /cdk-ecs-fargate/codecommit-arn - */ -export declare class EcsCodeDeployStack extends Stack { - constructor(scope: Construct, id: string, props: EcsCodeDeployStackProps); -} diff --git a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js b/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js deleted file mode 100644 index bed7e38..0000000 --- a/ts.out/code-pipeline/lib/ecs-codedeploy-stack.js +++ /dev/null @@ -1,149 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.EcsCodeDeployStack = void 0; -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const cdk = __importStar(require("aws-cdk-lib")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const ecr = __importStar(require("aws-cdk-lib/aws-ecr")); -const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); -const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); -const iam = __importStar(require("aws-cdk-lib/aws-iam")); -const codebuild = __importStar(require("aws-cdk-lib/aws-codebuild")); -const codepipeline = __importStar(require("aws-cdk-lib/aws-codepipeline")); -const codecommit = __importStar(require("aws-cdk-lib/aws-codecommit")); -const codepipeline_actions = __importStar(require("aws-cdk-lib/aws-codepipeline-actions")); -const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); -const config_1 = require("../../config"); -/** - * SSM parameters: - * /cdk-ecs-fargate/ecr-repo-arn - * /cdk-ecs-fargate/ecr-repo-name - * /cdk-ecs-fargate/cluster-securitygroup-id - * /cdk-ecs-fargate/cluster-name - * /cdk-ecs-fargate/codecommit-arn - */ -class EcsCodeDeployStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - var _a, _b; - super(scope, id, props); - const ecrRepo = ecr.Repository.fromRepositoryAttributes(this, 'ecr-repo', { - repositoryArn: cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/ecr-repo-arn`) }), - repositoryName: ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/ecr-repo-name`) - }); - const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); - const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); - const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); - const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); - const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { - clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, - vpc, - securityGroups: [ecsSecurityGroup] - }); - const service = ecs.FargateService.fromFargateServiceAttributes(this, 'fargate-cluster', { - cluster, - serviceName: cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-name`) }) - }); - const serviceName = props.serviceName; - const repository = codecommit.Repository.fromRepositoryArn(this, `${serviceName}-codecommit-arn`, cdk.Lazy.string({ produce: () => ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/codecommit-arn`) })); - /** - * buildImage: codebuild.LinuxBuildImage.AMAZON_LINUX_2_4, - * buildImage: codebuild.LinuxBuildImage.fromDockerRegistry('public.ecr.aws/h1a5s9h8/alpine:latest') - */ - const project = new codebuild.Project(this, `cb-project-${serviceName}`, { - projectName: `${serviceName}-build`, - source: codebuild.Source.codeCommit({ repository }), - environment: { - buildImage: codebuild.LinuxBuildImage.STANDARD_6_0, - privileged: true - }, - buildSpec: codebuild.BuildSpec.fromSourceFilename('./buildspec.yaml'), - badge: true, - environmentVariables: { - 'ACCOUNT_ID': { - value: (_a = props === null || props === void 0 ? void 0 : props.env) === null || _a === void 0 ? void 0 : _a.account - }, - 'CLUSTER_NAME': { - value: `${service.cluster.clusterName}` - }, - 'SERVICE_NAME': { - value: `${service.serviceName}` - }, - 'ECR_REPO_URI': { - value: `${ecrRepo.repositoryUri}` - } - } - }); - ecrRepo.grantPullPush(project.role); - (_b = project.role) === null || _b === void 0 ? void 0 : _b.addManagedPolicy(iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonEC2ContainerRegistryPowerUser')); - const sourceOutput = new codepipeline.Artifact(); - const buildOutput = new codepipeline.Artifact(); - /** - * aws secretsmanager create-secret --name '/github/token' --secret-string {your-token} - * or set the token with oauthToken: cdk.SecretValue.plainText(''), - */ - const sourceAction = new codepipeline_actions.GitHubSourceAction({ - actionName: 'GitHub_Source', - owner: 'engel80', - repo: 'fargate-restapi-local', - branch: 'master', - oauthToken: cdk.SecretValue.secretsManager("/github/token"), - output: sourceOutput - }); - const buildAction = new codepipeline_actions.CodeBuildAction({ - actionName: 'CodeBuild', - project, - input: sourceOutput, - outputs: [buildOutput], - }); - const manualApprovalAction = new codepipeline_actions.ManualApprovalAction({ - actionName: 'Approve', - }); - const deployAction = new codepipeline_actions.EcsDeployAction({ - actionName: 'DeployAction', - service: service, - imageFile: new codepipeline.ArtifactPath(buildOutput, `imagedefinitions.json`) - }); - new codepipeline.Pipeline(this, 'ecs-deploy-pipeline', { - pipelineName: `ecs-deploy-${service.serviceName}`, - stages: [ - { - stageName: 'Source', - actions: [sourceAction], - }, - { - stageName: 'Build', - actions: [buildAction], - }, - { - stageName: 'Approve', - actions: [manualApprovalAction], - }, - { - stageName: 'Deploy', - actions: [deployAction], - } - ] - }); - } -} -exports.EcsCodeDeployStack = EcsCodeDeployStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWNvZGVkZXBsb3ktc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9jb2RlLXBpcGVsaW5lL2xpYi9lY3MtY29kZWRlcGxveS1zdGFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNkNBQWdEO0FBQ2hELGlEQUFtQztBQUNuQyx5REFBMkM7QUFFM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHFFQUF1RDtBQUN2RCwyRUFBNkQ7QUFDN0QsdUVBQXlEO0FBQ3pELDJGQUE2RTtBQUk3RSxpRkFBNEU7QUFDNUUseUNBQTBDO0FBTzFDOzs7Ozs7O0dBT0c7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBOEI7O1FBQ3BFLEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sT0FBTyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQXdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRTtZQUN0RSxhQUFhLEVBQUUsR0FBRyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsbUJBQVUsZUFBZSxDQUFDLEVBQUUsQ0FBQztZQUMxSCxjQUFjLEVBQUUsR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcsbUJBQVUsZ0JBQWdCLENBQUM7U0FDM0YsQ0FBQyxDQUFDO1FBRUgsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLEdBQUcs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UTtvQkFDbkIsT0FBTyxFQUFFLENBQUMsWUFBWSxDQUFDO2lCQUMxQjtnQkFDRDtvQkFDSSxTQUFTLEVBQUUsT0FBTztvQkFDbEIsT0FBTyxFQUFFLENBQUMsV0FBVyxDQUFDO2lCQUN6QjtnQkFDRDtvQkFDSSxTQUFTLEVBQUUsU0FBUztvQkFDcEIsT0FBTyxFQUFFLENBQUMsb0JBQW9CLENBQUM7aUJBQ2xDO2dCQUNEO29CQUNJLFNBQVMsRUFBRSxRQUFRO29CQUNuQixPQUFPLEVBQUUsQ0FBQyxZQUFZLENBQUM7aUJBQzFCO2FBQ0o7U0FDSixDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFoSEQsZ0RBZ0hDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMgfSBmcm9tICdhd3MtY2RrLWxpYic7XG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xuXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XG5pbXBvcnQgKiBhcyBpYW0gZnJvbSAnYXdzLWNkay1saWIvYXdzLWlhbSc7XG5pbXBvcnQgKiBhcyBjb2RlYnVpbGQgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVidWlsZCc7XG5pbXBvcnQgKiBhcyBjb2RlcGlwZWxpbmUgZnJvbSAnYXdzLWNkay1saWIvYXdzLWNvZGVwaXBlbGluZSc7XG5pbXBvcnQgKiBhcyBjb2RlY29tbWl0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlY29tbWl0JztcbmltcG9ydCAqIGFzIGNvZGVwaXBlbGluZV9hY3Rpb25zIGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlcGlwZWxpbmUtYWN0aW9ucyc7XG5cbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xuXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZyc7XG5pbXBvcnQgeyBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcbmltcG9ydCB7IElCYXNlU2VydmljZSB9IGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVjc0NvZGVEZXBsb3lTdGFja1Byb3BzIGV4dGVuZHMgU3RhY2tQcm9wcyB7XG4gICAgc3RhZ2U6IHN0cmluZztcbiAgICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xufVxuLyoqXG4gKiBTU00gcGFyYW1ldGVyczpcbiAqIC9jZGstZWNzLWZhcmdhdGUvZWNyLXJlcG8tYXJuXG4gKiAvY2RrLWVjcy1mYXJnYXRlL2Vjci1yZXBvLW5hbWVcbiAqIC9jZGstZWNzLWZhcmdhdGUvY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkXG4gKiAvY2RrLWVjcy1mYXJnYXRlL2NsdXN0ZXItbmFtZVxuICogL2Nkay1lY3MtZmFyZ2F0ZS9jb2RlY29tbWl0LWFyblxuICovXG5leHBvcnQgY2xhc3MgRWNzQ29kZURlcGxveVN0YWNrIGV4dGVuZHMgU3RhY2sge1xuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFY3NDb2RlRGVwbG95U3RhY2tQcm9wcykge1xuICAgICAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcblxuICAgICAgICBjb25zdCBlY3JSZXBvID0gZWNyLlJlcG9zaXRvcnkuZnJvbVJlcG9zaXRvcnlBdHRyaWJ1dGVzKHRoaXMsICdlY3ItcmVwbycsIHtcbiAgICAgICAgICAgIHJlcG9zaXRvcnlBcm46IGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2Vjci1yZXBvLWFybmApIH0pLFxuICAgICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2Vjci1yZXBvLW5hbWVgKVxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xuICAgICAgICBjb25zdCB2cGMgPSBlYzIuVnBjLmZyb21Mb29rdXAodGhpcywgJ3ZwYycsIHsgdnBjSWQgfSk7XG4gICAgICAgIGNvbnN0IGNsdXN0ZXJTZ0lkID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCk7XG4gICAgICAgIGNvbnN0IGVjc1NlY3VyaXR5R3JvdXAgPSBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCBjbHVzdGVyU2dJZCk7XG5cbiAgICAgICAgY29uc3QgY2x1c3RlciA9IGVjcy5DbHVzdGVyLmZyb21DbHVzdGVyQXR0cmlidXRlcyh0aGlzLCAnZWNzLWZhcmdhdGUtY2x1c3RlcicsIHtcbiAgICAgICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YCxcbiAgICAgICAgICAgIHZwYyxcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbZWNzU2VjdXJpdHlHcm91cF1cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnN0IHNlcnZpY2UgPSBlY3MuRmFyZ2F0ZVNlcnZpY2UuZnJvbUZhcmdhdGVTZXJ2aWNlQXR0cmlidXRlcyh0aGlzLCAnZmFyZ2F0ZS1jbHVzdGVyJywge1xuICAgICAgICAgICAgY2x1c3RlcixcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBjZGsuTGF6eS5zdHJpbmcoeyBwcm9kdWNlOiAoKSA9PiBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRnJvbUxvb2t1cCh0aGlzLCBgJHtTU01fUFJFRklYfS9jbHVzdGVyLW5hbWVgKSB9KVxuICAgICAgICB9KSBhcyBJQmFzZVNlcnZpY2U7XG5cbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IGNvZGVjb21taXQuUmVwb3NpdG9yeS5mcm9tUmVwb3NpdG9yeUFybih0aGlzLCBgJHtzZXJ2aWNlTmFtZX0tY29kZWNvbW1pdC1hcm5gLFxuICAgICAgICAgICAgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY29kZWNvbW1pdC1hcm5gKSB9KSk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGJ1aWxkSW1hZ2U6IGNvZGVidWlsZC5MaW51eEJ1aWxkSW1hZ2UuQU1BWk9OX0xJTlVYXzJfNCxcbiAgICAgICAgICogYnVpbGRJbWFnZTogY29kZWJ1aWxkLkxpbnV4QnVpbGRJbWFnZS5mcm9tRG9ja2VyUmVnaXN0cnkoJ3B1YmxpYy5lY3IuYXdzL2gxYTVzOWg4L2FscGluZTpsYXRlc3QnKVxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgcHJvamVjdCA9IG5ldyBjb2RlYnVpbGQuUHJvamVjdCh0aGlzLCBgY2ItcHJvamVjdC0ke3NlcnZpY2VOYW1lfWAsIHtcbiAgICAgICAgICAgIHByb2plY3ROYW1lOiBgJHtzZXJ2aWNlTmFtZX0tYnVpbGRgLFxuICAgICAgICAgICAgc291cmNlOiBjb2RlYnVpbGQuU291cmNlLmNvZGVDb21taXQoeyByZXBvc2l0b3J5IH0pLFxuICAgICAgICAgICAgZW52aXJvbm1lbnQ6IHtcbiAgICAgICAgICAgICAgICBidWlsZEltYWdlOiBjb2RlYnVpbGQuTGludXhCdWlsZEltYWdlLlNUQU5EQVJEXzZfMCxcbiAgICAgICAgICAgICAgICBwcml2aWxlZ2VkOiB0cnVlXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgYnVpbGRTcGVjOiBjb2RlYnVpbGQuQnVpbGRTcGVjLmZyb21Tb3VyY2VGaWxlbmFtZSgnLi9idWlsZHNwZWMueWFtbCcpLFxuICAgICAgICAgICAgYmFkZ2U6IHRydWUsXG4gICAgICAgICAgICBlbnZpcm9ubWVudFZhcmlhYmxlczoge1xuICAgICAgICAgICAgICAgICdBQ0NPVU5UX0lEJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogcHJvcHM/LmVudj8uYWNjb3VudFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgJ0NMVVNURVJfTkFNRSc6IHtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGAke3NlcnZpY2UuY2x1c3Rlci5jbHVzdGVyTmFtZX1gXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnU0VSVklDRV9OQU1FJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYCR7c2VydmljZS5zZXJ2aWNlTmFtZX1gXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnRUNSX1JFUE9fVVJJJzoge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogYCR7ZWNyUmVwby5yZXBvc2l0b3J5VXJpfWBcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBlY3JSZXBvLmdyYW50UHVsbFB1c2gocHJvamVjdC5yb2xlISk7XG4gICAgICAgIHByb2plY3Qucm9sZT8uYWRkTWFuYWdlZFBvbGljeShpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoJ0FtYXpvbkVDMkNvbnRhaW5lclJlZ2lzdHJ5UG93ZXJVc2VyJykpO1xuXG4gICAgICAgIGNvbnN0IHNvdXJjZU91dHB1dCA9IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3QoKTtcbiAgICAgICAgY29uc3QgYnVpbGRPdXRwdXQgPSBuZXcgY29kZXBpcGVsaW5lLkFydGlmYWN0KCk7XG5cbiAgICAgICAgLyoqXG4gICAgICAgICAqIGF3cyBzZWNyZXRzbWFuYWdlciBjcmVhdGUtc2VjcmV0IC0tbmFtZSAnL2dpdGh1Yi90b2tlbicgLS1zZWNyZXQtc3RyaW5nIHt5b3VyLXRva2VufVxuICAgICAgICAgKiBvciBzZXQgdGhlIHRva2VuIHdpdGggb2F1dGhUb2tlbjogY2RrLlNlY3JldFZhbHVlLnBsYWluVGV4dCgnPHBsYWluLXRleHQ+JyksXG4gICAgICAgICAqL1xuICAgICAgICBjb25zdCBzb3VyY2VBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuR2l0SHViU291cmNlQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6ICdHaXRIdWJfU291cmNlJyxcbiAgICAgICAgICAgIG93bmVyOiAnZW5nZWw4MCcsXG4gICAgICAgICAgICByZXBvOiAnZmFyZ2F0ZS1yZXN0YXBpLWxvY2FsJyxcbiAgICAgICAgICAgIGJyYW5jaDogJ21hc3RlcicsXG4gICAgICAgICAgICBvYXV0aFRva2VuOiBjZGsuU2VjcmV0VmFsdWUuc2VjcmV0c01hbmFnZXIoXCIvZ2l0aHViL3Rva2VuXCIpLFxuICAgICAgICAgICAgb3V0cHV0OiBzb3VyY2VPdXRwdXRcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgYnVpbGRBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuQ29kZUJ1aWxkQWN0aW9uKHtcbiAgICAgICAgICAgIGFjdGlvbk5hbWU6ICdDb2RlQnVpbGQnLFxuICAgICAgICAgICAgcHJvamVjdCxcbiAgICAgICAgICAgIGlucHV0OiBzb3VyY2VPdXRwdXQsXG4gICAgICAgICAgICBvdXRwdXRzOiBbYnVpbGRPdXRwdXRdLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgbWFudWFsQXBwcm92YWxBY3Rpb24gPSBuZXcgY29kZXBpcGVsaW5lX2FjdGlvbnMuTWFudWFsQXBwcm92YWxBY3Rpb24oe1xuICAgICAgICAgICAgYWN0aW9uTmFtZTogJ0FwcHJvdmUnLFxuICAgICAgICB9KTtcbiAgICAgICAgY29uc3QgZGVwbG95QWN0aW9uID0gbmV3IGNvZGVwaXBlbGluZV9hY3Rpb25zLkVjc0RlcGxveUFjdGlvbih7XG4gICAgICAgICAgICBhY3Rpb25OYW1lOiAnRGVwbG95QWN0aW9uJyxcbiAgICAgICAgICAgIHNlcnZpY2U6IHNlcnZpY2UsXG4gICAgICAgICAgICBpbWFnZUZpbGU6IG5ldyBjb2RlcGlwZWxpbmUuQXJ0aWZhY3RQYXRoKGJ1aWxkT3V0cHV0LCBgaW1hZ2VkZWZpbml0aW9ucy5qc29uYClcbiAgICAgICAgfSk7XG5cbiAgICAgICAgbmV3IGNvZGVwaXBlbGluZS5QaXBlbGluZSh0aGlzLCAnZWNzLWRlcGxveS1waXBlbGluZScsIHtcbiAgICAgICAgICAgIHBpcGVsaW5lTmFtZTogYGVjcy1kZXBsb3ktJHtzZXJ2aWNlLnNlcnZpY2VOYW1lfWAsXG4gICAgICAgICAgICBzdGFnZXM6IFtcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YWdlTmFtZTogJ1NvdXJjZScsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtzb3VyY2VBY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZU5hbWU6ICdCdWlsZCcsXG4gICAgICAgICAgICAgICAgICAgIGFjdGlvbnM6IFtidWlsZEFjdGlvbl0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIHN0YWdlTmFtZTogJ0FwcHJvdmUnLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbbWFudWFsQXBwcm92YWxBY3Rpb25dLFxuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBzdGFnZU5hbWU6ICdEZXBsb3knLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiBbZGVwbG95QWN0aW9uXSxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBdXG4gICAgICAgIH0pO1xuICAgIH1cbn1cbiJdfQ== \ No newline at end of file diff --git a/ts.out/config.d.ts b/ts.out/config.d.ts deleted file mode 100644 index 316142e..0000000 --- a/ts.out/config.d.ts +++ /dev/null @@ -1,18 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -/** - * /cdk-ecs-fargate/vpc-id - * - * ecs-fargate-cluster: - * /cdk-ecs-fargate/cluster-capacityprovider-name - * /cdk-ecs-fargate/cluster-securitygroup-id - * - * iam-role: - * /cdk-ecs-fargate/task-execution-role-arn - * /cdk-ecs-fargate/default-task-role-arn - * - */ -export declare const SSM_PREFIX = "/cdk-ecs-fargate"; -export declare const DEFAULT_STAGE = "dev"; -export interface StackCommonProps extends cdk.StackProps { - stage: string; -} diff --git a/ts.out/config.js b/ts.out/config.js deleted file mode 100644 index 75adcb3..0000000 --- a/ts.out/config.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.DEFAULT_STAGE = exports.SSM_PREFIX = void 0; -/** - * /cdk-ecs-fargate/vpc-id - * - * ecs-fargate-cluster: - * /cdk-ecs-fargate/cluster-capacityprovider-name - * /cdk-ecs-fargate/cluster-securitygroup-id - * - * iam-role: - * /cdk-ecs-fargate/task-execution-role-arn - * /cdk-ecs-fargate/default-task-role-arn - * - */ -exports.SSM_PREFIX = '/cdk-ecs-fargate'; -exports.DEFAULT_STAGE = 'dev'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBOzs7Ozs7Ozs7OztHQVdHO0FBQ1UsUUFBQSxVQUFVLEdBQUcsa0JBQWtCLENBQUM7QUFHaEMsUUFBQSxhQUFhLEdBQUcsS0FBSyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcblxuLyoqXG4gKiAvY2RrLWVjcy1mYXJnYXRlL3ZwYy1pZFxuICogXG4gKiBlY3MtZmFyZ2F0ZS1jbHVzdGVyOlxuICogICAvY2RrLWVjcy1mYXJnYXRlL2NsdXN0ZXItY2FwYWNpdHlwcm92aWRlci1uYW1lXG4gKiAgIC9jZGstZWNzLWZhcmdhdGUvY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkXG4gKiBcbiAqIGlhbS1yb2xlOlxuICogICAvY2RrLWVjcy1mYXJnYXRlL3Rhc2stZXhlY3V0aW9uLXJvbGUtYXJuXG4gKiAgIC9jZGstZWNzLWZhcmdhdGUvZGVmYXVsdC10YXNrLXJvbGUtYXJuXG4gKiBcbiAqL1xuZXhwb3J0IGNvbnN0IFNTTV9QUkVGSVggPSAnL2Nkay1lY3MtZmFyZ2F0ZSc7XG5cblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfU1RBR0UgPSAnZGV2JztcblxuZXhwb3J0IGludGVyZmFjZSBTdGFja0NvbW1vblByb3BzIGV4dGVuZHMgY2RrLlN0YWNrUHJvcHMge1xuICAgIHN0YWdlOiBzdHJpbmc7XG59Il19 \ No newline at end of file diff --git a/ts.out/ecr-codecommit/bin/index.d.ts b/ts.out/ecr-codecommit/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/ecr-codecommit/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/ecr-codecommit/bin/index.js b/ts.out/ecr-codecommit/bin/index.js deleted file mode 100644 index 86d1cb0..0000000 --- a/ts.out/ecr-codecommit/bin/index.js +++ /dev/null @@ -1,40 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const ecr_codecommit_stack_1 = require("../lib/ecr-codecommit-stack"); -const config_1 = require("../../config"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -const serviceName = `fargate-restapi-${stage}`; -new ecr_codecommit_stack_1.EcrCodeCommitStack(app, `ecr-${serviceName}`, { - env, - stage, - serviceName, - description: `ECR: ${serviceName}`, - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3ItY29kZWNvbW1pdC9iaW4vaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyxzRUFBaUU7QUFDakUseUNBQTZDO0FBRTdDLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sR0FBRyxHQUFHO0lBQ1IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO0lBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtDQUN6QyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksc0JBQWEsQ0FBQztBQUMvRCxNQUFNLFdBQVcsR0FBRyxtQkFBbUIsS0FBSyxFQUFFLENBQUE7QUFFOUMsSUFBSSx5Q0FBa0IsQ0FBQyxHQUFHLEVBQUUsT0FBTyxXQUFXLEVBQUUsRUFBRTtJQUM5QyxHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVc7SUFDWCxXQUFXLEVBQUUsUUFBUSxXQUFXLEVBQUU7SUFDbEMscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgRWNyQ29kZUNvbW1pdFN0YWNrIH0gZnJvbSAnLi4vbGliL2Vjci1jb2RlY29tbWl0LXN0YWNrJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcblxyXG5jb25zdCBhcHAgPSBuZXcgY2RrLkFwcCgpO1xyXG5jb25zdCBlbnYgPSB7XHJcbiAgICBhY2NvdW50OiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9BQ0NPVU5ULFxyXG4gICAgcmVnaW9uOiBwcm9jZXNzLmVudi5DREtfREVGQVVMVF9SRUdJT05cclxufTtcclxuY29uc3Qgc3RhZ2UgPSBhcHAubm9kZS50cnlHZXRDb250ZXh0KCdzdGFnZScpIHx8IERFRkFVTFRfU1RBR0U7XHJcbmNvbnN0IHNlcnZpY2VOYW1lID0gYGZhcmdhdGUtcmVzdGFwaS0ke3N0YWdlfWBcclxuXHJcbm5ldyBFY3JDb2RlQ29tbWl0U3RhY2soYXBwLCBgZWNyLSR7c2VydmljZU5hbWV9YCwge1xyXG4gICAgZW52LFxyXG4gICAgc3RhZ2UsXHJcbiAgICBzZXJ2aWNlTmFtZSxcclxuICAgIGRlc2NyaXB0aW9uOiBgRUNSOiAke3NlcnZpY2VOYW1lfWAsXHJcbiAgICB0ZXJtaW5hdGlvblByb3RlY3Rpb246IHN0YWdlIT09REVGQVVMVF9TVEFHRVxyXG59KTtcclxuIl19 \ No newline at end of file diff --git a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts deleted file mode 100644 index c120464..0000000 --- a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.d.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { Construct } from 'constructs'; -import { Stack } from 'aws-cdk-lib'; -import { StackCommonProps } from '../../config'; -export interface EcrStackProps extends StackCommonProps { - serviceName: string; -} -/** - * Build 'app/Dockerfile' and push to ECR for X86 and ARM - */ -export declare class EcrCodeCommitStack extends Stack { - constructor(scope: Construct, id: string, props: EcrStackProps); -} diff --git a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js b/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js deleted file mode 100644 index 4817230..0000000 --- a/ts.out/ecr-codecommit/lib/ecr-codecommit-stack.js +++ /dev/null @@ -1,77 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.EcrCodeCommitStack = void 0; -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const path = __importStar(require("path")); -const codecommit = __importStar(require("aws-cdk-lib/aws-codecommit")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const ecr = __importStar(require("aws-cdk-lib/aws-ecr")); -const assets = __importStar(require("aws-cdk-lib/aws-ecr-assets")); -const ecrdeploy = __importStar(require("cdk-ecr-deployment")); -const config_1 = require("../../config"); -/** - * Build 'app/Dockerfile' and push to ECR for X86 and ARM - */ -class EcrCodeCommitStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - super(scope, id, props); - const stage = props.stage; - const serviceName = props.serviceName; - const assetX86 = new assets.DockerImageAsset(this, 'ecr-image-x86', { - directory: path.join(__dirname, "../../", "app") - }); - const ecrRepo = new ecr.Repository(this, `${serviceName}`, { - repositoryName: `${serviceName}` - }); - new ecrdeploy.ECRDeployment(this, 'ecr-deploy-x86', { - src: new ecrdeploy.DockerImageName(assetX86.imageUri), - dest: new ecrdeploy.DockerImageName(`${ecrRepo.repositoryUriForTag('latest')}`), - }); - const assetArm = new assets.DockerImageAsset(this, 'ecr-image-arm', { - directory: path.join(__dirname, "../../", "app"), - platform: assets.Platform.LINUX_ARM64, - }); - const ecrArmRepo = new ecr.Repository(this, `${serviceName}-arm`, { - repositoryName: `${serviceName}-arm` - }); - new ecrdeploy.ECRDeployment(this, 'ecr-deploy-arm', { - src: new ecrdeploy.DockerImageName(assetArm.imageUri), - dest: new ecrdeploy.DockerImageName(`${ecrArmRepo.repositoryUriForTag('latest')}`), - }); - const codecommitRepo = new codecommit.Repository(this, `${serviceName}-codecommit`, { - repositoryName: `${serviceName}` - }); - aws_cdk_lib_1.Tags.of(codecommitRepo).add('Stage', stage); - aws_cdk_lib_1.Tags.of(ecrRepo).add('Stage', stage); - aws_cdk_lib_1.Tags.of(ecrArmRepo).add('Stage', stage); - new aws_cdk_lib_1.CfnOutput(this, 'URI', { value: ecrRepo.repositoryUri }); - new aws_cdk_lib_1.CfnOutput(this, 'URIARM', { value: ecrArmRepo.repositoryUri }); - new ssm.StringParameter(this, 'ssm-codecommit-arn', { parameterName: `${config_1.SSM_PREFIX}/codecommit-arn`, stringValue: codecommitRepo.repositoryArn }); - new ssm.StringParameter(this, 'ssm-ecr-repo-name', { parameterName: `${config_1.SSM_PREFIX}/ecr-repo-name`, stringValue: ecrRepo.repositoryName }); - new ssm.StringParameter(this, 'ssm-ecr-repo-arn', { parameterName: `${config_1.SSM_PREFIX}/ecr-repo-arn`, stringValue: ecrRepo.repositoryArn }); - new ssm.StringParameter(this, 'ssm-ecr-armrepo-name', { parameterName: `${config_1.SSM_PREFIX}/ecr-armrepo-name`, stringValue: ecrArmRepo.repositoryUri }); - new ssm.StringParameter(this, 'ssm-ecr-armrepo-arn', { parameterName: `${config_1.SSM_PREFIX}/ecr-armrepo-arn`, stringValue: ecrArmRepo.repositoryArn }); - new aws_cdk_lib_1.CfnOutput(this, 'CodeCommitRepoUrl', { value: codecommitRepo.repositoryCloneUrlHttp }); - } -} -exports.EcrCodeCommitStack = EcrCodeCommitStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNyLWNvZGVjb21taXQtc3RhY2suanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3ItY29kZWNvbW1pdC9saWIvZWNyLWNvZGVjb21taXQtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLDZDQUFxRDtBQUNyRCwyQ0FBNkI7QUFDN0IsdUVBQXlEO0FBQ3pELHlEQUEyQztBQUMzQyx5REFBMkM7QUFDM0MsbUVBQXFEO0FBQ3JELDhEQUFnRDtBQUVoRCx5Q0FBNEQ7QUFLNUQ7O0dBRUc7QUFDSCxNQUFhLGtCQUFtQixTQUFRLG1CQUFLO0lBQ3pDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBb0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztRQUMxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1FBRXRDLE1BQU0sUUFBUSxHQUFHLElBQUksTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksRUFBRSxlQUFlLEVBQUU7WUFDaEUsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUM7U0FDbkQsQ0FBQyxDQUFDO1FBQ0gsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxHQUFHLFdBQVcsRUFBRSxFQUFFO1lBQ3ZELGNBQWMsRUFBRSxHQUFHLFdBQVcsRUFBRTtTQUNuQyxDQUFDLENBQUM7UUFDSCxJQUFJLFNBQVMsQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFO1lBQ2hELEdBQUcsRUFBRSxJQUFJLFNBQVMsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQztZQUNyRCxJQUFJLEVBQUUsSUFBSSxTQUFTLENB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LENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLENBQUM7SUFDL0YsQ0FBQztDQUNKO0FBbERELGdEQWtEQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgeyBTdGFjaywgQ2ZuT3V0cHV0LCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG5pbXBvcnQgKiBhcyBjb2RlY29tbWl0IGZyb20gJ2F3cy1jZGstbGliL2F3cy1jb2RlY29tbWl0JztcclxuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xyXG5pbXBvcnQgKiBhcyBlY3IgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcic7XHJcbmltcG9ydCAqIGFzIGFzc2V0cyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNyLWFzc2V0cyc7XHJcbmltcG9ydCAqIGFzIGVjcmRlcGxveSBmcm9tICdjZGstZWNyLWRlcGxveW1lbnQnO1xyXG5cclxuaW1wb3J0IHsgU3RhY2tDb21tb25Qcm9wcywgU1NNX1BSRUZJWCB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIEVjclN0YWNrUHJvcHMgZXh0ZW5kcyBTdGFja0NvbW1vblByb3BzIHtcclxuICAgIHNlcnZpY2VOYW1lOiBzdHJpbmc7XHJcbn1cclxuLyoqXHJcbiAqIEJ1aWxkICdhcHAvRG9ja2VyZmlsZScgYW5kIHB1c2ggdG8gRUNSIGZvciBYODYgYW5kIEFSTVxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVjckNvZGVDb21taXRTdGFjayBleHRlbmRzIFN0YWNrIHtcclxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBFY3JTdGFja1Byb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHN0YWdlID0gcHJvcHMuc3RhZ2U7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSBwcm9wcy5zZXJ2aWNlTmFtZTtcclxuXHJcbiAgICAgICAgY29uc3QgYXNzZXRYODYgPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ2Vjci1pbWFnZS14ODYnLCB7XHJcbiAgICAgICAgICAgIGRpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9cIiwgXCJhcHBcIilcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb25zdCBlY3JSZXBvID0gbmV3IGVjci5SZXBvc2l0b3J5KHRoaXMsIGAke3NlcnZpY2VOYW1lfWAsIHtcclxuICAgICAgICAgICAgcmVwb3NpdG9yeU5hbWU6IGAke3NlcnZpY2VOYW1lfWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXcgZWNyZGVwbG95LkVDUkRlcGxveW1lbnQodGhpcywgJ2Vjci1kZXBsb3kteDg2Jywge1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBlY3JkZXBsb3kuRG9ja2VySW1hZ2VOYW1lKGFzc2V0WDg2LmltYWdlVXJpKSxcclxuICAgICAgICAgICAgZGVzdDogbmV3IGVjcmRlcGxveS5Eb2NrZXJJbWFnZU5hbWUoYCR7ZWNyUmVwby5yZXBvc2l0b3J5VXJpRm9yVGFnKCdsYXRlc3QnKX1gKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgYXNzZXRBcm0gPSBuZXcgYXNzZXRzLkRvY2tlckltYWdlQXNzZXQodGhpcywgJ2Vjci1pbWFnZS1hcm0nLCB7XHJcbiAgICAgICAgICAgIGRpcmVjdG9yeTogcGF0aC5qb2luKF9fZGlybmFtZSwgXCIuLi8uLi9cIiwgXCJhcHBcIiksXHJcbiAgICAgICAgICAgIHBsYXRmb3JtOiBhc3NldHMuUGxhdGZvcm0uTElOVVhfQVJNNjQsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgZWNyQXJtUmVwbyA9IG5ldyBlY3IuUmVwb3NpdG9yeSh0aGlzLCBgJHtzZXJ2aWNlTmFtZX0tYXJtYCwge1xyXG4gICAgICAgICAgICByZXBvc2l0b3J5TmFtZTogYCR7c2VydmljZU5hbWV9LWFybWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBuZXcgZWNyZGVwbG95LkVDUkRlcGxveW1lbnQodGhpcywgJ2Vjci1kZXBsb3ktYXJtJywge1xyXG4gICAgICAgICAgICBzcmM6IG5ldyBlY3JkZXBsb3kuRG9ja2VySW1hZ2VOYW1lKGFzc2V0QXJtLmltYWdlVXJpKSxcclxuICAgICAgICAgICAgZGVzdDogbmV3IGVjcmRlcGxveS5Eb2NrZXJJbWFnZU5hbWUoYCR7ZWNyQXJtUmVwby5yZXBvc2l0b3J5VXJpRm9yVGFnKCdsYXRlc3QnKX1gKSxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY29kZWNvbW1pdFJlcG8gPSBuZXcgY29kZWNvbW1pdC5SZXBvc2l0b3J5KHRoaXMsIGAke3NlcnZpY2VOYW1lfS1jb2RlY29tbWl0YCwge1xyXG4gICAgICAgICAgICByZXBvc2l0b3J5TmFtZTogYCR7c2VydmljZU5hbWV9YFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBUYWdzLm9mKGNvZGVjb21taXRSZXBvKS5hZGQoJ1N0YWdlJywgc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoZWNyUmVwbykuYWRkKCdTdGFnZScsIHN0YWdlKTtcclxuICAgICAgICBUYWdzLm9mKGVjckFybVJlcG8pLmFkZCgnU3RhZ2UnLCBzdGFnZSk7XHJcblxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1VSSScsIHsgdmFsdWU6IGVjclJlcG8ucmVwb3NpdG9yeVVyaSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdVUklBUk0nLCB7IHZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlVcmkgfSk7XHJcblxyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tY29kZWNvbW1pdC1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NvZGVjb21taXQtYXJuYCwgc3RyaW5nVmFsdWU6IGNvZGVjb21taXRSZXBvLnJlcG9zaXRvcnlBcm4gfSk7XHJcblxyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLXJlcG8tbmFtZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZWNyLXJlcG8tbmFtZWAsIHN0cmluZ1ZhbHVlOiBlY3JSZXBvLnJlcG9zaXRvcnlOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLXJlcG8tYXJuJywgeyBwYXJhbWV0ZXJOYW1lOiBgJHtTU01fUFJFRklYfS9lY3ItcmVwby1hcm5gLCBzdHJpbmdWYWx1ZTogZWNyUmVwby5yZXBvc2l0b3J5QXJuIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tZWNyLWFybXJlcG8tbmFtZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZWNyLWFybXJlcG8tbmFtZWAsIHN0cmluZ1ZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlVcmkgfSk7XHJcbiAgICAgICAgbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1lY3ItYXJtcmVwby1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2Vjci1hcm1yZXBvLWFybmAsIHN0cmluZ1ZhbHVlOiBlY3JBcm1SZXBvLnJlcG9zaXRvcnlBcm4gfSk7XHJcblxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0NvZGVDb21taXRSZXBvVXJsJywgeyB2YWx1ZTogY29kZWNvbW1pdFJlcG8ucmVwb3NpdG9yeUNsb25lVXJsSHR0cCB9KTtcclxuICAgIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/bin/index.d.ts b/ts.out/ecs-fargate-cluster/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/ecs-fargate-cluster/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/ecs-fargate-cluster/bin/index.js b/ts.out/ecs-fargate-cluster/bin/index.js deleted file mode 100644 index f4eb09f..0000000 --- a/ts.out/ecs-fargate-cluster/bin/index.js +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const config_1 = require("../../config"); -const cluster_config_1 = require("../lib/cluster-config"); -const ecs_fargate_cluster_stack_1 = require("../lib/ecs-fargate-cluster-stack"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION, -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -new ecs_fargate_cluster_stack_1.EcsFargateClusterStack(app, `ecs-fargate-cluster-${cluster_config_1.CLUSTER_NAME}-${stage}`, { - env, - stage, - description: `ECS Fargate cluster, cluster name: ${cluster_config_1.CLUSTER_NAME}-${stage}`, - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBRW5DLHlDQUE2QztBQUM3QywwREFBcUQ7QUFDckQsZ0ZBQTBFO0FBRTFFLE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLEdBQUcsRUFBRSxDQUFDO0FBQzFCLE1BQU0sR0FBRyxHQUFHO0lBQ1IsT0FBTyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUJBQW1CO0lBQ3hDLE1BQU0sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQjtDQUN6QyxDQUFDO0FBQ0YsTUFBTSxLQUFLLEdBQUcsR0FBRyxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLElBQUksc0JBQWEsQ0FBQztBQUUvRCxJQUFJLGtEQUFzQixDQUFDLEdBQUcsRUFBRSx1QkFBdUIsNkJBQVksSUFBSSxLQUFLLEVBQUUsRUFBRTtJQUM1RSxHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVcsRUFBRSxzQ0FBc0MsNkJBQVksSUFBSSxLQUFLLEVBQUU7SUFDMUUscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XG5cbmltcG9ydCB7IERFRkFVTFRfU1RBR0UgfSBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IHsgQ0xVU1RFUl9OQU1FIH0gZnJvbSAnLi4vbGliL2NsdXN0ZXItY29uZmlnJztcbmltcG9ydCB7IEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWZhcmdhdGUtY2x1c3Rlci1zdGFjayc7XG5cbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XG5jb25zdCBlbnYgPSB7XG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTixcbn07XG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcblxubmV3IEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2soYXBwLCBgZWNzLWZhcmdhdGUtY2x1c3Rlci0ke0NMVVNURVJfTkFNRX0tJHtzdGFnZX1gLCB7XG4gICAgZW52LFxuICAgIHN0YWdlLFxuICAgIGRlc2NyaXB0aW9uOiBgRUNTIEZhcmdhdGUgY2x1c3RlciwgY2x1c3RlciBuYW1lOiAke0NMVVNURVJfTkFNRX0tJHtzdGFnZX1gLFxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXG59KTtcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts b/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts deleted file mode 100644 index b0ed70b..0000000 --- a/ts.out/ecs-fargate-cluster/lib/cluster-config.d.ts +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env node -export declare const CLUSTER_NAME = "fargate"; -export declare const INSTANCE_TYPE = "c5.xlarge"; diff --git a/ts.out/ecs-fargate-cluster/lib/cluster-config.js b/ts.out/ecs-fargate-cluster/lib/cluster-config.js deleted file mode 100644 index 2400c9e..0000000 --- a/ts.out/ecs-fargate-cluster/lib/cluster-config.js +++ /dev/null @@ -1,7 +0,0 @@ -#!/usr/bin/env node -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.INSTANCE_TYPE = exports.CLUSTER_NAME = void 0; -exports.CLUSTER_NAME = 'fargate'; -exports.INSTANCE_TYPE = 'c5.xlarge'; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2x1c3Rlci1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBRWEsUUFBQSxZQUFZLEdBQUcsU0FBUyxDQUFDO0FBRXpCLFFBQUEsYUFBYSxHQUFHLFdBQVcsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuZXhwb3J0IGNvbnN0IENMVVNURVJfTkFNRSA9ICdmYXJnYXRlJztcblxuZXhwb3J0IGNvbnN0IElOU1RBTkNFX1RZUEUgPSAnYzUueGxhcmdlJztcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts deleted file mode 100644 index 286570f..0000000 --- a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.d.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { Stack } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -import { StackCommonProps } from '../../config'; -/** - * Create ECS Fargate cluster and shared security group for ALB ingress - */ -export declare class EcsFargateClusterStack extends Stack { - constructor(scope: Construct, id: string, props: StackCommonProps); -} diff --git a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js b/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js deleted file mode 100644 index b1a0d53..0000000 --- a/ts.out/ecs-fargate-cluster/lib/ecs-fargate-cluster-stack.js +++ /dev/null @@ -1,61 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.EcsFargateClusterStack = void 0; -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); -const cluster_config_1 = require("../lib/cluster-config"); -const config_1 = require("../../config"); -/** - * Create ECS Fargate cluster and shared security group for ALB ingress - */ -class EcsFargateClusterStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - super(scope, id, props); - const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); - const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); - const clusterName = `${cluster_config_1.CLUSTER_NAME}-${props.stage}`; - const cluster = new ecs.Cluster(this, 'ecs-cluster', { - vpc, - clusterName, - containerInsights: true, - }); - const securityGroupName = `ecssg-${clusterName}`; - const ecsSecurityGroup = new ec2.SecurityGroup(this, 'ecs-security-group', { - vpc, - securityGroupName, - description: `ECS Fargate shared security group for ALB ingress, cluster: ${cluster}`, - }); - aws_cdk_lib_1.Tags.of(ecsSecurityGroup).add('Stage', props.stage); - aws_cdk_lib_1.Tags.of(ecsSecurityGroup).add('Name', securityGroupName); - new aws_cdk_lib_1.CfnOutput(this, 'Cluster', { value: cluster.clusterName }); - new aws_cdk_lib_1.CfnOutput(this, 'ECS Security Group ID', { value: ecsSecurityGroup.securityGroupId }); - // cluster-name and cluster-arn is used for deployment pipeline - new ssm.StringParameter(this, 'ssm-cluster-name', { parameterName: `${config_1.SSM_PREFIX}/cluster-name`, stringValue: cluster.clusterName }); - new ssm.StringParameter(this, 'ssm-cluster-arn', { parameterName: `${config_1.SSM_PREFIX}/cluster-arn`, stringValue: cluster.clusterArn }); - // cluster-securitygroup-id is used to add inboud from ALB to Fargate service - new ssm.StringParameter(this, 'ssm-cluster-securitygroup-id', { parameterName: `${config_1.SSM_PREFIX}/cluster-securitygroup-id`, stringValue: ecsSecurityGroup.securityGroupId }); - } -} -exports.EcsFargateClusterStack = EcsFargateClusterStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGUtY2x1c3Rlci1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Vjcy1mYXJnYXRlLWNsdXN0ZXIvbGliL2Vjcy1mYXJnYXRlLWNsdXN0ZXItc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUFxRDtBQUNyRCx5REFBMkM7QUFDM0MseURBQTJDO0FBQzNDLHlEQUEyQztBQUczQywwREFBcUQ7QUFDckQseUNBQTREO0FBRTVEOztHQUVHO0FBQ0gsTUFBYSxzQkFBdUIsU0FBUSxtQkFBSztJQUM3QyxZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQXVCO1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBRXZELE1BQU0sV0FBVyxHQUFHLEdBQUcsNkJBQVksSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDckQsTUFBTSxPQUFPLEdBQUcsSUFBSSxHQUFHLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxhQUFhLEVBQUU7WUFDakQsR0FBRztZQUNILFdBQVc7WUFDWCxpQkFBaUIsRUFBRSxJQUFJO1NBQzFCLENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsU0FBUyxXQUFXLEVBQUUsQ0FBQztRQUNqRCxNQUFNLGdCQUFnQixHQUFHLElBQUksR0FBRyxDQUFDLGFBQWEsQ0FBQyxJQUFJLEVBQUUsb0JBQW9CLEVBQUU7WUFDdkUsR0FBRztZQUNILGlCQUFpQjtZQUNqQixXQUFXLEVBQUUsK0RBQStELE9BQU8sRUFBRTtTQUN4RixDQUFDLENBQUM7UUFDSCxrQkFBSSxDQUFDLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ3BELGtCQUFJLENBQUMsRUFBRSxDQUFDLGdCQUFnQixDQUFDLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO1FBRXpELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQy9ELElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLEVBQUUsRUFBQyxLQUFLLEVBQUUsZ0JBQWdCLENBQUMsZUFBZSxFQUFDLENBQUMsQ0FBQztRQUV4RiwrREFBK0Q7UUFDL0QsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLGVBQWUsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckksSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxpQkFBaUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLGNBQWMsRUFBRSxXQUFXLEVBQUUsT0FBTyxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7UUFFbEksNkVBQTZFO1FBQzdFLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQyxJQUFJLEVBQUUsOEJBQThCLEVBQUUsRUFBRSxhQUFhLEVBQUUsR0FBRyxtQkFBVSwyQkFBMkIsRUFBRSxXQUFXLEVBQUUsZ0JBQWdCLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztJQUM5SyxDQUFDO0NBQ0o7QUFqQ0Qsd0RBaUNDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIENmbk91dHB1dCwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0ICogYXMgZWMyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lYzInO1xyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcbmltcG9ydCAqIGFzIGVjcyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWNzJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcblxyXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi9saWIvY2x1c3Rlci1jb25maWcnO1xyXG5pbXBvcnQgeyBTdGFja0NvbW1vblByb3BzLCBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBDcmVhdGUgRUNTIEZhcmdhdGUgY2x1c3RlciBhbmQgc2hhcmVkIHNlY3VyaXR5IGdyb3VwIGZvciBBTEIgaW5ncmVzc1xyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEVjc0ZhcmdhdGVDbHVzdGVyU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tDb21tb25Qcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xyXG5cclxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xyXG4gICAgICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAndnBjJywgeyB2cGNJZCB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgY2x1c3Rlck5hbWUgPSBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YDtcclxuICAgICAgICBjb25zdCBjbHVzdGVyID0gbmV3IGVjcy5DbHVzdGVyKHRoaXMsICdlY3MtY2x1c3RlcicsIHtcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBjbHVzdGVyTmFtZSxcclxuICAgICAgICAgICAgY29udGFpbmVySW5zaWdodHM6IHRydWUsXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHNlY3VyaXR5R3JvdXBOYW1lID0gYGVjc3NnLSR7Y2x1c3Rlck5hbWV9YDtcclxuICAgICAgICBjb25zdCBlY3NTZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCB7XHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cE5hbWUsXHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiBgRUNTIEZhcmdhdGUgc2hhcmVkIHNlY3VyaXR5IGdyb3VwIGZvciBBTEIgaW5ncmVzcywgY2x1c3RlcjogJHtjbHVzdGVyfWAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgVGFncy5vZihlY3NTZWN1cml0eUdyb3VwKS5hZGQoJ1N0YWdlJywgcHJvcHMuc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoZWNzU2VjdXJpdHlHcm91cCkuYWRkKCdOYW1lJywgc2VjdXJpdHlHcm91cE5hbWUpO1xyXG4gICAgICAgIFxyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0NsdXN0ZXInLCB7IHZhbHVlOiBjbHVzdGVyLmNsdXN0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ0VDUyBTZWN1cml0eSBHcm91cCBJRCcsIHt2YWx1ZTogZWNzU2VjdXJpdHlHcm91cC5zZWN1cml0eUdyb3VwSWR9KTtcclxuXHJcbiAgICAgICAgLy8gY2x1c3Rlci1uYW1lIGFuZCBjbHVzdGVyLWFybiBpcyB1c2VkIGZvciBkZXBsb3ltZW50IHBpcGVsaW5lXHJcbiAgICAgICAgbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1jbHVzdGVyLW5hbWUnLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItbmFtZWAsIHN0cmluZ1ZhbHVlOiBjbHVzdGVyLmNsdXN0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tY2x1c3Rlci1hcm4nLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItYXJuYCwgc3RyaW5nVmFsdWU6IGNsdXN0ZXIuY2x1c3RlckFybiB9KTtcclxuXHJcbiAgICAgICAgLy8gY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkIGlzIHVzZWQgdG8gYWRkIGluYm91ZCBmcm9tIEFMQiB0byBGYXJnYXRlIHNlcnZpY2VcclxuICAgICAgICBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnc3NtLWNsdXN0ZXItc2VjdXJpdHlncm91cC1pZCcsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCwgc3RyaW5nVmFsdWU6IGVjc1NlY3VyaXR5R3JvdXAuc2VjdXJpdHlHcm91cElkIH0pO1xyXG4gICAgfVxyXG59XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-service-restapi/bin/index.d.ts b/ts.out/ecs-fargate-service-restapi/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/ecs-fargate-service-restapi/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/ecs-fargate-service-restapi/bin/index.js b/ts.out/ecs-fargate-service-restapi/bin/index.js deleted file mode 100644 index f723788..0000000 --- a/ts.out/ecs-fargate-service-restapi/bin/index.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const config_1 = require("../../config"); -const ecs_fargate_service_restapi_stack_1 = require("../lib/ecs-fargate-service-restapi-stack"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -new ecs_fargate_service_restapi_stack_1.FargateRestAPIServiceStack(app, `ecs-fargate-service-restapi-${stage}`, { - env, - stage, - description: 'ECS Fargate service for RESTful API with ALB', - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGkvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMseUNBQTZDO0FBQzdDLGdHQUFzRjtBQUV0RixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSw4REFBMEIsQ0FBQyxHQUFHLEVBQUUsK0JBQStCLEtBQUssRUFBRSxFQUFFO0lBQ3hFLEdBQUc7SUFDSCxLQUFLO0lBQ0wsV0FBVyxFQUFFLDhDQUE4QztJQUMzRCxxQkFBcUIsRUFBRSxLQUFLLEtBQUcsc0JBQWE7Q0FDL0MsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxyXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgeyBERUZBVUxUX1NUQUdFIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuaW1wb3J0IHsgRmFyZ2F0ZVJlc3RBUElTZXJ2aWNlU3RhY2sgfSBmcm9tICcuLi9saWIvZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpLXN0YWNrJztcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XHJcbmNvbnN0IGVudiA9IHtcclxuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXHJcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTlxyXG59O1xyXG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcclxuXHJcbm5ldyBGYXJnYXRlUmVzdEFQSVNlcnZpY2VTdGFjayhhcHAsIGBlY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGktJHtzdGFnZX1gLCB7XHJcbiAgICBlbnYsXHJcbiAgICBzdGFnZSxcclxuICAgIGRlc2NyaXB0aW9uOiAnRUNTIEZhcmdhdGUgc2VydmljZSBmb3IgUkVTVGZ1bCBBUEkgd2l0aCBBTEInLFxyXG4gICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBzdGFnZSE9PURFRkFVTFRfU1RBR0VcclxufSk7XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts deleted file mode 100644 index 772da03..0000000 --- a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Construct } from 'constructs'; -import { Stack } from 'aws-cdk-lib'; -import { StackCommonProps } from '../../config'; -/** - * Crearte Fargate Service, Auto Scaling, ALB, and Log Group. - * Set the ALB options for the production-level. - */ -export declare class FargateRestAPIServiceStack extends Stack { - constructor(scope: Construct, id: string, props: StackCommonProps); -} diff --git a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js b/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js deleted file mode 100644 index 9dabdad..0000000 --- a/ts.out/ecs-fargate-service-restapi/lib/ecs-fargate-service-restapi-stack.js +++ /dev/null @@ -1,142 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FargateRestAPIServiceStack = void 0; -const cdk = __importStar(require("aws-cdk-lib")); -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); -const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); -const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2")); -const logs = __importStar(require("aws-cdk-lib/aws-logs")); -const iam = __importStar(require("aws-cdk-lib/aws-iam")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); -const config_1 = require("../../config"); -/** - * Crearte Fargate Service, Auto Scaling, ALB, and Log Group. - * Set the ALB options for the production-level. - */ -class FargateRestAPIServiceStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - var _a, _b; - super(scope, id, props); - const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); - const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); - const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); - const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); - const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { - clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, - vpc, - securityGroups: [ecsSecurityGroup] - }); - const serviceName = 'fargate-restapi'; - const containerName = `${serviceName}-container`; - const applicationPort = 8080; - const executionRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/task-execution-role-arn`); - const taskRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/default-task-role-arn`); - const taskDefinition = new ecs.TaskDefinition(this, 'fargate-task-definition', { - cpu: '1024', - memoryMiB: '2048', - compatibility: ecs.Compatibility.FARGATE, - family: `${serviceName}-task`, - executionRole: iam.Role.fromRoleArn(this, 'task-execution-role', cdk.Lazy.string({ produce: () => executionRoleArn })), - taskRole: iam.Role.fromRoleArn(this, 'task-role', cdk.Lazy.string({ produce: () => taskRoleArn })) - }); - const regUrl = `${(_a = props.env) === null || _a === void 0 ? void 0 : _a.account}.dkr.ecr.${(_b = props.env) === null || _b === void 0 ? void 0 : _b.region}.amazonaws.com/fargate-restapi-${props.stage}:latest`; - const container = taskDefinition.addContainer('container-restapi', { - containerName, - image: ecs.ContainerImage.fromRegistry(regUrl), - // or build with /app folder asset - // import * as path from 'path'; - // image: ecs.ContainerImage.fromAsset(path.join(__dirname, "../../", "app")), - cpu: 1024, - memoryReservationMiB: 2048 - }); - container.addPortMappings({ containerPort: applicationPort, hostPort: applicationPort }); - const fargateservice = new ecs.FargateService(this, 'ecs-fargate-service', { - cluster, - serviceName: `${serviceName}-${props.stage}`, - taskDefinition, - enableExecuteCommand: true, - minHealthyPercent: 100, - maxHealthyPercent: 200, - healthCheckGracePeriod: aws_cdk_lib_1.Duration.seconds(0) // set the value as your application initialize time - }); - fargateservice.autoScaleTaskCount({ - minCapacity: 2, - maxCapacity: 100, - }).scaleOnCpuUtilization('cpuscaling', { - targetUtilizationPercent: 50, - scaleOutCooldown: aws_cdk_lib_1.Duration.seconds(60), - scaleInCooldown: aws_cdk_lib_1.Duration.seconds(120) - }); - const logGroup = new logs.LogGroup(this, 'loggroup', { - logGroupName: serviceName, - removalPolicy: cdk.RemovalPolicy.DESTROY, - retention: logs.RetentionDays.TWO_WEEKS, - }); - const albSecurityGroupName = `albsg-${serviceName}`; - const albSecurityGroup = new ec2.SecurityGroup(this, albSecurityGroupName, { - securityGroupName: albSecurityGroupName, - vpc, - allowAllOutbound: true, - description: `ALB security group for ${serviceName} Service` - }); - ecsSecurityGroup.addIngressRule(albSecurityGroup, ec2.Port.tcp(applicationPort), 'Allow from ALB'); - albSecurityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80), 'Allow any'); - const alb = new elbv2.ApplicationLoadBalancer(this, 'alb', { - securityGroup: albSecurityGroup, - vpc, - loadBalancerName: `alb-${serviceName}`, - internetFacing: true, - deletionProtection: false, - idleTimeout: cdk.Duration.seconds(30), - }); - alb.addListener('https-listener', { - protocol: elbv2.ApplicationProtocol.HTTP, - open: false, - }).addTargets('ec2-service-target', { - targetGroupName: `tg-${serviceName}`, - port: applicationPort, - protocol: elbv2.ApplicationProtocol.HTTP, - targets: [fargateservice.loadBalancerTarget({ - containerName: containerName, - containerPort: applicationPort, - })], - healthCheck: { - healthyThresholdCount: 2, - unhealthyThresholdCount: 5, - interval: aws_cdk_lib_1.Duration.seconds(31), - path: '/ping', - timeout: aws_cdk_lib_1.Duration.seconds(30), - }, - deregistrationDelay: aws_cdk_lib_1.Duration.seconds(15) - }); - aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Stage', props.stage); - aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Name', albSecurityGroupName); - new aws_cdk_lib_1.CfnOutput(this, 'Service', { value: fargateservice.serviceArn }); - new aws_cdk_lib_1.CfnOutput(this, 'TaskDefinition', { value: taskDefinition.family }); - new aws_cdk_lib_1.CfnOutput(this, 'LogGroup', { value: logGroup.logGroupName }); - new aws_cdk_lib_1.CfnOutput(this, 'ALB', { value: alb.loadBalancerDnsName }); - } -} -exports.FargateRestAPIServiceStack = FargateRestAPIServiceStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZWNzLWZhcmdhdGUtc2VydmljZS1yZXN0YXBpL2xpYi9lY3MtZmFyZ2F0ZS1zZXJ2aWNlLXJlc3RhcGktc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyw2Q0FBK0Q7QUFDL0QseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyw4RUFBZ0U7QUFDaEUsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaUZBQTRFO0FBQzVFLHlDQUE0RDtBQUU1RDs7O0dBR0c7QUFDSCxNQUFhLDBCQUEyQixTQUFRLG1CQUFLO0lBQ2pELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLDJCQUEyQixDQUFDLENBQUM7UUFDeEcsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RyxNQUFNLE9BQU8sR0FB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Q0FBQyxDQUFDO1FBQ3JFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsZ0JBQWdCLEVBQUUsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsRUFBRSxLQUFLLEVBQUUsUUFBUSxDQUFDLFlBQVksRUFBRSxDQUFDLENBQUM7UUFDbEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztJQUNuRSxDQUFDO0NBQ0o7QUFqSEQsZ0VBaUhDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XHJcbmltcG9ydCB7IFN0YWNrLCBDZm5PdXRwdXQsIER1cmF0aW9uLCBUYWdzIH0gZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgKiBhcyBlY3MgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjcyc7XHJcbmltcG9ydCAqIGFzIGVjMiBmcm9tICdhd3MtY2RrLWxpYi9hd3MtZWMyJztcclxuaW1wb3J0ICogYXMgZWxidjIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVsYXN0aWNsb2FkYmFsYW5jaW5ndjInO1xyXG5pbXBvcnQgKiBhcyBsb2dzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1sb2dzJztcclxuaW1wb3J0ICogYXMgaWFtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1pYW0nO1xyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcblxyXG5pbXBvcnQgeyBDTFVTVEVSX05BTUUgfSBmcm9tICcuLi8uLi9lY3MtZmFyZ2F0ZS1jbHVzdGVyL2xpYi9jbHVzdGVyLWNvbmZpZyc7XHJcbmltcG9ydCB7IFN0YWNrQ29tbW9uUHJvcHMsIFNTTV9QUkVGSVggfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuLyoqXHJcbiAqIENyZWFydGUgRmFyZ2F0ZSBTZXJ2aWNlLCBBdXRvIFNjYWxpbmcsIEFMQiwgYW5kIExvZyBHcm91cC5cclxuICogU2V0IHRoZSBBTEIgb3B0aW9ucyBmb3IgdGhlIHByb2R1Y3Rpb24tbGV2ZWwuXHJcbiAqL1xyXG5leHBvcnQgY2xhc3MgRmFyZ2F0ZVJlc3RBUElTZXJ2aWNlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgICBjb25zdHJ1Y3RvcihzY29wZTogQ29uc3RydWN0LCBpZDogc3RyaW5nLCBwcm9wczogU3RhY2tDb21tb25Qcm9wcykge1xyXG4gICAgICAgIHN1cGVyKHNjb3BlLCBpZCwgcHJvcHMpO1xyXG5cclxuICAgICAgICBjb25zdCB2cGNJZCA9IHRoaXMubm9kZS50cnlHZXRDb250ZXh0KCd2cGNJZCcpIHx8IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L3ZwYy1pZGApO1xyXG4gICAgICAgIGNvbnN0IHZwYyA9IGVjMi5WcGMuZnJvbUxvb2t1cCh0aGlzLCAndnBjJywgeyB2cGNJZCB9KTtcclxuICAgICAgICBjb25zdCBjbHVzdGVyU2dJZCA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2NsdXN0ZXItc2VjdXJpdHlncm91cC1pZGApO1xyXG4gICAgICAgIGNvbnN0IGVjc1NlY3VyaXR5R3JvdXAgPSBlYzIuU2VjdXJpdHlHcm91cC5mcm9tU2VjdXJpdHlHcm91cElkKHRoaXMsICdlY3Mtc2VjdXJpdHktZ3JvdXAnLCBjbHVzdGVyU2dJZCk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNsdXN0ZXIgPSBlY3MuQ2x1c3Rlci5mcm9tQ2x1c3RlckF0dHJpYnV0ZXModGhpcywgJ2Vjcy1mYXJnYXRlLWNsdXN0ZXInLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXJOYW1lOiBgJHtDTFVTVEVSX05BTUV9LSR7cHJvcHMuc3RhZ2V9YCxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwczogW2Vjc1NlY3VyaXR5R3JvdXBdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSAnZmFyZ2F0ZS1yZXN0YXBpJ1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lck5hbWUgPSBgJHtzZXJ2aWNlTmFtZX0tY29udGFpbmVyYFxyXG4gICAgICAgIGNvbnN0IGFwcGxpY2F0aW9uUG9ydCA9IDgwODA7XHJcblxyXG4gICAgICAgIGNvbnN0IGV4ZWN1dGlvblJvbGVBcm4gPSBzc20uU3RyaW5nUGFyYW1ldGVyLnZhbHVlRnJvbUxvb2t1cCh0aGlzLCBgJHtTU01fUFJFRklYfS90YXNrLWV4ZWN1dGlvbi1yb2xlLWFybmApO1xyXG4gICAgICAgIGNvbnN0IHRhc2tSb2xlQXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vZGVmYXVsdC10YXNrLXJvbGUtYXJuYCk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRhc2tEZWZpbml0aW9uID0gbmV3IGVjcy5UYXNrRGVmaW5pdGlvbih0aGlzLCAnZmFyZ2F0ZS10YXNrLWRlZmluaXRpb24nLCB7XHJcbiAgICAgICAgICAgIGNwdTogJzEwMjQnLFxyXG4gICAgICAgICAgICBtZW1vcnlNaUI6ICcyMDQ4JyxcclxuICAgICAgICAgICAgY29tcGF0aWJpbGl0eTogZWNzLkNvbXBhdGliaWxpdHkuRkFSR0FURSxcclxuICAgICAgICAgICAgZmFtaWx5OiBgJHtzZXJ2aWNlTmFtZX0tdGFza2AsXHJcbiAgICAgICAgICAgIGV4ZWN1dGlvblJvbGU6IGlhbS5Sb2xlLmZyb21Sb2xlQXJuKHRoaXMsICd0YXNrLWV4ZWN1dGlvbi1yb2xlJywgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gZXhlY3V0aW9uUm9sZUFybiB9KSksXHJcbiAgICAgICAgICAgIHRhc2tSb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAndGFzay1yb2xlJywgY2RrLkxhenkuc3RyaW5nKHsgcHJvZHVjZTogKCkgPT4gdGFza1JvbGVBcm4gfSkpXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgXHJcbiAgICAgICAgY29uc3QgcmVnVXJsID0gYCR7cHJvcHMuZW52Py5hY2NvdW50fS5ka3IuZWNyLiR7cHJvcHMuZW52Py5yZWdpb259LmFtYXpvbmF3cy5jb20vZmFyZ2F0ZS1yZXN0YXBpLSR7cHJvcHMuc3RhZ2V9OmxhdGVzdGA7XHJcbiAgICAgICAgY29uc3QgY29udGFpbmVyID0gdGFza0RlZmluaXRpb24uYWRkQ29udGFpbmVyKCdjb250YWluZXItcmVzdGFwaScsIHtcclxuICAgICAgICAgICAgY29udGFpbmVyTmFtZSxcclxuICAgICAgICAgICAgaW1hZ2U6IGVjcy5Db250YWluZXJJbWFnZS5mcm9tUmVnaXN0cnkocmVnVXJsKSxcclxuICAgICAgICAgICAgLy8gb3IgYnVpbGQgd2l0aCAvYXBwIGZvbGRlciBhc3NldFxyXG4gICAgICAgICAgICAvLyBpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG4gICAgICAgICAgICAvLyBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBcImFwcFwiKSksXHJcbiAgICAgICAgICAgIGNwdTogMTAyNCxcclxuICAgICAgICAgICAgbWVtb3J5UmVzZXJ2YXRpb25NaUI6IDIwNDhcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHsgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LCBob3N0UG9ydDogYXBwbGljYXRpb25Qb3J0IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBmYXJnYXRlc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ2Vjcy1mYXJnYXRlLXNlcnZpY2UnLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIsXHJcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBgJHtzZXJ2aWNlTmFtZX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB0YXNrRGVmaW5pdGlvbixcclxuICAgICAgICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXHJcbiAgICAgICAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMCkgLy8gc2V0IHRoZSB2YWx1ZSBhcyB5b3VyIGFwcGxpY2F0aW9uIGluaXRpYWxpemUgdGltZSBcclxuICAgICAgICB9KTtcclxuICAgICAgICBmYXJnYXRlc2VydmljZS5hdXRvU2NhbGVUYXNrQ291bnQoe1xyXG4gICAgICAgICAgICBtaW5DYXBhY2l0eTogMixcclxuICAgICAgICAgICAgbWF4Q2FwYWNpdHk6IDEwMCxcclxuICAgICAgICB9KS5zY2FsZU9uQ3B1VXRpbGl6YXRpb24oJ2NwdXNjYWxpbmcnLCB7XHJcbiAgICAgICAgICAgIHRhcmdldFV0aWxpemF0aW9uUGVyY2VudDogNTAsXHJcbiAgICAgICAgICAgIHNjYWxlT3V0Q29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoNjApLFxyXG4gICAgICAgICAgICBzY2FsZUluQ29vbGRvd246IER1cmF0aW9uLnNlY29uZHMoMTIwKVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBsb2dHcm91cCA9IG5ldyBsb2dzLkxvZ0dyb3VwKHRoaXMsICdsb2dncm91cCcsIHtcclxuICAgICAgICAgICAgbG9nR3JvdXBOYW1lOiBzZXJ2aWNlTmFtZSxcclxuICAgICAgICAgICAgcmVtb3ZhbFBvbGljeTogY2RrLlJlbW92YWxQb2xpY3kuREVTVFJPWSxcclxuICAgICAgICAgICAgcmV0ZW50aW9uOiBsb2dzLlJldGVudGlvbkRheXMuVFdPX1dFRUtTLFxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBhbGJTZWN1cml0eUdyb3VwTmFtZSA9IGBhbGJzZy0ke3NlcnZpY2VOYW1lfWBcclxuICAgICAgICBjb25zdCBhbGJTZWN1cml0eUdyb3VwID0gbmV3IGVjMi5TZWN1cml0eUdyb3VwKHRoaXMsIGFsYlNlY3VyaXR5R3JvdXBOYW1lLCB7XHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBOYW1lOiBhbGJTZWN1cml0eUdyb3VwTmFtZSxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBhbGxvd0FsbE91dGJvdW5kOiB0cnVlLFxyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogYEFMQiBzZWN1cml0eSBncm91cCBmb3IgJHtzZXJ2aWNlTmFtZX0gU2VydmljZWBcclxuICAgICAgICB9KTtcclxuICAgICAgICBlY3NTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGFsYlNlY3VyaXR5R3JvdXAsIGVjMi5Qb3J0LnRjcChhcHBsaWNhdGlvblBvcnQpLCAnQWxsb3cgZnJvbSBBTEInKTtcclxuICAgICAgICBhbGJTZWN1cml0eUdyb3VwLmFkZEluZ3Jlc3NSdWxlKGVjMi5QZWVyLmFueUlwdjQoKSwgZWMyLlBvcnQudGNwKDgwKSwgJ0FsbG93IGFueScpO1xyXG5cclxuICAgICAgICBjb25zdCBhbGIgPSBuZXcgZWxidjIuQXBwbGljYXRpb25Mb2FkQmFsYW5jZXIodGhpcywgJ2FsYicsIHtcclxuICAgICAgICAgICAgc2VjdXJpdHlHcm91cDogYWxiU2VjdXJpdHlHcm91cCxcclxuICAgICAgICAgICAgdnBjLFxyXG4gICAgICAgICAgICBsb2FkQmFsYW5jZXJOYW1lOiBgYWxiLSR7c2VydmljZU5hbWV9YCxcclxuICAgICAgICAgICAgaW50ZXJuZXRGYWNpbmc6IHRydWUsXHJcbiAgICAgICAgICAgIGRlbGV0aW9uUHJvdGVjdGlvbjogZmFsc2UsXHJcbiAgICAgICAgICAgIGlkbGVUaW1lb3V0OiBjZGsuRHVyYXRpb24uc2Vjb25kcygzMCksXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgYWxiLmFkZExpc3RlbmVyKCdodHRwcy1saXN0ZW5lcicsIHtcclxuICAgICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcclxuICAgICAgICAgICAgb3BlbjogZmFsc2UsXHJcbiAgICAgICAgfSkuYWRkVGFyZ2V0cygnZWMyLXNlcnZpY2UtdGFyZ2V0Jywge1xyXG4gICAgICAgICAgICB0YXJnZXRHcm91cE5hbWU6IGB0Zy0ke3NlcnZpY2VOYW1lfWAsXHJcbiAgICAgICAgICAgIHBvcnQ6IGFwcGxpY2F0aW9uUG9ydCxcclxuICAgICAgICAgICAgcHJvdG9jb2w6IGVsYnYyLkFwcGxpY2F0aW9uUHJvdG9jb2wuSFRUUCxcclxuICAgICAgICAgICAgdGFyZ2V0czogW2ZhcmdhdGVzZXJ2aWNlLmxvYWRCYWxhbmNlclRhcmdldCh7XHJcbiAgICAgICAgICAgICAgICBjb250YWluZXJOYW1lOiBjb250YWluZXJOYW1lLFxyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LFxyXG4gICAgICAgICAgICB9KV0sXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrOiB7XHJcbiAgICAgICAgICAgICAgICBoZWFsdGh5VGhyZXNob2xkQ291bnQ6IDIsXHJcbiAgICAgICAgICAgICAgICB1bmhlYWx0aHlUaHJlc2hvbGRDb3VudDogNSxcclxuICAgICAgICAgICAgICAgIGludGVydmFsOiBEdXJhdGlvbi5zZWNvbmRzKDMxKSxcclxuICAgICAgICAgICAgICAgIHBhdGg6ICcvcGluZycsXHJcbiAgICAgICAgICAgICAgICB0aW1lb3V0OiBEdXJhdGlvbi5zZWNvbmRzKDMwKSxcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZGVyZWdpc3RyYXRpb25EZWxheTogRHVyYXRpb24uc2Vjb25kcygxNSlcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgVGFncy5vZihhbGJTZWN1cml0eUdyb3VwKS5hZGQoJ1N0YWdlJywgcHJvcHMuc3RhZ2UpO1xyXG4gICAgICAgIFRhZ3Mub2YoYWxiU2VjdXJpdHlHcm91cCkuYWRkKCdOYW1lJywgYWxiU2VjdXJpdHlHcm91cE5hbWUpO1xyXG5cclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdTZXJ2aWNlJywgeyB2YWx1ZTogZmFyZ2F0ZXNlcnZpY2Uuc2VydmljZUFybiB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdUYXNrRGVmaW5pdGlvbicsIHsgdmFsdWU6IHRhc2tEZWZpbml0aW9uLmZhbWlseSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdMb2dHcm91cCcsIHsgdmFsdWU6IGxvZ0dyb3VwLmxvZ0dyb3VwTmFtZSB9KTtcclxuICAgICAgICBuZXcgQ2ZuT3V0cHV0KHRoaXMsICdBTEInLCB7IHZhbHVlOiBhbGIubG9hZEJhbGFuY2VyRG5zTmFtZSB9KTtcclxuICAgIH1cclxufVxyXG4iXX0= \ No newline at end of file diff --git a/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts b/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/ecs-fargatespot-service-restapi/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/ecs-fargatespot-service-restapi/bin/index.js b/ts.out/ecs-fargatespot-service-restapi/bin/index.js deleted file mode 100644 index cf46341..0000000 --- a/ts.out/ecs-fargatespot-service-restapi/bin/index.js +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const config_1 = require("../../config"); -const ecs_fargatespot_service_restapi_stack_1 = require("../lib/ecs-fargatespot-service-restapi-stack"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -new ecs_fargatespot_service_restapi_stack_1.FargateSpotRestAPIServiceStack(app, `ecs-fargatespot-service-restapi-${stage}`, { - env, - stage, - description: 'ECS Fargate service for RESTful API with Spot CapacityProvider and ALB', - terminationProtection: stage != config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtZmFyZ2F0ZXNwb3Qtc2VydmljZS1yZXN0YXBpL2Jpbi9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0EsaURBQW1DO0FBQ25DLHlDQUE2QztBQUM3Qyx3R0FBOEY7QUFFOUYsTUFBTSxHQUFHLEdBQUcsSUFBSSxHQUFHLENBQUMsR0FBRyxFQUFFLENBQUM7QUFDMUIsTUFBTSxHQUFHLEdBQUc7SUFDUixPQUFPLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxtQkFBbUI7SUFDeEMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCO0NBQ3pDLENBQUM7QUFDRixNQUFNLEtBQUssR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxzQkFBYSxDQUFDO0FBRS9ELElBQUksc0VBQThCLENBQUMsR0FBRyxFQUFFLG1DQUFtQyxLQUFLLEVBQUUsRUFBRTtJQUNoRixHQUFHO0lBQ0gsS0FBSztJQUNMLFdBQVcsRUFBRSx3RUFBd0U7SUFDckYscUJBQXFCLEVBQUUsS0FBSyxJQUFFLHNCQUFhO0NBQzlDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IEZhcmdhdGVTcG90UmVzdEFQSVNlcnZpY2VTdGFjayB9IGZyb20gJy4uL2xpYi9lY3MtZmFyZ2F0ZXNwb3Qtc2VydmljZS1yZXN0YXBpLXN0YWNrJztcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBjZGsuQXBwKCk7XHJcbmNvbnN0IGVudiA9IHtcclxuICAgIGFjY291bnQ6IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX0FDQ09VTlQsXHJcbiAgICByZWdpb246IHByb2Nlc3MuZW52LkNES19ERUZBVUxUX1JFR0lPTlxyXG59O1xyXG5jb25zdCBzdGFnZSA9IGFwcC5ub2RlLnRyeUdldENvbnRleHQoJ3N0YWdlJykgfHwgREVGQVVMVF9TVEFHRTtcclxuXHJcbm5ldyBGYXJnYXRlU3BvdFJlc3RBUElTZXJ2aWNlU3RhY2soYXBwLCBgZWNzLWZhcmdhdGVzcG90LXNlcnZpY2UtcmVzdGFwaS0ke3N0YWdlfWAsIHtcclxuICAgIGVudixcclxuICAgIHN0YWdlLFxyXG4gICAgZGVzY3JpcHRpb246ICdFQ1MgRmFyZ2F0ZSBzZXJ2aWNlIGZvciBSRVNUZnVsIEFQSSB3aXRoIFNwb3QgQ2FwYWNpdHlQcm92aWRlciBhbmQgQUxCJyxcclxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPURFRkFVTFRfU1RBR0VcclxufSk7XHJcbiJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts deleted file mode 100644 index afe9224..0000000 --- a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.d.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { Construct } from 'constructs'; -import { Stack } from 'aws-cdk-lib'; -import { StackCommonProps } from '../../config'; -/** - * Crearte Fargate Service with Spot CapacityProvider, Auto Scaling, ALB, and Log Group. - * Set the ALB logs for the production-level. - */ -export declare class FargateSpotRestAPIServiceStack extends Stack { - constructor(scope: Construct, id: string, props: StackCommonProps); -} diff --git a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js b/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js deleted file mode 100644 index 8355c22..0000000 --- a/ts.out/ecs-fargatespot-service-restapi/lib/ecs-fargatespot-service-restapi-stack.js +++ /dev/null @@ -1,151 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.FargateSpotRestAPIServiceStack = void 0; -const cdk = __importStar(require("aws-cdk-lib")); -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const ecs = __importStar(require("aws-cdk-lib/aws-ecs")); -const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); -const elbv2 = __importStar(require("aws-cdk-lib/aws-elasticloadbalancingv2")); -const logs = __importStar(require("aws-cdk-lib/aws-logs")); -const iam = __importStar(require("aws-cdk-lib/aws-iam")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const cluster_config_1 = require("../../ecs-fargate-cluster/lib/cluster-config"); -const config_1 = require("../../config"); -/** - * Crearte Fargate Service with Spot CapacityProvider, Auto Scaling, ALB, and Log Group. - * Set the ALB logs for the production-level. - */ -class FargateSpotRestAPIServiceStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - var _a, _b; - super(scope, id, props); - const vpcId = this.node.tryGetContext('vpcId') || ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/vpc-id`); - const vpc = ec2.Vpc.fromLookup(this, 'vpc', { vpcId }); - const clusterSgId = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/cluster-securitygroup-id`); - const ecsSecurityGroup = ec2.SecurityGroup.fromSecurityGroupId(this, 'ecs-security-group', clusterSgId); - const cluster = ecs.Cluster.fromClusterAttributes(this, 'ecs-fargate-cluster', { - clusterName: `${cluster_config_1.CLUSTER_NAME}-${props.stage}`, - vpc, - securityGroups: [ecsSecurityGroup] - }); - const serviceName = 'fargatespot-restapi'; - const containerName = `${serviceName}-container`; - const applicationPort = 8080; - const executionRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/task-execution-role-arn`); - const taskRoleArn = ssm.StringParameter.valueFromLookup(this, `${config_1.SSM_PREFIX}/default-task-role-arn`); - const taskDefinition = new ecs.TaskDefinition(this, 'fargate-task-definition', { - cpu: '1024', - memoryMiB: '2048', - compatibility: ecs.Compatibility.FARGATE, - family: `${serviceName}-task`, - executionRole: iam.Role.fromRoleArn(this, 'task-execution-role', cdk.Lazy.string({ produce: () => executionRoleArn })), - taskRole: iam.Role.fromRoleArn(this, 'task-role', cdk.Lazy.string({ produce: () => taskRoleArn })) - }); - const container = taskDefinition.addContainer('container-restapi', { - containerName, - image: ecs.ContainerImage.fromRegistry(`${(_a = props.env) === null || _a === void 0 ? void 0 : _a.account}.dkr.ecr.${(_b = props.env) === null || _b === void 0 ? void 0 : _b.region}.amazonaws.com/fargate-restapi-${props.stage}:latest`), - // or build with /app folder - // import * as path from 'path'; - // image: ecs.ContainerImage.fromAsset(path.join(__dirname, "../../", "app")), - cpu: 1024, - memoryReservationMiB: 2048 - }); - container.addPortMappings({ containerPort: applicationPort, hostPort: applicationPort }); - const fargateservice = new ecs.FargateService(this, 'ecs-fargate-service', { - cluster, - serviceName: `${serviceName}-${props.stage}`, - taskDefinition, - enableExecuteCommand: true, - minHealthyPercent: 100, - maxHealthyPercent: 200, - healthCheckGracePeriod: aws_cdk_lib_1.Duration.seconds(0), - capacityProviderStrategies: [ - { - capacityProvider: 'FARGATE_SPOT', - weight: 1, - }, - { - capacityProvider: 'FARGATE', - weight: 1, - } - ] - }); - fargateservice.autoScaleTaskCount({ - minCapacity: 2, - maxCapacity: 100, - }).scaleOnCpuUtilization('cpuscaling', { - targetUtilizationPercent: 50, - scaleOutCooldown: aws_cdk_lib_1.Duration.seconds(60), - scaleInCooldown: aws_cdk_lib_1.Duration.seconds(120) - }); - const logGroup = new logs.LogGroup(this, 'loggroup', { - logGroupName: serviceName, - removalPolicy: cdk.RemovalPolicy.DESTROY, - retention: logs.RetentionDays.TWO_WEEKS, - }); - const albSecurityGroupName = `albsg-${serviceName}`; - const albSecurityGroup = new ec2.SecurityGroup(this, albSecurityGroupName, { - securityGroupName: albSecurityGroupName, - vpc, - allowAllOutbound: true, - description: `ALB security group for ${serviceName} Service` - }); - ecsSecurityGroup.addIngressRule(albSecurityGroup, ec2.Port.tcp(applicationPort), 'Allow from ALB'); - albSecurityGroup.addIngressRule(ec2.Peer.anyIpv4(), ec2.Port.tcp(80), 'Allow any'); - const alb = new elbv2.ApplicationLoadBalancer(this, 'alb', { - securityGroup: albSecurityGroup, - vpc, - loadBalancerName: `alb-${serviceName}`, - internetFacing: true, - deletionProtection: false, - idleTimeout: cdk.Duration.seconds(30), - }); - alb.addListener('https-listener', { - protocol: elbv2.ApplicationProtocol.HTTP, - open: false, - }).addTargets('ec2-service-target', { - targetGroupName: `tg-${serviceName}`, - port: applicationPort, - protocol: elbv2.ApplicationProtocol.HTTP, - targets: [fargateservice.loadBalancerTarget({ - containerName: containerName, - containerPort: applicationPort, - })], - healthCheck: { - healthyThresholdCount: 2, - unhealthyThresholdCount: 5, - interval: aws_cdk_lib_1.Duration.seconds(31), - path: '/ping', - timeout: aws_cdk_lib_1.Duration.seconds(30), - }, - deregistrationDelay: aws_cdk_lib_1.Duration.seconds(15) - }); - aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Stage', props.stage); - aws_cdk_lib_1.Tags.of(albSecurityGroup).add('Name', albSecurityGroupName); - new aws_cdk_lib_1.CfnOutput(this, 'Service', { value: fargateservice.serviceArn }); - new aws_cdk_lib_1.CfnOutput(this, 'TaskDefinition', { value: taskDefinition.family }); - new aws_cdk_lib_1.CfnOutput(this, 'LogGroup', { value: logGroup.logGroupName }); - new aws_cdk_lib_1.CfnOutput(this, 'ALB', { value: alb.loadBalancerDnsName }); - } -} -exports.FargateSpotRestAPIServiceStack = FargateSpotRestAPIServiceStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWZhcmdhdGVzcG90LXNlcnZpY2UtcmVzdGFwaS1zdGFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2Vjcy1mYXJnYXRlc3BvdC1zZXJ2aWNlLXJlc3RhcGkvbGliL2Vjcy1mYXJnYXRlc3BvdC1zZXJ2aWNlLXJlc3RhcGktc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBLGlEQUFtQztBQUNuQyw2Q0FBK0Q7QUFDL0QseURBQTJDO0FBQzNDLHlEQUEyQztBQUMzQyw4RUFBZ0U7QUFDaEUsMkRBQTZDO0FBQzdDLHlEQUEyQztBQUMzQyx5REFBMkM7QUFFM0MsaUZBQTRFO0FBQzVFLHlDQUE0RDtBQUU1RDs7O0dBR0c7QUFDSCxNQUFhLDhCQUErQixTQUFRLG1CQUFLO0lBQ3JELFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBdUI7O1FBQzdELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sS0FBSyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLFNBQVMsQ0FBQyxDQUFDO1FBQ3BILE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZELE1BQU0sV0FBVyxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSxHQUFHLG1CQUFVLDJCQUEyQixDQUFDLENBQUM7UUFDeEcsTUFBTSxnQkFBZ0IsR0FBRyxHQUFHLENBQUMsYUFBYSxDQUFDLG1CQUFtQixDQUFDLElBQUksRUFBRSxvQkFBb0IsRUFBRSxXQUFXLENBQUMsQ0FBQztRQUV4RyxN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QyxNQUFNLEVBQUUsb0JBQW9CLENBQUMsQ0FBQztRQUU1RCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSxjQUFjLENBQUMsVUFBVSxFQUFFLENBQUMsQ0FBQztRQUNyRSxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLGdCQUFnQixFQUFFLEVBQUUsS0FBSyxFQUFFLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO1FBQ3hFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLEVBQUUsS0FBSyxFQUFFLFFBQVEsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxDQUFDO1FBQ2xFLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEdBQUcsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLENBQUM7SUFDbkUsQ0FBQztDQUNKO0FBMUhELHdFQTBIQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgKiBhcyBjZGsgZnJvbSAnYXdzLWNkay1saWInO1xyXG5pbXBvcnQgeyBTdGFjaywgQ2ZuT3V0cHV0LCBEdXJhdGlvbiwgVGFncyB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0ICogYXMgZWNzIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lY3MnO1xyXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XHJcbmltcG9ydCAqIGFzIGVsYnYyIGZyb20gJ2F3cy1jZGstbGliL2F3cy1lbGFzdGljbG9hZGJhbGFuY2luZ3YyJztcclxuaW1wb3J0ICogYXMgbG9ncyBmcm9tICdhd3MtY2RrLWxpYi9hd3MtbG9ncyc7XHJcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcclxuaW1wb3J0ICogYXMgc3NtIGZyb20gJ2F3cy1jZGstbGliL2F3cy1zc20nO1xyXG5cclxuaW1wb3J0IHsgQ0xVU1RFUl9OQU1FIH0gZnJvbSAnLi4vLi4vZWNzLWZhcmdhdGUtY2x1c3Rlci9saWIvY2x1c3Rlci1jb25maWcnO1xyXG5pbXBvcnQgeyBTdGFja0NvbW1vblByb3BzLCBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBDcmVhcnRlIEZhcmdhdGUgU2VydmljZSB3aXRoIFNwb3QgQ2FwYWNpdHlQcm92aWRlciwgQXV0byBTY2FsaW5nLCBBTEIsIGFuZCBMb2cgR3JvdXAuXHJcbiAqIFNldCB0aGUgQUxCIGxvZ3MgZm9yIHRoZSBwcm9kdWN0aW9uLWxldmVsLlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZhcmdhdGVTcG90UmVzdEFQSVNlcnZpY2VTdGFjayBleHRlbmRzIFN0YWNrIHtcclxuICAgIGNvbnN0cnVjdG9yKHNjb3BlOiBDb25zdHJ1Y3QsIGlkOiBzdHJpbmcsIHByb3BzOiBTdGFja0NvbW1vblByb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IHZwY0lkID0gdGhpcy5ub2RlLnRyeUdldENvbnRleHQoJ3ZwY0lkJykgfHwgc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vdnBjLWlkYCk7XHJcbiAgICAgICAgY29uc3QgdnBjID0gZWMyLlZwYy5mcm9tTG9va3VwKHRoaXMsICd2cGMnLCB7IHZwY0lkIH0pO1xyXG4gICAgICAgIGNvbnN0IGNsdXN0ZXJTZ0lkID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vY2x1c3Rlci1zZWN1cml0eWdyb3VwLWlkYCk7XHJcbiAgICAgICAgY29uc3QgZWNzU2VjdXJpdHlHcm91cCA9IGVjMi5TZWN1cml0eUdyb3VwLmZyb21TZWN1cml0eUdyb3VwSWQodGhpcywgJ2Vjcy1zZWN1cml0eS1ncm91cCcsIGNsdXN0ZXJTZ0lkKTtcclxuXHJcbiAgICAgICAgY29uc3QgY2x1c3RlciA9IGVjcy5DbHVzdGVyLmZyb21DbHVzdGVyQXR0cmlidXRlcyh0aGlzLCAnZWNzLWZhcmdhdGUtY2x1c3RlcicsIHtcclxuICAgICAgICAgICAgY2x1c3Rlck5hbWU6IGAke0NMVVNURVJfTkFNRX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB2cGMsXHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXBzOiBbZWNzU2VjdXJpdHlHcm91cF1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3Qgc2VydmljZU5hbWUgPSAnZmFyZ2F0ZXNwb3QtcmVzdGFwaSdcclxuICAgICAgICBjb25zdCBjb250YWluZXJOYW1lID0gYCR7c2VydmljZU5hbWV9LWNvbnRhaW5lcmBcclxuICAgICAgICBjb25zdCBhcHBsaWNhdGlvblBvcnQgPSA4MDgwO1xyXG5cclxuICAgICAgICBjb25zdCBleGVjdXRpb25Sb2xlQXJuID0gc3NtLlN0cmluZ1BhcmFtZXRlci52YWx1ZUZyb21Mb29rdXAodGhpcywgYCR7U1NNX1BSRUZJWH0vdGFzay1leGVjdXRpb24tcm9sZS1hcm5gKTtcclxuICAgICAgICBjb25zdCB0YXNrUm9sZUFybiA9IHNzbS5TdHJpbmdQYXJhbWV0ZXIudmFsdWVGcm9tTG9va3VwKHRoaXMsIGAke1NTTV9QUkVGSVh9L2RlZmF1bHQtdGFzay1yb2xlLWFybmApO1xyXG5cclxuICAgICAgICBjb25zdCB0YXNrRGVmaW5pdGlvbiA9IG5ldyBlY3MuVGFza0RlZmluaXRpb24odGhpcywgJ2ZhcmdhdGUtdGFzay1kZWZpbml0aW9uJywge1xyXG4gICAgICAgICAgICBjcHU6ICcxMDI0JyxcclxuICAgICAgICAgICAgbWVtb3J5TWlCOiAnMjA0OCcsXHJcbiAgICAgICAgICAgIGNvbXBhdGliaWxpdHk6IGVjcy5Db21wYXRpYmlsaXR5LkZBUkdBVEUsXHJcbiAgICAgICAgICAgIGZhbWlseTogYCR7c2VydmljZU5hbWV9LXRhc2tgLFxyXG4gICAgICAgICAgICBleGVjdXRpb25Sb2xlOiBpYW0uUm9sZS5mcm9tUm9sZUFybih0aGlzLCAndGFzay1leGVjdXRpb24tcm9sZScsIGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IGV4ZWN1dGlvblJvbGVBcm4gfSkpLFxyXG4gICAgICAgICAgICB0YXNrUm9sZTogaWFtLlJvbGUuZnJvbVJvbGVBcm4odGhpcywgJ3Rhc2stcm9sZScsIGNkay5MYXp5LnN0cmluZyh7IHByb2R1Y2U6ICgpID0+IHRhc2tSb2xlQXJuIH0pKVxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGNvbnN0IGNvbnRhaW5lciA9IHRhc2tEZWZpbml0aW9uLmFkZENvbnRhaW5lcignY29udGFpbmVyLXJlc3RhcGknLCB7XHJcbiAgICAgICAgICAgIGNvbnRhaW5lck5hbWUsXHJcbiAgICAgICAgICAgIGltYWdlOiBlY3MuQ29udGFpbmVySW1hZ2UuZnJvbVJlZ2lzdHJ5KGAke3Byb3BzLmVudj8uYWNjb3VudH0uZGtyLmVjci4ke3Byb3BzLmVudj8ucmVnaW9ufS5hbWF6b25hd3MuY29tL2ZhcmdhdGUtcmVzdGFwaS0ke3Byb3BzLnN0YWdlfTpsYXRlc3RgKSxcclxuICAgICAgICAgICAgLy8gb3IgYnVpbGQgd2l0aCAvYXBwIGZvbGRlclxyXG4gICAgICAgICAgICAvLyBpbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xyXG4gICAgICAgICAgICAvLyBpbWFnZTogZWNzLkNvbnRhaW5lckltYWdlLmZyb21Bc3NldChwYXRoLmpvaW4oX19kaXJuYW1lLCBcIi4uLy4uL1wiLCBcImFwcFwiKSksXHJcbiAgICAgICAgICAgIGNwdTogMTAyNCxcclxuICAgICAgICAgICAgbWVtb3J5UmVzZXJ2YXRpb25NaUI6IDIwNDhcclxuICAgICAgICB9KTtcclxuICAgICAgICBjb250YWluZXIuYWRkUG9ydE1hcHBpbmdzKHsgY29udGFpbmVyUG9ydDogYXBwbGljYXRpb25Qb3J0LCBob3N0UG9ydDogYXBwbGljYXRpb25Qb3J0IH0pO1xyXG5cclxuICAgICAgICBjb25zdCBmYXJnYXRlc2VydmljZSA9IG5ldyBlY3MuRmFyZ2F0ZVNlcnZpY2UodGhpcywgJ2Vjcy1mYXJnYXRlLXNlcnZpY2UnLCB7XHJcbiAgICAgICAgICAgIGNsdXN0ZXIsXHJcbiAgICAgICAgICAgIHNlcnZpY2VOYW1lOiBgJHtzZXJ2aWNlTmFtZX0tJHtwcm9wcy5zdGFnZX1gLFxyXG4gICAgICAgICAgICB0YXNrRGVmaW5pdGlvbixcclxuICAgICAgICAgICAgZW5hYmxlRXhlY3V0ZUNvbW1hbmQ6IHRydWUsXHJcbiAgICAgICAgICAgIG1pbkhlYWx0aHlQZXJjZW50OiAxMDAsXHJcbiAgICAgICAgICAgIG1heEhlYWx0aHlQZXJjZW50OiAyMDAsXHJcbiAgICAgICAgICAgIGhlYWx0aENoZWNrR3JhY2VQZXJpb2Q6IER1cmF0aW9uLnNlY29uZHMoMCksIC8vIHNldCB0aGUgdmFsdWUgYXMgeW91ciBhcHBsaWNhdGlvbiBpbml0aWFsaXplIHRpbWUgXHJcbiAgICAgICAgICAgIGNhcGFjaXR5UHJvdmlkZXJTdHJhdGVnaWVzOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2FwYWNpdHlQcm92aWRlcjogJ0ZBUkdBVEVfU1BPVCcsXHJcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICAgICAgICBjYXBhY2l0eVByb3ZpZGVyOiAnRkFSR0FURScsXHJcbiAgICAgICAgICAgICAgICAgICAgd2VpZ2h0OiAxLFxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBdXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZmFyZ2F0ZXNlcnZpY2UuYXV0b1NjYWxlVGFza0NvdW50KHtcclxuICAgICAgICAgICAgbWluQ2FwYWNpdHk6IDIsXHJcbiAgICAgICAgICAgIG1heENhcGFjaXR5OiAxMDAsXHJcbiAgICAgICAgfSkuc2NhbGVPbkNwdVV0aWxpemF0aW9uKCdjcHVzY2FsaW5nJywge1xyXG4gICAgICAgICAgICB0YXJnZXRVdGlsaXphdGlvblBlcmNlbnQ6IDUwLFxyXG4gICAgICAgICAgICBzY2FsZU91dENvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDYwKSxcclxuICAgICAgICAgICAgc2NhbGVJbkNvb2xkb3duOiBEdXJhdGlvbi5zZWNvbmRzKDEyMClcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgbG9nR3JvdXAgPSBuZXcgbG9ncy5Mb2dHcm91cCh0aGlzLCAnbG9nZ3JvdXAnLCB7XHJcbiAgICAgICAgICAgIGxvZ0dyb3VwTmFtZTogc2VydmljZU5hbWUsXHJcbiAgICAgICAgICAgIHJlbW92YWxQb2xpY3k6IGNkay5SZW1vdmFsUG9saWN5LkRFU1RST1ksXHJcbiAgICAgICAgICAgIHJldGVudGlvbjogbG9ncy5SZXRlbnRpb25EYXlzLlRXT19XRUVLUyxcclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgY29uc3QgYWxiU2VjdXJpdHlHcm91cE5hbWUgPSBgYWxic2ctJHtzZXJ2aWNlTmFtZX1gXHJcbiAgICAgICAgY29uc3QgYWxiU2VjdXJpdHlHcm91cCA9IG5ldyBlYzIuU2VjdXJpdHlHcm91cCh0aGlzLCBhbGJTZWN1cml0eUdyb3VwTmFtZSwge1xyXG4gICAgICAgICAgICBzZWN1cml0eUdyb3VwTmFtZTogYWxiU2VjdXJpdHlHcm91cE5hbWUsXHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgYWxsb3dBbGxPdXRib3VuZDogdHJ1ZSxcclxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGBBTEIgc2VjdXJpdHkgZ3JvdXAgZm9yICR7c2VydmljZU5hbWV9IFNlcnZpY2VgXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgZWNzU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShhbGJTZWN1cml0eUdyb3VwLCBlYzIuUG9ydC50Y3AoYXBwbGljYXRpb25Qb3J0KSwgJ0FsbG93IGZyb20gQUxCJyk7XHJcbiAgICAgICAgYWxiU2VjdXJpdHlHcm91cC5hZGRJbmdyZXNzUnVsZShlYzIuUGVlci5hbnlJcHY0KCksIGVjMi5Qb3J0LnRjcCg4MCksICdBbGxvdyBhbnknKTtcclxuXHJcbiAgICAgICAgY29uc3QgYWxiID0gbmV3IGVsYnYyLkFwcGxpY2F0aW9uTG9hZEJhbGFuY2VyKHRoaXMsICdhbGInLCB7XHJcbiAgICAgICAgICAgIHNlY3VyaXR5R3JvdXA6IGFsYlNlY3VyaXR5R3JvdXAsXHJcbiAgICAgICAgICAgIHZwYyxcclxuICAgICAgICAgICAgbG9hZEJhbGFuY2VyTmFtZTogYGFsYi0ke3NlcnZpY2VOYW1lfWAsXHJcbiAgICAgICAgICAgIGludGVybmV0RmFjaW5nOiB0cnVlLFxyXG4gICAgICAgICAgICBkZWxldGlvblByb3RlY3Rpb246IGZhbHNlLFxyXG4gICAgICAgICAgICBpZGxlVGltZW91dDogY2RrLkR1cmF0aW9uLnNlY29uZHMoMzApLFxyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIGFsYi5hZGRMaXN0ZW5lcignaHR0cHMtbGlzdGVuZXInLCB7XHJcbiAgICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXHJcbiAgICAgICAgICAgIG9wZW46IGZhbHNlLFxyXG4gICAgICAgIH0pLmFkZFRhcmdldHMoJ2VjMi1zZXJ2aWNlLXRhcmdldCcsIHtcclxuICAgICAgICAgICAgdGFyZ2V0R3JvdXBOYW1lOiBgdGctJHtzZXJ2aWNlTmFtZX1gLFxyXG4gICAgICAgICAgICBwb3J0OiBhcHBsaWNhdGlvblBvcnQsXHJcbiAgICAgICAgICAgIHByb3RvY29sOiBlbGJ2Mi5BcHBsaWNhdGlvblByb3RvY29sLkhUVFAsXHJcbiAgICAgICAgICAgIHRhcmdldHM6IFtmYXJnYXRlc2VydmljZS5sb2FkQmFsYW5jZXJUYXJnZXQoe1xyXG4gICAgICAgICAgICAgICAgY29udGFpbmVyTmFtZTogY29udGFpbmVyTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbnRhaW5lclBvcnQ6IGFwcGxpY2F0aW9uUG9ydCxcclxuICAgICAgICAgICAgfSldLFxyXG4gICAgICAgICAgICBoZWFsdGhDaGVjazoge1xyXG4gICAgICAgICAgICAgICAgaGVhbHRoeVRocmVzaG9sZENvdW50OiAyLFxyXG4gICAgICAgICAgICAgICAgdW5oZWFsdGh5VGhyZXNob2xkQ291bnQ6IDUsXHJcbiAgICAgICAgICAgICAgICBpbnRlcnZhbDogRHVyYXRpb24uc2Vjb25kcygzMSksXHJcbiAgICAgICAgICAgICAgICBwYXRoOiAnL3BpbmcnLFxyXG4gICAgICAgICAgICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcygzMCksXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGRlcmVnaXN0cmF0aW9uRGVsYXk6IER1cmF0aW9uLnNlY29uZHMoMTUpXHJcbiAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIFRhZ3Mub2YoYWxiU2VjdXJpdHlHcm91cCkuYWRkKCdTdGFnZScsIHByb3BzLnN0YWdlKTtcclxuICAgICAgICBUYWdzLm9mKGFsYlNlY3VyaXR5R3JvdXApLmFkZCgnTmFtZScsIGFsYlNlY3VyaXR5R3JvdXBOYW1lKTtcclxuXHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnU2VydmljZScsIHsgdmFsdWU6IGZhcmdhdGVzZXJ2aWNlLnNlcnZpY2VBcm4gfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVGFza0RlZmluaXRpb24nLCB7IHZhbHVlOiB0YXNrRGVmaW5pdGlvbi5mYW1pbHkgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnTG9nR3JvdXAnLCB7IHZhbHVlOiBsb2dHcm91cC5sb2dHcm91cE5hbWUgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnQUxCJywgeyB2YWx1ZTogYWxiLmxvYWRCYWxhbmNlckRuc05hbWUgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/ts.out/ecs-iam-role/bin/index.d.ts b/ts.out/ecs-iam-role/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/ecs-iam-role/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/ecs-iam-role/bin/index.js b/ts.out/ecs-iam-role/bin/index.js deleted file mode 100644 index a18ad6f..0000000 --- a/ts.out/ecs-iam-role/bin/index.js +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const config_1 = require("../../config"); -const ecs_iam_role_stack_1 = require("../lib/ecs-iam-role-stack"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -new ecs_iam_role_stack_1.EcsIamRoleStack(app, `ecs-fargate-iam-role-${stage}`, { - env, - description: 'ECS Fargate IAM Role', - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9lY3MtaWFtLXJvbGUvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMseUNBQTZDO0FBQzdDLGtFQUE0RDtBQUU1RCxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSxvQ0FBZSxDQUFDLEdBQUcsRUFBRSx3QkFBd0IsS0FBSyxFQUFFLEVBQUc7SUFDdkQsR0FBRztJQUNILFdBQVcsRUFBRSxzQkFBc0I7SUFDbkMscUJBQXFCLEVBQUUsS0FBSyxLQUFHLHNCQUFhO0NBQy9DLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcclxuaW1wb3J0ICogYXMgY2RrIGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgREVGQVVMVF9TVEFHRSB9IGZyb20gJy4uLy4uL2NvbmZpZyc7XHJcbmltcG9ydCB7IEVjc0lhbVJvbGVTdGFjayB9IGZyb20gJy4uL2xpYi9lY3MtaWFtLXJvbGUtc3RhY2snO1xyXG5cclxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcclxuY29uc3QgZW52ID0ge1xyXG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcclxuICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OXHJcbn07XHJcbmNvbnN0IHN0YWdlID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dCgnc3RhZ2UnKSB8fCBERUZBVUxUX1NUQUdFO1xyXG5cclxubmV3IEVjc0lhbVJvbGVTdGFjayhhcHAsIGBlY3MtZmFyZ2F0ZS1pYW0tcm9sZS0ke3N0YWdlfWAsICB7XHJcbiAgICBlbnYsXHJcbiAgICBkZXNjcmlwdGlvbjogJ0VDUyBGYXJnYXRlIElBTSBSb2xlJyxcclxuICAgIHRlcm1pbmF0aW9uUHJvdGVjdGlvbjogc3RhZ2UhPT1ERUZBVUxUX1NUQUdFXHJcbn0pOyJdfQ== \ No newline at end of file diff --git a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts deleted file mode 100644 index 424b96c..0000000 --- a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.d.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Stack, StackProps } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -/** - * This stack is written to share IAM role among multiple-cluster - * - * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html - * - * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html - * - */ -export declare class EcsIamRoleStack extends Stack { - constructor(scope: Construct, id: string, props?: StackProps); -} diff --git a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js b/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js deleted file mode 100644 index ecdba39..0000000 --- a/ts.out/ecs-iam-role/lib/ecs-iam-role-stack.js +++ /dev/null @@ -1,79 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.EcsIamRoleStack = void 0; -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const iam = __importStar(require("aws-cdk-lib/aws-iam")); -const config_1 = require("../../config"); -/** - * This stack is written to share IAM role among multiple-cluster - * - * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/task-iam-roles.html - * - * https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-exec.html - * - */ -class EcsIamRoleStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - super(scope, id, props); - // AmazonECSTaskExecutionRole based on https://us-east-1.console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy$jsonEditor - const taskExecutionRole = new iam.Role(this, 'task-execution-role', { - roleName: 'AmazonECSFargateTaskExecutionRole', - assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'), - managedPolicies: [ - iam.ManagedPolicy.fromAwsManagedPolicyName('service-role/AmazonECSTaskExecutionRolePolicy'), - ] - }); - const defaultTaskRole = new iam.Role(this, 'default-task-role', { - roleName: 'ECSFargateDefaultTaskRole', - assumedBy: new iam.ServicePrincipal('ecs-tasks.amazonaws.com'), - managedPolicies: [ - iam.ManagedPolicy.fromAwsManagedPolicyName('AWSXrayWriteOnlyAccess'), - iam.ManagedPolicy.fromAwsManagedPolicyName('AmazonSSMReadOnlyAccess') - ], - inlinePolicies: { - ECSExec: new iam.PolicyDocument({ - statements: [ - new iam.PolicyStatement({ - effect: iam.Effect.ALLOW, - actions: [ - "ssmmessages:CreateControlChannel", - "ssmmessages:CreateDataChannel", - "ssmmessages:OpenControlChannel", - "ssmmessages:OpenDataChannel", - ], - resources: ["*"], - }), - ], - }), - } - }); - const taskExecRoleParam = new ssm.StringParameter(this, 'ssm-task-execution-role', { parameterName: `${config_1.SSM_PREFIX}/task-execution-role-arn`, stringValue: taskExecutionRole.roleArn }); - const defaultTaskRoleParam = new ssm.StringParameter(this, 'ssm-default-task-role', { parameterName: `${config_1.SSM_PREFIX}/default-task-role-arn`, stringValue: defaultTaskRole.roleArn }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMTaskExecRoleParam', { value: taskExecRoleParam.parameterName }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMTaskExecRoleParamValue', { value: taskExecRoleParam.stringValue }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMDefaultTaskRoleParam', { value: defaultTaskRoleParam.parameterName }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMDefaultTaskRoleParamValue', { value: defaultTaskRoleParam.stringValue }); - } -} -exports.EcsIamRoleStack = EcsIamRoleStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWNzLWlhbS1yb2xlLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZWNzLWlhbS1yb2xlL2xpYi9lY3MtaWFtLXJvbGUtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRDtBQUUzRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRzNDLHlDQUEwQztBQUUxQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxlQUFnQixTQUFRLG1CQUFLO0lBQ3hDLFlBQVksS0FBZ0IsRUFBRSxFQUFVLEVBQUUsS0FBa0I7UUFDMUQsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFeEIsbUxBQW1MO1FBQ25MLE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxxQkFBcUIsRUFBRTtZQUNsRSxRQUFRLEVBQUUsbUNBQW1DO1lBQzdDLFNBQVMsRUFBRSxJQUFJLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyx5QkFBeUIsQ0FBQztZQUM5RCxlQUFlLEVBQUU7Z0JBQ2YsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMsK0NBQStDLENBQ2hEO2FBQ0Y7U0FDRixDQUFDLENBQUM7UUFFSCxNQUFNLGVBQWUsR0FBRyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFLG1CQUFtQixFQUFFO1lBQzlELFFBQVEsRUFBRSwyQkFBMkI7WUFDckMsU0FBUyxFQUFFLElBQUksR0FBRyxDQUFDLGdCQUFnQixDQUFDLHlCQUF5QixDQUFDO1lBQzlELGVBQWUsRUFBRTtnQkFDZixHQUFHLENBQUMsYUFBYSxDQUFDLHdCQUF3QixDQUN4Qyx3QkFBd0IsQ0FDekI7Z0JBQ0QsR0FBRyxDQUFDLGFBQWEsQ0FBQyx3QkFBd0IsQ0FDeEMseUJBQXlCLENBQzFCO2FBQ0Y7WUFDRCxjQUFjLEVBQUU7Z0JBQ2QsT0FBTyxFQUFFLElBQUksR0FBRyxDQUFDLGNBQWMsQ0FBQztvQkFDOUIsVUFBVSxFQUFFO3dCQUNWLElBQUksR0FBRyxDQUFDLGVBQWUsQ0FBQzs0QkFDdEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNLENBQUMsS0FBSzs0QkFDeEIsT0FBTyxFQUFFO2dDQUNQLGtDQUFrQztnQ0FDbEMsK0JBQStCO2dDQUMvQixnQ0FBZ0M7Z0NBQ2hDLDZCQUE2Qjs2QkFDOUI7NEJBQ0QsU0FBUyxFQUFFLENBQUMsR0FBRyxDQUFDO3lCQUNqQixDQUFDO3FCQUNIO2lCQUNGLENBQUM7YUFDSDtTQUNGLENBQUMsQ0FBQztRQUVILE1BQU0saUJBQWlCLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSx5QkFBeUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLDBCQUEwQixFQUFFLFdBQVcsRUFBRSxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ3ZMLE1BQU0sb0JBQW9CLEdBQUcsSUFBSSxHQUFHLENBQUMsZUFBZSxDQUFDLElBQUksRUFBRSx1QkFBdUIsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLHdCQUF3QixFQUFFLFdBQVcsRUFBRSxlQUFlLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUVwTCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLHNCQUFzQixFQUFFLEVBQUUsS0FBSyxFQUFFLGlCQUFpQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEYsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSwyQkFBMkIsRUFBRSxFQUFFLEtBQUssRUFBRSxpQkFBaUIsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzNGLElBQUksdUJBQVMsQ0FBQyxJQUFJLEVBQUUseUJBQXlCLEVBQUUsRUFBRSxLQUFLLEVBQUUsb0JBQW9CLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQztRQUM5RixJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLDhCQUE4QixFQUFFLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFDbkcsQ0FBQztDQUNGO0FBcERELDBDQW9EQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0YWNrLCBTdGFja1Byb3BzLCBDZm5PdXRwdXQgfSBmcm9tICdhd3MtY2RrLWxpYic7XHJcblxyXG5pbXBvcnQgKiBhcyBzc20gZnJvbSAnYXdzLWNkay1saWIvYXdzLXNzbSc7XHJcbmltcG9ydCAqIGFzIGlhbSBmcm9tICdhd3MtY2RrLWxpYi9hd3MtaWFtJztcclxuXHJcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gJ2NvbnN0cnVjdHMnO1xyXG5pbXBvcnQgeyBTU01fUFJFRklYIH0gZnJvbSAnLi4vLi4vY29uZmlnJztcclxuXHJcbi8qKlxyXG4gKiBUaGlzIHN0YWNrIGlzIHdyaXR0ZW4gdG8gc2hhcmUgSUFNIHJvbGUgYW1vbmcgbXVsdGlwbGUtY2x1c3RlclxyXG4gKiBcclxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvdGFzay1pYW0tcm9sZXMuaHRtbFxyXG4gKiBcclxuICogaHR0cHM6Ly9kb2NzLmF3cy5hbWF6b24uY29tL0FtYXpvbkVDUy9sYXRlc3QvZGV2ZWxvcGVyZ3VpZGUvZWNzLWV4ZWMuaHRtbFxyXG4gKiBcclxuICovXHJcbmV4cG9ydCBjbGFzcyBFY3NJYW1Sb2xlU3RhY2sgZXh0ZW5kcyBTdGFjayB7XHJcbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XHJcbiAgICBzdXBlcihzY29wZSwgaWQsIHByb3BzKTtcclxuXHJcbiAgICAvLyBBbWF6b25FQ1NUYXNrRXhlY3V0aW9uUm9sZSBiYXNlZCBvbiBodHRwczovL3VzLWVhc3QtMS5jb25zb2xlLmF3cy5hbWF6b24uY29tL2lhbS9ob21lIy9wb2xpY2llcy9hcm46YXdzOmlhbTo6YXdzOnBvbGljeS9zZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3kkanNvbkVkaXRvclxyXG4gICAgY29uc3QgdGFza0V4ZWN1dGlvblJvbGUgPSBuZXcgaWFtLlJvbGUodGhpcywgJ3Rhc2stZXhlY3V0aW9uLXJvbGUnLCB7XHJcbiAgICAgIHJvbGVOYW1lOiAnQW1hem9uRUNTRmFyZ2F0ZVRhc2tFeGVjdXRpb25Sb2xlJyxcclxuICAgICAgYXNzdW1lZEJ5OiBuZXcgaWFtLlNlcnZpY2VQcmluY2lwYWwoJ2Vjcy10YXNrcy5hbWF6b25hd3MuY29tJyksXHJcbiAgICAgIG1hbmFnZWRQb2xpY2llczogW1xyXG4gICAgICAgIGlhbS5NYW5hZ2VkUG9saWN5LmZyb21Bd3NNYW5hZ2VkUG9saWN5TmFtZShcclxuICAgICAgICAgICdzZXJ2aWNlLXJvbGUvQW1hem9uRUNTVGFza0V4ZWN1dGlvblJvbGVQb2xpY3knLFxyXG4gICAgICAgICksXHJcbiAgICAgIF1cclxuICAgIH0pO1xyXG5cclxuICAgIGNvbnN0IGRlZmF1bHRUYXNrUm9sZSA9IG5ldyBpYW0uUm9sZSh0aGlzLCAnZGVmYXVsdC10YXNrLXJvbGUnLCB7XHJcbiAgICAgIHJvbGVOYW1lOiAnRUNTRmFyZ2F0ZURlZmF1bHRUYXNrUm9sZScsXHJcbiAgICAgIGFzc3VtZWRCeTogbmV3IGlhbS5TZXJ2aWNlUHJpbmNpcGFsKCdlY3MtdGFza3MuYW1hem9uYXdzLmNvbScpLFxyXG4gICAgICBtYW5hZ2VkUG9saWNpZXM6IFtcclxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXHJcbiAgICAgICAgICAnQVdTWHJheVdyaXRlT25seUFjY2VzcycsXHJcbiAgICAgICAgKSxcclxuICAgICAgICBpYW0uTWFuYWdlZFBvbGljeS5mcm9tQXdzTWFuYWdlZFBvbGljeU5hbWUoXHJcbiAgICAgICAgICAnQW1hem9uU1NNUmVhZE9ubHlBY2Nlc3MnLFxyXG4gICAgICAgIClcclxuICAgICAgXSxcclxuICAgICAgaW5saW5lUG9saWNpZXM6IHtcclxuICAgICAgICBFQ1NFeGVjOiBuZXcgaWFtLlBvbGljeURvY3VtZW50KHtcclxuICAgICAgICAgIHN0YXRlbWVudHM6IFtcclxuICAgICAgICAgICAgbmV3IGlhbS5Qb2xpY3lTdGF0ZW1lbnQoe1xyXG4gICAgICAgICAgICAgIGVmZmVjdDogaWFtLkVmZmVjdC5BTExPVyxcclxuICAgICAgICAgICAgICBhY3Rpb25zOiBbXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZUNvbnRyb2xDaGFubmVsXCIsXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOkNyZWF0ZURhdGFDaGFubmVsXCIsXHJcbiAgICAgICAgICAgICAgICBcInNzbW1lc3NhZ2VzOk9wZW5Db250cm9sQ2hhbm5lbFwiLFxyXG4gICAgICAgICAgICAgICAgXCJzc21tZXNzYWdlczpPcGVuRGF0YUNoYW5uZWxcIixcclxuICAgICAgICAgICAgICBdLFxyXG4gICAgICAgICAgICAgIHJlc291cmNlczogW1wiKlwiXSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0pLFxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuXHJcbiAgICBjb25zdCB0YXNrRXhlY1JvbGVQYXJhbSA9IG5ldyBzc20uU3RyaW5nUGFyYW1ldGVyKHRoaXMsICdzc20tdGFzay1leGVjdXRpb24tcm9sZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vdGFzay1leGVjdXRpb24tcm9sZS1hcm5gLCBzdHJpbmdWYWx1ZTogdGFza0V4ZWN1dGlvblJvbGUucm9sZUFybiB9KTtcclxuICAgIGNvbnN0IGRlZmF1bHRUYXNrUm9sZVBhcmFtID0gbmV3IHNzbS5TdHJpbmdQYXJhbWV0ZXIodGhpcywgJ3NzbS1kZWZhdWx0LXRhc2stcm9sZScsIHsgcGFyYW1ldGVyTmFtZTogYCR7U1NNX1BSRUZJWH0vZGVmYXVsdC10YXNrLXJvbGUtYXJuYCwgc3RyaW5nVmFsdWU6IGRlZmF1bHRUYXNrUm9sZS5yb2xlQXJuIH0pO1xyXG5cclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVRhc2tFeGVjUm9sZVBhcmFtJywgeyB2YWx1ZTogdGFza0V4ZWNSb2xlUGFyYW0ucGFyYW1ldGVyTmFtZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVRhc2tFeGVjUm9sZVBhcmFtVmFsdWUnLCB7IHZhbHVlOiB0YXNrRXhlY1JvbGVQYXJhbS5zdHJpbmdWYWx1ZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTURlZmF1bHRUYXNrUm9sZVBhcmFtJywgeyB2YWx1ZTogZGVmYXVsdFRhc2tSb2xlUGFyYW0ucGFyYW1ldGVyTmFtZSB9KTtcclxuICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTURlZmF1bHRUYXNrUm9sZVBhcmFtVmFsdWUnLCB7IHZhbHVlOiBkZWZhdWx0VGFza1JvbGVQYXJhbS5zdHJpbmdWYWx1ZSB9KTtcclxuICB9XHJcbn1cclxuIl19 \ No newline at end of file diff --git a/ts.out/vpc/bin/index.d.ts b/ts.out/vpc/bin/index.d.ts deleted file mode 100644 index b798801..0000000 --- a/ts.out/vpc/bin/index.d.ts +++ /dev/null @@ -1,2 +0,0 @@ -#!/usr/bin/env node -export {}; diff --git a/ts.out/vpc/bin/index.js b/ts.out/vpc/bin/index.js deleted file mode 100644 index a2f1965..0000000 --- a/ts.out/vpc/bin/index.js +++ /dev/null @@ -1,37 +0,0 @@ -#!/usr/bin/env node -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -const cdk = __importStar(require("aws-cdk-lib")); -const vpc_stack_1 = require("../lib/vpc-stack"); -const config_1 = require("../../config"); -const app = new cdk.App(); -const env = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION -}; -const stage = app.node.tryGetContext('stage') || config_1.DEFAULT_STAGE; -new vpc_stack_1.VpcStack(app, `ecs-vpc-${stage}`, { - env, - description: 'VPC for Fargate and EC2 ECS', - terminationProtection: stage !== config_1.DEFAULT_STAGE -}); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi92cGMvYmluL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxpREFBbUM7QUFDbkMsZ0RBQTRDO0FBQzVDLHlDQUE2QztBQUU3QyxNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUMxQixNQUFNLEdBQUcsR0FBRztJQUNSLE9BQU8sRUFBRSxPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQjtJQUN4QyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxrQkFBa0I7Q0FDekMsQ0FBQztBQUNGLE1BQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLHNCQUFhLENBQUM7QUFFL0QsSUFBSSxvQkFBUSxDQUFDLEdBQUcsRUFBRSxXQUFXLEtBQUssRUFBRSxFQUFHO0lBQ25DLEdBQUc7SUFDSCxXQUFXLEVBQUUsNkJBQTZCO0lBQzFDLHFCQUFxQixFQUFFLEtBQUssS0FBRyxzQkFBYTtDQUMvQyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXHJcbmltcG9ydCAqIGFzIGNkayBmcm9tICdhd3MtY2RrLWxpYic7XHJcbmltcG9ydCB7IFZwY1N0YWNrIH0gZnJvbSAnLi4vbGliL3ZwYy1zdGFjayc7XHJcbmltcG9ydCB7IERFRkFVTFRfU1RBR0UgfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuY29uc3QgYXBwID0gbmV3IGNkay5BcHAoKTtcclxuY29uc3QgZW52ID0ge1xyXG4gICAgYWNjb3VudDogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfQUNDT1VOVCxcclxuICAgIHJlZ2lvbjogcHJvY2Vzcy5lbnYuQ0RLX0RFRkFVTFRfUkVHSU9OXHJcbn07XHJcbmNvbnN0IHN0YWdlID0gYXBwLm5vZGUudHJ5R2V0Q29udGV4dCgnc3RhZ2UnKSB8fCBERUZBVUxUX1NUQUdFO1xyXG5cclxubmV3IFZwY1N0YWNrKGFwcCwgYGVjcy12cGMtJHtzdGFnZX1gLCAge1xyXG4gICAgZW52LFxyXG4gICAgZGVzY3JpcHRpb246ICdWUEMgZm9yIEZhcmdhdGUgYW5kIEVDMiBFQ1MnLFxyXG4gICAgdGVybWluYXRpb25Qcm90ZWN0aW9uOiBzdGFnZSE9PURFRkFVTFRfU1RBR0VcclxufSk7Il19 \ No newline at end of file diff --git a/ts.out/vpc/lib/vpc-stack.d.ts b/ts.out/vpc/lib/vpc-stack.d.ts deleted file mode 100644 index 8d92f51..0000000 --- a/ts.out/vpc/lib/vpc-stack.d.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { Stack, StackProps } from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -export declare class VpcStack extends Stack { - constructor(scope: Construct, id: string, props?: StackProps); -} diff --git a/ts.out/vpc/lib/vpc-stack.js b/ts.out/vpc/lib/vpc-stack.js deleted file mode 100644 index 8e05b2d..0000000 --- a/ts.out/vpc/lib/vpc-stack.js +++ /dev/null @@ -1,56 +0,0 @@ -"use strict"; -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.VpcStack = void 0; -const aws_cdk_lib_1 = require("aws-cdk-lib"); -const ec2 = __importStar(require("aws-cdk-lib/aws-ec2")); -const ssm = __importStar(require("aws-cdk-lib/aws-ssm")); -const config_1 = require("../../config"); -class VpcStack extends aws_cdk_lib_1.Stack { - constructor(scope, id, props) { - super(scope, id, props); - const cidr = `10.100.0.0/16`; - const vpc = new ec2.Vpc(this, 'Vpc', { - maxAzs: 3, - natGateways: 3, - cidr, - subnetConfiguration: [ - { - cidrMask: 20, - name: 'public', - subnetType: ec2.SubnetType.PUBLIC, - }, - { - cidrMask: 20, - name: 'private', - subnetType: ec2.SubnetType.PRIVATE_WITH_NAT, - } - ] - }); - const parameter = new ssm.StringParameter(this, 'SSMVPCID', { parameterName: `${config_1.SSM_PREFIX}/vpc-id`, stringValue: vpc.vpcId }); - new aws_cdk_lib_1.CfnOutput(this, 'VPC', { value: vpc.vpcId }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMParameter', { value: parameter.parameterName }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMParameterValue', { value: vpc.vpcId }); - new aws_cdk_lib_1.CfnOutput(this, 'SSMURL', { value: `https://${this.region}.console.aws.amazon.com/systems-manager/parameters/` }); - } -} -exports.VpcStack = VpcStack; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidnBjLXN0YWNrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vdnBjL2xpYi92cGMtc3RhY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDZDQUEyRDtBQUczRCx5REFBMkM7QUFDM0MseURBQTJDO0FBRTNDLHlDQUEwQztBQUUxQyxNQUFhLFFBQVMsU0FBUSxtQkFBSztJQUMvQixZQUFZLEtBQWdCLEVBQUUsRUFBVSxFQUFFLEtBQWtCO1FBQ3hELEtBQUssQ0FBQyxLQUFLLEVBQUUsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRXhCLE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FBQztRQUM3QixNQUFNLEdBQUcsR0FBRyxJQUFJLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRTtZQUNqQyxNQUFNLEVBQUUsQ0FBQztZQUNULFdBQVcsRUFBRSxDQUFDO1lBQ2QsSUFBSTtZQUNKLG1CQUFtQixFQUFFO2dCQUNqQjtvQkFDSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxNQUFNO2lCQUNwQztnQkFDRDtvQkFDSSxRQUFRLEVBQUUsRUFBRTtvQkFDWixJQUFJLEVBQUUsU0FBUztvQkFDZixVQUFVLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0I7aUJBQzlDO2FBQ0o7U0FDSixDQUFDLENBQUM7UUFFSCxNQUFNLFNBQVMsR0FBRyxJQUFJLEdBQUcsQ0FBQyxlQUFlLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxFQUFFLGFBQWEsRUFBRSxHQUFHLG1CQUFVLFNBQVMsRUFBRSxXQUFXLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDL0gsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUM7UUFDakQsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUM7UUFDeEUsSUFBSSx1QkFBUyxDQUFDLElBQUksRUFBRSxtQkFBbUIsRUFBRSxFQUFFLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUMvRCxJQUFJLHVCQUFTLENBQUMsSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLElBQUksQ0FBQyxNQUFNLHFEQUFxRCxFQUFFLENBQUMsQ0FBQztJQUMxSCxDQUFDO0NBQ0o7QUE3QkQsNEJBNkJDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhY2ssIFN0YWNrUHJvcHMsIENmbk91dHB1dCB9IGZyb20gJ2F3cy1jZGstbGliJztcclxuaW1wb3J0IHsgQ29uc3RydWN0IH0gZnJvbSAnY29uc3RydWN0cyc7XHJcblxyXG5pbXBvcnQgKiBhcyBlYzIgZnJvbSAnYXdzLWNkay1saWIvYXdzLWVjMic7XHJcbmltcG9ydCAqIGFzIHNzbSBmcm9tICdhd3MtY2RrLWxpYi9hd3Mtc3NtJztcclxuXHJcbmltcG9ydCB7IFNTTV9QUkVGSVggfSBmcm9tICcuLi8uLi9jb25maWcnO1xyXG5cclxuZXhwb3J0IGNsYXNzIFZwY1N0YWNrIGV4dGVuZHMgU3RhY2sge1xyXG4gICAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZywgcHJvcHM/OiBTdGFja1Byb3BzKSB7XHJcbiAgICAgICAgc3VwZXIoc2NvcGUsIGlkLCBwcm9wcyk7XHJcblxyXG4gICAgICAgIGNvbnN0IGNpZHIgPSBgMTAuMTAwLjAuMC8xNmA7XHJcbiAgICAgICAgY29uc3QgdnBjID0gbmV3IGVjMi5WcGModGhpcywgJ1ZwYycsIHtcclxuICAgICAgICAgICAgbWF4QXpzOiAzLFxyXG4gICAgICAgICAgICBuYXRHYXRld2F5czogMyxcclxuICAgICAgICAgICAgY2lkcixcclxuICAgICAgICAgICAgc3VibmV0Q29uZmlndXJhdGlvbjogW1xyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNpZHJNYXNrOiAyMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHVibGljJyxcclxuICAgICAgICAgICAgICAgICAgICBzdWJuZXRUeXBlOiBlYzIuU3VibmV0VHlwZS5QVUJMSUMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgIGNpZHJNYXNrOiAyMCxcclxuICAgICAgICAgICAgICAgICAgICBuYW1lOiAncHJpdmF0ZScsXHJcbiAgICAgICAgICAgICAgICAgICAgc3VibmV0VHlwZTogZWMyLlN1Ym5ldFR5cGUuUFJJVkFURV9XSVRIX05BVCxcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBjb25zdCBwYXJhbWV0ZXIgPSBuZXcgc3NtLlN0cmluZ1BhcmFtZXRlcih0aGlzLCAnU1NNVlBDSUQnLCB7IHBhcmFtZXRlck5hbWU6IGAke1NTTV9QUkVGSVh9L3ZwYy1pZGAsIHN0cmluZ1ZhbHVlOiB2cGMudnBjSWQgfSk7XHJcbiAgICAgICAgbmV3IENmbk91dHB1dCh0aGlzLCAnVlBDJywgeyB2YWx1ZTogdnBjLnZwY0lkIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVBhcmFtZXRlcicsIHsgdmFsdWU6IHBhcmFtZXRlci5wYXJhbWV0ZXJOYW1lIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVBhcmFtZXRlclZhbHVlJywgeyB2YWx1ZTogdnBjLnZwY0lkIH0pO1xyXG4gICAgICAgIG5ldyBDZm5PdXRwdXQodGhpcywgJ1NTTVVSTCcsIHsgdmFsdWU6IGBodHRwczovLyR7dGhpcy5yZWdpb259LmNvbnNvbGUuYXdzLmFtYXpvbi5jb20vc3lzdGVtcy1tYW5hZ2VyL3BhcmFtZXRlcnMvYCB9KTtcclxuICAgIH1cclxufSJdfQ== \ No newline at end of file