From fa0949a760d6028bc745b725e899fe2861428084 Mon Sep 17 00:00:00 2001 From: Wataru Mikuriya <96217942+wmikuriy@users.noreply.github.com> Date: Wed, 1 Jun 2022 17:09:01 +0900 Subject: [PATCH] feat: refactor cicd sample and update to CDK Pipelines (#50) * feat: refactor cicd sample and update to CDK Pipelines (remove old sample pipeline in tools/cicd) Co-authored-by: Wataru Mikuriya Co-authored-by: Kenji Kono <93309555+konokenj@users.noreply.github.com> --- README.md | 2 +- README_ja.md | 2 +- doc/PipelineDeployment.md | 325 ++ doc/PipelineDeployment_ja.md | 335 ++ doc/images/BLEA-DeployECS-01-Setup.png | Bin 0 -> 44883 bytes doc/images/BLEA-DeployECS-02-Tool.png | Bin 0 -> 58623 bytes doc/images/BLEA-DeployECS-03-Dev.png | Bin 0 -> 70952 bytes doc/images/BLEA-DeployECS-04-Prod.png | Bin 0 -> 94573 bytes doc/images/BLEA-DeployECS-05-Multi.png | Bin 0 -> 50237 bytes tools/cicd/README.md | 132 - tools/cicd/README_ja.md | 144 - tools/cicd/bin/bleadeploy.ts | 33 - tools/cicd/cdk.json | 37 - tools/cicd/jest.config.js | 7 - tools/cicd/lib/bleadeploy-stack.ts | 73 - tools/cicd/package.json | 35 - .../__snapshots__/bleadeploy.test.ts.snap | 773 ---- tools/cicd/test/bleadeploy.test.ts | 31 - tools/cicd/tsconfig.json | 7 - usecases/guest-webapp-sample/README.md | 3 + usecases/guest-webapp-sample/README_ja.md | 3 + .../bin/blea-guest-ecsapp-sample-pipeline.ts | 185 + usecases/guest-webapp-sample/cdk.json | 15 +- usecases/guest-webapp-sample/package.json | 1 + .../blea-ecsapp-sample-pipeline-stack.ts | 60 + ...-guest-ecsapp-sample-pipeline.test.ts.snap | 3098 +++++++++++++++++ .../blea-guest-ecsapp-sample-pipeline.test.ts | 164 + 27 files changed, 4188 insertions(+), 1277 deletions(-) create mode 100644 doc/PipelineDeployment.md create mode 100644 doc/PipelineDeployment_ja.md create mode 100644 doc/images/BLEA-DeployECS-01-Setup.png create mode 100644 doc/images/BLEA-DeployECS-02-Tool.png create mode 100644 doc/images/BLEA-DeployECS-03-Dev.png create mode 100644 doc/images/BLEA-DeployECS-04-Prod.png create mode 100644 doc/images/BLEA-DeployECS-05-Multi.png delete mode 100644 tools/cicd/README.md delete mode 100644 tools/cicd/README_ja.md delete mode 100644 tools/cicd/bin/bleadeploy.ts delete mode 100644 tools/cicd/cdk.json delete mode 100644 tools/cicd/jest.config.js delete mode 100644 tools/cicd/lib/bleadeploy-stack.ts delete mode 100644 tools/cicd/package.json delete mode 100644 tools/cicd/test/__snapshots__/bleadeploy.test.ts.snap delete mode 100644 tools/cicd/test/bleadeploy.test.ts delete mode 100644 tools/cicd/tsconfig.json create mode 100644 usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts create mode 100644 usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts create mode 100644 usecases/guest-webapp-sample/test/__snapshots__/blea-guest-ecsapp-sample-pipeline.test.ts.snap create mode 100644 usecases/guest-webapp-sample/test/blea-guest-ecsapp-sample-pipeline.test.ts diff --git a/README.md b/README.md index a0ebf9a2a..9ec1eb337 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,7 @@ Baseline Environment on AWS(BLEA) is a set of reference CDK template to establish secure baseline on standalone-account or ControlTower based multi-account AWS environment. This solution provides basic and extensible guardrail with AWS security services and end-to-end sample CDK code for typical system architecture. This template is also useful to learn more about AWS architecting best practices and how to customize CDK code as we incorporated comments in detail so that users can know why and how to customize. -Jump to | [Changelog](CHANGELOG.md) | [HowTo](doc/HowTo.md) | [Deploy to Multiaccount environment](/doc/DeployToControlTower_ja.md) | [Standalone to ControlTower](doc/Standalone2ControlTower_ja.md) | [Deployment Pipeline](tools/cicd/README_ja.md) | +Jump to | [Changelog](CHANGELOG.md) | [HowTo](doc/HowTo.md) | [Deploy to Multiaccount environment](/doc/DeployToControlTower.md) | [Standalone to ControlTower](doc/Standalone2ControlTower.md) | [Deployment Pipeline](doc/PipelineDeployment.md) | ## Governance Architecture diff --git a/README_ja.md b/README_ja.md index 05da0a3c3..d6c8b7218 100644 --- a/README_ja.md +++ b/README_ja.md @@ -7,7 +7,7 @@ Baseline Environment on AWS(BLEA) は 単独の AWS アカウントまたは ControlTower で管理されたマルチアカウント環境で、セキュアなベースラインを確立するための リファレンス CDK テンプレート群です。このテンプレート群は AWS のセキュリティサービスを活用して基本的かつ拡張可能なガードレールを提供します。また典型的なシステムアーキテクチャを実現するエンドツーエンドの CDK サンプルコードを提供します。この CDK テンプレートは用途に合わせてユーザが拡張して使うことを前提としており、拡張の参考となるコードやコメントを多く含んでいます。これによって AWS のアーキテクチャベストプラクティスや CDK コードのカスタマイズを習得しやすくすることを目的としています。 -Jump to | [Changelog](CHANGELOG.md) | [HowTo](doc/HowTo_ja.md) | [マルチアカウント環境へのデプロイ](/doc/DeployToControlTower_ja.md) | [Standalone 版からマルチアカウント版への移行](doc/Standalone2ControlTower_ja.md) | [パイプラインによるデプロイ](tools/cicd/README_ja.md) | +Jump to | [Changelog](CHANGELOG.md) | [HowTo](doc/HowTo_ja.md) | [マルチアカウント環境へのデプロイ](/doc/DeployToControlTower_ja.md) | [Standalone 版からマルチアカウント版への移行](doc/Standalone2ControlTower_ja.md) | [パイプラインによるデプロイ](doc/PipelineDeployment_ja.md) | ## ガバナンスアーキテクチャ diff --git a/doc/PipelineDeployment.md b/doc/PipelineDeployment.md new file mode 100644 index 000000000..9699eca4e --- /dev/null +++ b/doc/PipelineDeployment.md @@ -0,0 +1,325 @@ +# Deploy CDK Application via CDK Pipelines + +[View this page in Japanese (日本語)](README_ja.md) | [Back to Repository README](../../README.md) + +As an example of CI/CD with CDK, this document shows how to use sample to deploy CDK Application via CDK Pipelines. + +CDK Pipelines is a high-level construct library that makes it easy to set up a continuous deployment pipeline for your CDK applications, powered by AWS CodePipeline. By building pipelines quickly with CDK pipelines, you can simplify application development and focus on areas of greater interest. + +A sample has been implemented in `blea-guest-ecsapp-sample-pipeline.ts` that defines the configuration (equivalent to `guest-webapp-sample/bin/blea-guest-ecsapp-sample.ts` ) as Stage (class that defines deployment units in CDK Pipelines) and deploys from the pipeline. + +In case you have already deployed the use case `guest-webapp-sample/bin/blea-guest-ecsapp-sample.ts`, you will deploy the same application with a different stack name by following steps below to complete the CDK Pipelines deployment. To avoid duplicate billing and failed deployments, run `npx cdk destroy` to delete stacks that have already been deployed. + +## Overview + +### (Common) Setup Tools Account for deploying pipeline. + +![BLEA-Deploy-Setup](images/BLEA-DeployECS-01-Setup.png) + +Configure some settings for CodePipeline to access the source code + +### Architecture Pattern A - Deploy pipeline and application in the same account + +![BLEA-Deploy-Tools](images/BLEA-DeployECS-02-Tool.png) + +How to deploy both pipelines and applications in the same account is shown. When CodePipeline detects a push to a Git repository, application update is triggered by the pipeline. you can deploy this architecture when you have executed must steps shown below. + +### Architecture Pattern B - Deploy CDK application to the different account via pipeline + +![BLEA-Deploy-Dev](images/BLEA-DeployECS-03-Dev.png) + +Deploy CDK application to a different account than the account that has a pipeline (Tools account). You can verify this configuration if you include Appendix A among the steps shown below. + +### Architecture Pattern C - Deploy CDK application to multiple account via pipelines + +![BLEA-Deploy-Prod](images/BLEA-DeployECS-04-Prod.png) + +Here's an example of multiple accounts deployment by creating a pipeline for each account. This configuration can be verified by performing the tasks required by Configuration B for each account. + +### (Appendix) Deploy CDK application directly without pipeline when developing + +![BLEA-Deploy-Multi](images/BLEA-DeployECS-05-Multi.png) + +You can also deploy applications directly from your local environment without pipeline. The procedure for this configuration can be verified by following the steps shown in Appendix B. DO NOT use this configuration in production. + +## Pipeline Deployment + +### Prerequisities + +- Bootstrapped account (Tools account (ID: `222222222222`)) and region to which the pipeline will be deployed +- An AWS CLI profile with credentials to access the Tools account with Administrator privileges (referred to as `blea-pipeline-tool-exec` in this document) + +> **Note** we recommend that you use administrative credentials to an account only to bootstrap it and provision the initial pipeline. Otherwise, access to administrative credentials should be dropped as soon as possible. (Reference : [CDK Pipelines Doc](https://docs.aws.amazon.com/cdk/api/v1/docs/pipelines-readme.html)) + +### 1. Connect to GitHub using AWS CodeStar Connections + +1. Login to Tools account's AWS Console +2. Open [CodePipeline] Service +3. Click [Settings]=>[Connections] on the bottle of left navigation pane. Then click [Create connection] + ![BLEA-Deploy-1-Console](images/BLEA-Deploy-1-Console.png) +4. Select [GitHub] and input [Connection name]. Click [Connect to GitHub]. + ![BLEA-Deploy-2-ChooseGitHub](images/BLEA-Deploy-2-ChooseGitHub.png) +5. Click [Install a new app] to setup "AWS Connector for GitHub" app + ![BLEA-Deploy-3-CreateConnection](images/BLEA-Deploy-3-CreateConnection.png) +6. On [Install AWS Connector for GitHub], Choose your repository and Click [Install]. Then you return to AWS Console. + ![BLEA-Deploy-4-InstallApp](images/BLEA-Deploy-4-InstallApp.png) +7. On [Connect to GitHub] page, Click [Connect] + ![BLEA-Deploy-5-Connect](images/BLEA-Deploy-5-Connect.png) +8. Now you can see Arn for connection, like `arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`. Copy it for later use. + ![BLEA-Deploy-6-Finished](images/BLEA-Deploy-6-Finished.png) + +### 2. Setup Connections information to `cdk.json` + +Update `cdk.json` (in this case, `usecases/guest-webapp-sample/cdk.json`) of target application so CodePipeline can access your BLEA repository and specify a target branch. + +```json + "dev": { + "envName": "development", + + ~~~~~ (Your App Context) ~~~~~ + + "repository": "ownername/repositoryname", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + }, +``` + +- `dev`: Environment name to specify on CDK command line. ex) `npx cdk deploy -c environment=dev` +- `repository`: GitHub repository name. If your reopsitory URL is 'https://github.com/ownername/repositoryname.git', you can specify `ownername/repositoryname`. +- `branch`: Target branch (When push to this branch, CodePipeline will triggerd). +- `connectionArn`: Connection Arn copied from the previous section. + +### 3. Deploy CodePipeline project + +#### 3.1. Setup Application to be built in `cdk.json` file + +The target file of `cdk synth` or `cdk deploy` is selected by `-a` option or `app` configuration in `cdk.json`. For example, you can deploy sample pipeline by overwrite configuration as following + +##### **`usecases/guest-webapp-sample/cdk.json`** + +```ts +{ + "app": "npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts", + // ... +``` + +#### 3.A (Optional) Change deployment environment + +In CDK Pipeline , `cdk synth` command is executed in CodeBuild in Tools Account. Here is a example implementation of synth command. You can change deployment environment by Pipeline Stack Prop `environment` (`dev` is set to default). + +##### **`usecases/guest-webapp-sample/blea-ecsapp-sample-pipeline-stack.ts`** + +```ts +// ... + commands: [ + ~~~ (Your Build Commands) ~~~ + `npx cdk synth --app "npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts" -c environment=${environment}`, + `npx cdk ls -c environment=${environment}`, + ], + // ... +``` + +> **Note** +> You don't have to select `--profile` option in executing synth command in CodeBuild Project. This is because CodeBuild has enough privileges in its execution role. If you want to run it locally, you can execute it by specifying Profile like `npx cdk synth -c environment=dev --profile xxxxxx`. + +##### **`usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts`** + +```ts +const prodStack = new BLEAPipeline.BLEAPipelineStack(app, `${pjPrefix}-Prod-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: procEnv, + environment: 'prod', // you can change context env. + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Prod-Stage`), +}); +``` + +#### 3.2 Deploy pipeline to Tools Account + +You can deploy sample pipeline to Tools account by using these commmands from your local machine. + +```sh +npm ci +cd usecase/guest-webapp-sample/ +npx cdk bootstrap -c environment=prodpipeline --profile your_profile_name # If you haven't bootstrapped target account +npx cdk deploy -c environment=prodpipeline --profile your_profile_name +``` + +### 4. Update BLEA codes, push and deploy + +Once your pipeline is deployed, you can continue to deploy code changes for BLEA. When the changes are pushed to GitHub, CodePipeline is triggered and retrieves the source code from the Git repository. Inside CodePipeline, CodeBuild synthesizes Cloud Assembly, and then deploy them. + +Now, you have deploy CDK Application defined in Stage in `guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts` through a pipeline. + +> **Note** +> In CDK Pipelines, you can continuously deploy your deployment pipeline as target repository updates by using `SelfMutation`. You can also deploying all stack you define via Tools Account by using it. + +--- + +## Appendix A - Cross Account Deployment + +CDK Pipelines is easy way to implement pipelines for deploying applications to multiple accounts. +In this appendix, +how to execute cross account deployment to different account (Prod account (ID: `333333333333`)) from the Tools account is shown. + +### Prerequisities + +- Production account is registered to Organizations +- Credential can be get via SSO +- Private Git repository that no third party can access to. The account information will be listed in the pipeline stack or `cdk.json`. + +> **Note** +> In this usecase, Git repository must be manageed as **PRIVATE**. This is because the account information about application deployment by the pipeline is required in the repository. +> For example, if you are developing on GitHub, you need to create a private repository by cloning and pushing this public repository. If you fork this repository, you will not be able to manage it as a private repository. + +### Change in Code + +1.Enable cross account deployment by setting `crossAccountKey` to `true`. + +**`usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts`** + +```ts +const pipeline = new pipelines.CodePipeline(this, `${id}-pipeline`, { + crossAccountKeys: true, + synth: new pipelines.CodeBuildStep('SynthStep', { + input: pipelines.CodePipelineSource.connection(props.repository, props.branch, { +``` + +> **Note** +> When `crossAccountKey` is `true`, account information is evaluated more strictly in the test. Account information must be selected explicitly in the pipeline stack. + +### Passing account information in Stage instantiation that is deployed by the pipeline + +**`usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts`** + +```ts +new BLEAPipelineStack(app, `${pjPrefix}-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: getProcEnv(), + + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Pipeline-Deployment`, { + env: { + account: envVals['prodEnv']['account'], + region: envVals['prodEnv']['region'], + }, // you can change deploy account by changing this value. + }), +}); +``` + +When adding account information, you have to edit `cdk.json` as following + +```json +"dev": { + "envName": "Production", + + ~~~~~ (Your App Context) ~~~~~ + + "repository": "ownername/repositoryname", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "prodEnv": { + "account": "333333333333", + "region": "ap-northeast-1" + } +}, +``` + +### Setting up Prod Account + +Prerequisity: Profile of Prod Account is set like following + +``` +[profile blea-pipeline-prod-sso] +sso_start_url = https://xxxxxxxxxxxx.awsapps.com/start#/ +sso_region = ap-northeast-1 +sso_account_id = 333333333333 +sso_role_name = AWSAdministratorAccess +region = ap-northeast-1 + +[profile blea-pipeline-prod-exec] +credential_process = aws2-wrap --process --profile blea-pipeline-prod-sso +region = ap-northeast-1 +``` + +1. Login to Prod Account via SSO + +```sh +aws sso login --profile blea-pipeline-prod-sso +``` + +2. Bootstrap Prod Account + +```sh +npx cdk bootstrap --profile blea-pipeline-prod-exec --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess --trust 222222222222 aws://333333333333/ap-northeast-1 -c environment=prod +``` + +3. Bootstrap Tools Account + +```sh +npx cdk bootstrap -c environment=dev --profile blea-pipeline-tool-exec --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://222222222222/ap-northeast-1 +``` + +4. Deploy pipeline to Tools account + +```sh +npx cdk deploy -c environment=dev --profile blea-pipeline-tool-exec +``` + +## Appendix B - Deploy copy of application stack to Development Account + +When actually developing a system using the CDK, it is necessary to deploy the stack without pipeline to shorten the development cycle. In that case, you can also deploy the stack itself, which is deployed by the pipeline, to the development environment account, instead of the pipeline. + +### Prerequisities + +- An account is paid out for the development environment (Dev account (ID: `xxxxxxxxxxxx`)) and it is registered in the Organizations. +- Credential can be obtained via SSO. + +```json + "dev": { + "env": { + "account": "xxxxxxxxxxxx", + "region": "ap-northeast-1" + }, + "envName": "Development", + + ~~~~~ (Your App Context) ~~~~~ + + "githubRepository": "ownername/repositoryname", + "githubTargetBranch": "main", + "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "prodEnv": { + "account": "333333333333", + "region": "ap-northeast-1" + } + }, +``` + +``` +[profile blea-pipeline-dev-sso] +sso_start_url = https://xxxxxxxxxxxx.awsapps.com/start#/ +sso_region = ap-northeast-1 +sso_account_id = xxxxxxxxxxxx +sso_role_name = AWSAdministratorAccess +region = ap-northeast-1 + +[profile blea-pipeline-dev-exec] +credential_process = aws2-wrap --process --profile blea-pipeline-dev-sso +region = ap-northeast-1 +``` + +### Deploy Stack itself directly to the Development environment + +For example, if you want to deploy with `BLEA-ECSApp` defined in `BLEA-Dev-Stage`, deploy to the Dev account with the following command + +``` +npx cdk deploy BLEA-Dev-Stage/BLEA-ECSApp -c environment=dev --profile=blea-pipeline-dev-exec +``` + +In addition, you can check the list of stacks (e.g. `BLEA-Dev-Stage/BLEA-ECSApp` in the above command) that can be deployed by the following command + +``` +npx cdk ls -c environment=dev +``` diff --git a/doc/PipelineDeployment_ja.md b/doc/PipelineDeployment_ja.md new file mode 100644 index 000000000..f13abfa93 --- /dev/null +++ b/doc/PipelineDeployment_ja.md @@ -0,0 +1,335 @@ +# CDK Pipelines を使用して guest-webapp-sample をデプロイする + +[In English](PipelineDeployment.md) | [リポジトリの README に戻る](../../README_ja.md) + +CDK による CI/CD の一例として、このドキュメントでは [CDK Pipelines](https://docs.aws.amazon.com/cdk/v2/guide/cdk_pipeline.html) を用いてアプリケーションをデプロイするためのサンプルコードの使用方法を示します。 + +CDK Pipelines は、AWS CodePipeline によって CDK アプリケーションの継続的なデプロイパイプラインを簡単にセットアップできる高レベルのコンストラクトライブラリです。CDK pipelines で迅速にパイプラインを構築することで、お客様はアプリケーション開発を簡素化し、より関心の高い部分に注力することができます。 + +`guest-webapp-sample/bin/blea-guest-ecsapp-sample.ts` と同等の構成を `guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts` で Stage (CDK Pipelines におけるデプロイ単位を定義するクラス) として定義し、パイプラインからデプロイするサンプルが実装されています。 + +すでにユースケース `guest-webapp-sample/bin/blea-guest-ecsapp-sample.ts` をデプロイ済みの場合、以下の手順に従って CDK Pipelines によるデプロイを行うと、同じアプリケーションを異なるスタック名でデプロイすることになります。課金の重複やデプロイの失敗を回避するため、`npx cdk destroy` を実行してすでにデプロイ済みのスタックを削除してください。 + +## パイプラインの構成 + +### セットアップ(共通) - パイプラインに必要な情報を設定 + +![BLEA-Deploy-Setup](images/BLEA-DeployECS-01-Setup.png) + +CodePipeline がソースコードを取得するために必要な設定を実施します。 + +### 構成パターン A:同一アカウント内でパイプラインとアプリケーションをデプロイする + +![BLEA-Deploy-Tools](images/BLEA-DeployECS-02-Tool.png) + +パイプラインとアプリケーションの両方を同一アカウント内にでデプロイします。Git リポジトリに対する Push を 契機としてアプリケーションがパイプラインによってデプロイされます。以降で示される手順のうち、必須のものを実施した場合はこちらの構成となります。 + +### 構成パターン B:パイプラインから別アカウントに対してアプリケーションをデプロイする + +![BLEA-Deploy-Dev](images/BLEA-DeployECS-03-Dev.png) + +パイプラインを持つアカウント(Tools アカウント)とは別のアカウントに対してアプリケーションをデプロイします。以降で示される手順のうち、Appendix A も含めて実施した場合にこちらの構成となります。 + +### 構成パターン C:パイプラインから複数のアカウントに対してアプリケーションをデプロイする + +![BLEA-Deploy-Prod](images/BLEA-DeployECS-04-Prod.png) + +複数アカウントにアプリケーションをデプロイする方法の一例として、各アカウントごとにパイプラインを作成している例を示しています。この構成は、各アカウントごとに構成 B で要求される作業を実施することで検証可能です。 + +### (Appendix)開発時にパイプラインを経由せず直接アプリケーションをデプロイする + +![BLEA-Deploy-Multi](images/BLEA-DeployECS-05-Multi.png) + +パイプライン構築後の開発時にパイプラインの完了を待たずにデプロイ結果を確認したい場合、Appendix B の手順で直接デプロイを実行することができます。ただし、この手順は本番環境では使用しないでください。 + +## デプロイ手順 + +### 前提条件 + +- パイプラインのデプロイ先のアカウント(以下、 Tools アカウント(ID: `222222222222`))およびリージョンで CDK をブートストラップ済みであること +- Tools アカウントに Administrator 権限でアクセスする認証情報を AWS CLI プロファイルとして設定済みであること(本ドキュメントでは `blea-pipeline-tool-exec` プロファイルを使用) + + > **Note** Administrator 権限は CDK のブートストラップを行う際と、パイプラインをデプロイする際に必要な権限となります。セキュリティの観点から、パイプラインのデプロイが完了したら Administrator 権限を外すことが推奨されます( [CDK Pipelines のドキュメント](https://docs.aws.amazon.com/cdk/api/v1/docs/pipelines-readme.html) より)。 + +### 1. AWS CodeStar Connections を使用して GitHub を接続する + +はじめに、パイプラインによってデプロイを行う Git リポジトリに対する Connection を作成する必要があります。既に対象の Git リポジトリにアクセスできる Connection を作成済みの場合は手順 1-7 までスキップすることができます。 + +1. Tools アカウントの AWS マネジメントコンソールにログインします +2. [CodePipeline] サービスを開きます +3. ナビゲーションペインの左下にある [Settings]=>[Connections] をクリックし、[Create Connection] をクリックします。 + +![BLEA-Deploy-1-Console](images/BLEA-Deploy-1-Console.png) + +4. [GitHub] を選択して、[Connection name] を指定し、 [Connect to GitHub] をクリックします + +![BLEA-Deploy-2-ChooseGitHub](images/BLEA-Deploy-2-ChooseGitHub.png) + +5. "AWS Connector for GitHub"をインストールするため、[Install a new app] をクリックします + +![BLEA-Deploy-3-CreateConnection](images/BLEA-Deploy-3-CreateConnection.png) + +6. [Install AWS Connector for GitHub] の画面で、自身のリポジトリを選択し、[Install] をクリックします。この後画面がマネジメントコンソールに戻ります + +![BLEA-Deploy-4-InstallApp](images/BLEA-Deploy-4-InstallApp.png) + +7. [Connect to GitHub] のページで、 [Connect] をクリックします + +![BLEA-Deploy-5-Connect](images/BLEA-Deploy-5-Connect.png) + +8. 以上で Connection の ARN が画面に表示されます。形式は次のとおりです。 `arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx` 後に使用するため、これをコピーします + +![BLEA-Deploy-6-Finished](images/BLEA-Deploy-6-Finished.png) + +### 2. `cdk.json` に Connection の情報を設定する + +デプロイするアプリケーションの `cdk.json` ファイル(今回の場合、`usecases/guest-webapp-sample/cdk.json`)を編集することで、CDK がコンテキスト情報を CodePipeline に引き渡せるように設定します。 + +```json + "dev": { + "envName": "Production", + + ~~~~~ (Your App Context) ~~~~~ + + "repository": "ownername/repositoryname", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + }, +``` + +- `dev`: CDK コマンドの実行時にコンテキストで指定する環境名。例:`npx cdk deploy -c environment=dev` +- `repository`: GitHub リポジトリの名前。自身のリポジトリ URL が 'https://github.com/ownername/repositoryname.git' である場合、`ownername/repositoryname` を指定する +- `branch`: パイプラインが参照するブランチ名 +- `connectionArn`: 先のセクションで取得した GitHub Connection の ARN + +### 3. パイプラインをデプロイする + +#### 3.1. ビルド対象のアプリケーションを `cdk.json` から確認する + +`cdk synth` または `cdk deploy` 実行時に参照されるアプリケーションの初期値は、 `cdk.json` の `app` キーに指定されています。各コマンドを実行する際に `--app` オプションを渡すことでオーバーライドすることもできます。パイプラインを使って今後継続的にデプロイを行う場合、以下のように `cdk.json` の設定を書き換えることを推奨します。 + +##### **`usecases/guest-webapp-sample/cdk.json`** + +```ts +{ + "app": "npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts", + // ... +``` + +#### 3.A (Optional)デプロイ先の環境を変更する場合 + +CDK Pipelines では、Tools アカウントの CodeBuild において、 `cdk synth` コマンドを実施します。以下は、サンプル実装における Synth コマンドの実装になります。Pipeline Stack の Props の `environment` にデプロイする環境を渡すことができます(デフォルトの設定値は `dev`)。 + +##### **`usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts`** + +```ts + // ... + commands: [ + ~~~ (Your Build Commands) ~~~ + `npx cdk synth --app "npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts" -c environment=${environment}`, + `npx cdk ls -c environment=${environment}`, + ], + // ... +``` + +> **Note** synth コマンドをパイプライン内部で実行する際は、オプションとして `--profile` を指定する必要はありません。CodeBuild の実行ロールを参照するためです。 +> ローカルで実行する場合は、 `npx cdk synth -c environment=dev --profile xxxxxx` のような形で Profile を指定することで実行することができます。 + +##### **`usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts`** + +```ts +const prodStack = new BLEAPipeline.BLEAPipelineStack(app, `${pjPrefix}-Prod-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: procEnv, + environment: 'prod', // you can change context env. + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Prod-Stage`), +}); +``` + +#### 3.2. アカウントをブートストラップし、パイプラインを Tools アカウントにデプロイする + +以下のコマンドをローカル環境から実行することで、パイプラインを Tools アカウントにデプロイすることができます。 + +```sh +npm ci +cd usecase/guest-webapp-sample/ +npx cdk bootstrap -c environment=dev --profile blea-pipeline-tool-exec # If you haven't bootstrapped target account + +npx cdk deploy -c environment=dev --profile blea-pipeline-tool-exec +``` + +### 4. BLEA のコードを更新し変更を Push することで、デプロイを実行する + +パイプラインのデプロイが完了したら、BLEA のコードの変更を継続的にデプロイすることが可能になります。 +BLEA のコードを変更して、commit し、対象ブランチへの Push を実行します。 + +GitHub に変更が push されたら、CodePipeline が起動して Git リポジトリからソースコードを取得します。CodePipeline 内部では CodeBuild が実行されており、 Cloud Assembly を synth した後に、デプロイします。 + +以上でユースケース `guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts` の Stage で定義された CDK アプリケーションがパイプラインを通じてデプロイされました。 + +> **Note** CDK Pipelines では、 [SelfMutation](https://aws.amazon.com/jp/blogs/news/deploying-a-cdk-application-using-the-cdk-pipelines-modern-api/) という機能を使用することで、デプロイパイプラインもリポジトリの更新に応じて継続的にデプロイすることが可能です。これにより、Tools アカウントを介して定義されたスタックを全てデプロイすることが可能です。 + +--- + +## Appendix A - クロスアカウントに対するデプロイ + +CDK Pipelines は、アカウント間にまたがるアプリケーションをデプロイするパイプラインを手軽に実現することが可能です。 +本項目では、Tools アカウントから CDK アプリケーションをデプロイする先のアカウント(以下、Prod アカウント(ID: `333333333333` ))に対してクロスアカウントなアプリケーションのデプロイを実施する手順を示します。 + +### 前提条件 + +- Prod アカウントが Organization に登録されていて、SSO を用いて Credential を取得することができること +- パイプラインをデプロイする Git リポジトリがプライベートリポジトリとして管理され、第三者が `cdk.json` またはパイプラインのスタック等に記載されているアカウント情報にアクセスできないこと + + > **Note** 本サンプルでは、パイプラインがデプロイするスタックのデプロイ先となるアカウントの接続情報を記載する必要があるため、当該情報を管理する Git リポジトリは Private である必要があります。例えば GitHub 上で開発を行う場合、公開されている本リポジトリを Clone して Push することで Private なリポジトリを作成する必要があります。この際本リポジトリを Fork するとプライベートリポジトリとして管理することができないので、注意が必要です。 + +### コードの変更 + +1. CDK Pipelines の `crossAccountKeys` を `true` に設定して有効化する + +##### **`usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts`** + +```ts +const pipeline = new pipelines.CodePipeline(this, `${id}-pipeline`, { + crossAccountKeys: true, + synth: new pipelines.CodeBuildStep('SynthStep', { + input: pipelines.CodePipelineSource.connection(props.repository, props.branch, { +``` + +> **Note** `crossAccountKeys` を `true` にすると、テスト時のアカウント情報に関する評価がより厳密になります。具体的には、パイプラインスタックにおいて明示的に(環境情報を介さずに)アカウント情報を渡す必要があります。このためには `cdk.json` の設定値を介してアカウント情報を渡す、などといった手段が考えられます。 + +2. Pipeline がデプロイする Stage をインスタンスかする際に、デプロイ先のアカウント情報を `env` に渡す。 + +##### **`usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts`** + +```ts +new BLEAPipelineStack(app, `${pjPrefix}-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: getProcEnv(), + + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Pipeline-Deployment`, { + env: { + account: envVals['prodEnv']['account'], + region: envVals['prodEnv']['region'], + }, // you can change deploy account by changing this value. + }), +}); +``` + +アカウント情報を記載する際は、`cdk.json` に接続情報を以下のような形で追記する必要があります。 + +```json + "dev": { + "envName": "Production", + + ~~~~~ (Your App Context) ~~~~~ + + "repository": "ownername/repositoryname", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", + "prodEnv": { + "account": "333333333333", + "region": "ap-northeast-1" + } + }, +``` + +### Prod アカウントのセットアップを行う + +以下のような形で、Prod アカウントの Profile が設定されているとします。 + +``` +[profile blea-pipeline-prod-sso] +sso_start_url = https://xxxxxxxxxxxx.awsapps.com/start#/ +sso_region = ap-northeast-1 +sso_account_id = 333333333333 +sso_role_name = AWSAdministratorAccess +region = ap-northeast-1 + +[profile blea-pipeline-prod-exec] +credential_process = aws2-wrap --process --profile blea-pipeline-prod-sso +region = ap-northeast-1 +``` + +次のとおり手順を実施することで、Tools アカウントから Prod アカウントに対してクロスアカウントなアプリケーションのデプロイを実施することが可能になります。 + +1. Prod アカウントに SSO でログインする + +```sh +aws sso login --profile blea-pipeline-prod-sso +``` + +2. Prod アカウントのブートストラップを実施する + +```sh +npx cdk bootstrap --profile blea-pipeline-dev-exec --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess --trust 222222222222 aws://333333333333/ap-northeast-1 -c environment=prod +``` + +3. Tools アカウントのブートストラップを実施する + +```sh +npx cdk bootstrap -c environment=dev --profile blea-pipeline-tool-exec --cloudformation-execution-policies arn:aws:iam::aws:policy/AdministratorAccess aws://222222222222/ap-northeast-1 +``` + +4. Tools アカウントに対してパイプラインをデプロイする + +```sh +npx cdk deploy -c environment=dev --profile blea-pipeline-tool-exec +``` + +この Tools アカウントにデプロイされたパイプラインによりアプリケーションがビルド・デプロイされます。 + +参考情報:https://aws.amazon.com/jp/blogs/news/deploying-a-cdk-application-using-the-cdk-pipelines-modern-api/ + +## Appendix B - 開発環境へのアプリケーションスタックのデプロイ + +実際にシステムを CDK を用いて開発する際には、パイプラインを介さずにスタックをデプロイして検証サイクルを短くすることが必要になることがあります。そのような場合は開発環境用のアカウントに向けて、パイプライン経由ではなく、特定のスタックを直接デプロイすることも可能です。ただし、デプロイ元のコードと実際構成されるシステムの構成を一致させるため、本番環境ではこのような直接的なデプロイは避けるようにしてください。 + +前提:以下に示されているような形で開発環境用に払い出されたアカウント(以下、Dev アカウント(ID: `xxxxxxxxxxxx`))が、Organization に登録されていて、SSO 経由で Credential を取得できること + +```json + "dev": { + "env": { + "account": "xxxxxxxxxxxx", + "region": "ap-northeast-1" + }, + "envName": "Development", + + ~~~~~ (Your App Context) ~~~~~ + + "githubRepository": "ownername/repositoryname", + "githubTargetBranch": "main", + "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" + }, +``` + +``` +[profile blea-pipeline-dev-sso] +sso_start_url = https://xxxxxxxxxxxx.awsapps.com/start#/ +sso_region = ap-northeast-1 +sso_account_id = xxxxxxxxxxxx +sso_role_name = AWSAdministratorAccess +region = ap-northeast-1 + +[profile blea-pipeline-dev-exec] +credential_process = aws2-wrap --process --profile blea-pipeline-dev-sso +region = ap-northeast-1 +``` + +### 開発環境にスタックを直接デプロイする + +例えば、`BLEA-Dev-Stage` 中で定義されている `BLEA-ECSApp` を指定してデプロイしたい場合は以下のコマンドによって Dev アカウントにデプロイすることができます。 + +``` +npx cdk deploy BLEA-Dev-Stage/BLEA-ECSApp -c environment=dev --profile=blea-pipeline-dev-exec +``` + +なお、以下のようなコマンドによってデプロイできるスタック (上記コマンドにおける`BLEA-Dev-Stage/BLEA-ECSApp`に相当するもの) の一覧を確認することができます + +``` +npx cdk ls -c environment=dev +``` diff --git a/doc/images/BLEA-DeployECS-01-Setup.png b/doc/images/BLEA-DeployECS-01-Setup.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3ac67accbb59a1cdfd6a772a46acdc99a471a7 GIT binary patch literal 44883 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

s{r*VN%t;_JZW*n~353^WY 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 Qg5$e8N1)M|)m7ff2-JGct7u{O6 z8ydTy+NjN8$A;0#ELV`2giZL>ZTpJ!=6qAsdQISBWp%P@wJ;t!A54KAckrlK%fM^Yl^7&5k*8rYe6)@trJU3r8cdZ zvKF6z`@H!)Ty40$-)E?2B@*)r1W#wqE^Ie40t5o99c@PYLlY4r{O_@mq z0uoK4pAejBPFI(HH%P{pHB3p2fO*^y8Jcn(`lj(S$QMsQ1qqJC)_{b@;Si^!SbLH5 zwSRq4pP?@cSm}sAhF)&OpB4G`6g)yulA^tjAGDw}?70wMDN#TWt;!}?5GOGh5PB`{ zO^?M{k&0(BnCj^xdCR&RP;+-lbBBTuEVL_+-y>6Zle}ktb8V7AX^U-v(h$$vj{}3M z2$>t2D*e|Uk1Q4@6-$vUHv&Nk`z%cnZ*Nu!t^M}MN_XOz8^cA>3gcHV%^I2Rg(&w% z{5>g~Su^SJ+`YzxcpqriLR;89`L-e5k(pRCDf1WS^f1i!%s;wKViRzSRQ5+m3yqle ztp=pD1qRGmcSwAq%kZa*^0lEuMGDX)!f)e^e@r{WP%C>P|H*{1Mg4l73+qe>#Xvu= z5UvQ4jkzM78`c$Wv>Y6I7-ai=)9=PR@L9A@yClnHfFK4;Fx|9VX*&Gp0B(LV)KxWQ zY*qZ?pCQgbS#ra@C;?Dvhg}0ryAjly(W@?-jI{Y79xBQVW>kvPr~C*PjrlzeeXjq| zqJqnI+2$E|R(K1eMloqJLffo(rO2V=49Gszz(A`DV zQiO>w&3R^Gk=y}Ee4xYI^FAFa??(%(&-?J+bFE7l3FRm8x_$Z{J4B5XKjd^7 zpLYbAU=uhm*@(}gv>V^d-BTdA7{+H8&BofyHAYcvvVOS`i|G@UVBs@V$M%u(^O6c8 zl7S-Ytv1WqV$%(@nzwVwD1?WJq0`4cmq~=Pfu}}@=rb(4z*Z1Z`T8s8sh#nApL{}vZ7dcj_9!JhupV1A2;slP(!F0A3MM4gnjzrF6qK}Y?-*75RjYBWbQ4!8&5P(w0-hCgD= z__rxWP(DR(UdA-L6|~LS`2pS9_TvB13PjiN*RszmvORb*GvS9hLzbI+xDpZoC zQL#&jI@a{S@QS>twZK3Fd92BM_P8Hu4w5+IKObA#xL#XHhBUtap@)_w?(fX&xO7O}z zWI^lLJdUr(zaJ%%2ELv>{gqXi6ICH6({fL`9g*=-RL2bpB%oQID>Jl79ev!Y#c?6x zKdSz?oH{#cZ}Z~5B@7#Jt5!wtgCD|}%>r&)kZ`HYjOqT(&NVvhE$1x2w(%r&lVHI} zQfbBpv&XS3o^=1{;1uu>K%b~$iUf~fcX!*5W8P$dfjiwGbmTwJ--(Ve17?z(x3b68 zvpRx~AyZMDKkrI`$aY8KIEdFMRDT*M9kJPvTQrkq#+8UExZa;`+X0i#zAV%?Hxz!e z58q>&6i*+W9Rn$DJ9(;0uB)PdEP1}7cb%Q6oa=Pr^$Q6zIg2>#5OB=P1sM2=xe#}j zn_3GVDe-0%m=$YGr8d&BK^ie@urd4VxLzLjTz>-dD1Kd}T6j24rvr`_+sAhp%(%~) zO?Sq-C2Mp-N7Jn+?BnhS$5W>7-?D|Co7=6qrIwMO)iaH#^Gz4a9MW$8&wl|dPq&qb z#QjjuvxlMRYkk;VdZV0hITg6QUV{tWEM!nr|Ep2Az568nL-G5u*0NTJLl7j?a>S6t zTQ2gCtPAuQNLlVDn&VyCkCRo)Y%_fAQd5?gN87#we)$Oki3x`txxAyN zs55Tp$^Jq|08>D(gy;xvFrZ1(GJbcvq3JWyA6sDNQaG0>9}j3)J&%#Jg-H0xHk(c8 z-6;$hGTGVv1C5G$!DkA45cd~6qt!p~SV2^iD%+)883JK!M#9qQlJOr0x4T-_N_uU-BCb#j0paTGVVx?l>*E z-iYiM?Vgp|2M~G7ngP$nfTtty@YuRO#wvN8CtA*ET-4t;o>$# zOG`CB&K|PTTTlpsK!Iv(cWD3N68o#+XjWC@Y1GN6hW0|&dffa1D9jQ1}h zjax2G+UcoJ{?ww(0SjmkQ#(~HEm3(#D2Jz=XxR4g+&2NuO9&pS{yv@=Uop!YO zC?j;$kom;f-%4H@HB@l@F-}iUO!T4%s0pl@5&FRf990lK(MIHnWdvzhp&9mM?0>(O zGobi9zDT*@*}Huxci}OM=IZ-;wfz!DiD8${6>`iMo?>&f@!?k@mV-{CpG6e1pDNun zTPttX1e>6%h}~r7=s^E(?40-<9oEC+!{0Fc045%uw4eFjAGviiBKFrGALpz+usteb zqk>$1sIT;?zW>8*Y#Tz`1VmK4?0Qc_eNLixQDpVYP>)bz^txtjSBO2O$*ZcS-V5xRQrUk$G=b1m{UT( zu@?5c2zeZ2^Nas3+WB!-*m`9e^Q`M=r+d2DeE!7~i}*||!8?^o#g4X2R$j?X&p+F* zy|FBZ?KiipM2V2V1mUKb2Si=}A*@5SY|Qcb{ROpjQdwz5WL-{&>!>zeJMdj&VYA}S z!Z`_L4tXxZ5A7{nj_(*2)610?rt~77Ckl=qbA7th(5E!hOxF;QuMH%}oU4%BV#GQD zAII}y?#}1mcUL#Wtd=&-a2u_Kup%KFH+ zo<51=RYM$LsS{V8NM?!d4OKpxN2ft~XW|dyfElGyOC#eE7MWNlC`{8)7kNL&2j<~< z$dXl)0|`7#@_T&#+GrxuPF^H)duI)hBhI&bZ%8ql`N6+_oEG3r6tYCceeE}!X=^kh zHHN>`h+r*or?F29HdAE`4)26jY2l$2xu**8XtGu;K-YY z$9I%nHb+KV(*0pRRQY_sno?;!hH|@w@k-}Fd+z{XA!fAXeF21@ROyGK>%VOTN@NXF zdQQtR<01Yg`G38@t#_ z4~u3>7{U-Gp>b?fNw?=x_y2zBFaXH$Mm;ux57vFNMIKmB+mH2v1>NYQa;Gcft%1l< zcUdj3yP-`V8Sk9l+YTRG7`uN%{UOw4Ns-42DgwJDo-@a|?*5Yoopw9_YLXP_)H@aO zO5IjMg#C+EVN?cpkLcs2EScooHsvLG*WrX30_qxM*rq`cg7B9u zBQnVjD!M->ZOVJ;H2h0X*VfR~)5(yIU$g{v$*LmsI`3Bk9wXST6n;8bIh3^Ifo!*(da z3*gBg>KH7QW_J5RAXFy=Q%;J78q<Az(XSCG&>wj@i>qbnRqG?0vec6bf6!cgygFa@8*vk57Xz&jZX!4VgF&74CO`os8 z+dbcD>Ber)8N=Nfebbxmxy_mX&J8GOho{`0R%FDaFksb%of4H2`Yye((6QX^@49Xu z{=zs4nDjQs3EOAS=0-7{R&Wg{+(~-_dl%oSRf)_c+K#b)k89B@>?WP7`JH&v0ayE~ zRpJa^#X~Pnn$8v;CBGhcd%L#r#7ETV{B#aImO|PV;9j|Ms<# z4Pye)s45R&H?7~&cCsdJY}?XGKTYD=$s-yWcK+3xkscbAng_e3go0d?3O+*?i?J~$#DRXdx3TJya#PNK74HqL z+LFD3hh+Xno^`6vNAa0)**75K)6k!pmAPGLL2`^G3Js^Z8n4o(VHQGa2kwps^A2t- zrlOM`t8;=)!XNQAF~&_^6)q@}J&wLc(tS4(ex8~jm|@FeFh7fy|6W8H1$>tJv6>t3 zZ(m`CmJ63xMEZ?AfqerZ)lI{G62F7Nha3-#YR`YV`F?gY^8I)I=1>lHmG-!6O_`Qb zXQ4qCxC_X6oZBFZm-LZtyx?l=GfyB| z>*(QftHI;2^tUnIMVKBY+Tu+SdT1P&5lxVPqT{I7#fyX;&2o^b3O++&^5UXH4Dh@y z8%V2|(3D~Fh@_CPcZKsLeMn%`Nr4=6hrZRN`VD-NzN#L`CV1R}QmI^V##&@>e85aB zoU_#K==l5hzW3?y=lD(LsA}QC(aw$h*qnNM^1MY4Jx*?(TD-ybH)i3D#hdDY)WtZ1 zXbg&@M{(#BmLGKDrP9`p@qxqBQ9l5t2#do@ULRnIjZXEP{ZciiNnjkaiUbhBB`N-s`@?s^b@rhs$W|n_Lp^6)39tSEOp)paQlJ14>ZdF*ywFL!JP>Y{ z&EP*_HSa;}_1qO{e^aTpZU!wL)w#WfnMzEGmencAcnGNEKMTp%JZr5WPrjIv1W zRg+I?u(NZkr2FvB`Xl%Fn`>NOKflUG+4zWbpqza~*(7D1ztW!wcAOOz0Jw zcDDvwip|FdE=2<_j%o5Uv{mH;6~zI`ifwr+E>W?-k7yHR0r$7D(b20x&$r1}i$%*2 zJt?_MHGu#+0s2$OA9*dKmM>7F->1XiQL)vd$%_LX7ao?f?5|yKrB$=*O4CTS(xT+s zaKsnya}N!0e??Blx-O4WciC{-(0a_B()_=gnFEe zzAHDhfBUwiDXC+|=*@)sAvSQe!_uHpkefw(LlB3j!&T&3E5_CIWZ{F!g^7WfU$fQc z7Ne-d^y-aP%^g8bPEIB+!;lX|`#^1uem!X=B}$f&E7>aHD-@M9_ZnIm`KqrHdSTjI zPainO-piI@kfz&za3)dwvH4dtkqeHZghy6}&(FHy<BJiEs*_tvacwQ)Zc5ANV|` z&WGt0O?<@2&#%*VyzCqt46bti@d_g21qTNu87r!qkyM3W zOze8amR$+eCo}lQF(XYi=Dys-X?a`ca|CtY7l)Oyb`f zUDgkszv?`cqP*;lN~P+r85COMXr-eoqIJvYM#q&Yz)k#VSy76Zb}cY#p#Mp}^_n#! zzKjgNt1bKj?>f9B7G2xj#*nv_4ZUs)>mFv8JQr1SqBb_no6*2HiJLiWC%_6cJG2#439Bnp08j%+Q;HUhd-2|Q`^ZNB_%KmsbhIjr70J#E7%=#P_d*qLeVyBdovhS z(!nT4jT#|J)_=|G&~PfY2KfoHi&?v1CtjGs=uE&XTx2@DD1AF=AFGw zK=D2=kcGfLe_vGN3aJw(Dwech>JLmW2)z}b#4f0OfoWj96vo0GL4Y+{tRhjQbzYnI z&14og9X8IH-v|{ssMd$Mb6*pzQ-Ht_8ner9eRPDLxUuYT$w*|s#1R9G=IQ5}np{vv zq=`=zY5Mb`@3kX3juzE8*(q~q$#AT~BwTpd5u#dn0c3j6)n2?wEDq%A!i7#(VND-G z(rI#CRwcH^5?nTJ8uUIP1QrUst#GHRVc+vtj0bUP&JHeP^}eYM;)|)DE~1si@M+9Z zpOU3j_bfwie8h4OA$M#m*4% z4ZYx`ZsYXArNz-Ds)yQIP7Hd(4*q081(-~5N2kkamCk4VVn27C zmBp-xS(L_rm07OE^feW#klkAM-t(&krNT8QMeHYm5iO6!YWpyQm9So>f~2tsikDGX zQou-gDtHkOEm&USn!F^Q2pejNIqTv;8}ko|Bm5I=-@=I8iptJK)U5!{#@w~BL9GU= znfYloTd!-%t9dky`q^pYXv&Ccx7cqDNTIYgR1WCWi`p@@YAJ~-d%^@+>I;stucf*BglSny!;h8# zql6=zj4TYMHIT1cM?OIN_N+ta2hlT*aKUx?!ks_nI`#bVFde9=B`t=hxrB923}_Uu z`p{!}W7l4%fOlT+kWU7Z&N5GY|46~G>yqmN| z-R3^&v+A0CRzWI!Q^BE_8?T6TLYLSKlQ`gOjY)`W=V{o++csP-Aw>0!=-i%TxJ-}y zMkHmaB_#9dYz8@T%Gb)O0mCUElC0tNG)HVd3Dl zO7G1^s%88hVq9JW?T#=sY1j{WUK$>4kGYJOz5+-N{F$W9SFHrmF@KdhV*Spz=VXW4 z=3^arFxJX6v6xX-hz2<_Qqmrw%WT?};re6Nor5NR0?6-aILgK7BSkhJu!GaQaSUA2 z!jU#AO3zMV+57Y`=zoNN`F{R`OE~5z{K4idE<8CEK9J(?BxF=uO{oNBab<#vV9$iz zT2@RYY?0HRZ@omD&kQD*M$VE3rYUD5i42;gPqhV)Ui2!jJHs_G!J18?w&B;Jsow<| z1wPAtyJi*T*uM}L_@;$F6xMecl{kNeY*B9C)J(DFcf={mmw|bNAfa{0gl!bmc|GTY zl-$BNoF2tFb@=P^MSO8p(>6J7bRK`vm!0P`1l_NHRzq+JG0)W7g-Er1+rR9W(u&$O z&{hy1iR)2+9a0S*v>k)DeUdMWu|Fj|zGqnH6vDwo} z;YOUVR9|D6G1K;+P9FrTQ>e--#lg1AY`Uas9&G~c0{|W9+7rx`rJ`mHgEw&tHEVu( ziR_MUJVEO$q~!`1ihS(|Lio|&%t3_Oi>0sG`C0n4 zZ66`Z|Fx{NB|1#@yLXyEh~UGto>x|CQ=6T3^=X^66Y_91RJ$}d{ipqbllvV^gWna+ zCv234efPcVdGZ+x`zlq-&piOmge8}_W1 zY2>k+|1}Wh>Dflcr2S#`L*Ww6fiTgtoA>|Ls>*1#iMF^GJ}GASq%=j>D+FXFJQB(| z4%bUO{X*~zeeQi8L&nzN zyc)4|?z`~1%{0*EpE~eAeTIIdg6zXXHB526 z7`gFUa*fxPnzI9GF(Du{))y?8KQEl60!&2>a1bsWJ`AcI{{}LwA15R)B?W_nMY8j) z>u4Ac+AMq}$wNFzzEE1%nekCruB@DF)CroyOl4seX1W7@cQo!r5aG@@p6?1qwH+oK z0M6eict~y^-?hJE-vrCG+b$pnmD{T&Yt32qk-RO8*Tb;oa`e6O6ZE9`ZWx%euQkT{ zj@yX4Dcc^e^Z$1jg_Xd}y?ZxLDr>%XhKAyJEXxOH;y!*a?v5%d^xD&AMM*RjpT*;a zC$mwqG2i~TsqaX5&Z39vM>H!d+0{i~W!H3S)9yX>2GaL58C`D05ix?#V7_xj-jgYe zkJ%RQ15fwy`w{*iCWT_#$V|9N#`uJOH8U*az<)|@ROt_ImGu=7Ny9!?f}WQlqX(1z zN~A?2QM74q)XFY_hXFp3!pY%#t&|}_sAPukzY$Y#C2P2>Wza#kI!)EBK_KI%c1MLO zOHe1MEZLo=jY$>O5QJuXQ*A%@6V)zMk68n^wEOWop+QMW3z&xLF+KGVv&SLaEK-V>G44}h{c6ZtZTg$>p!E>)m>Qa9fvOMy%ln?F<%aEz00S&_dCLsVX10Z=t zR8&7@L)1e;kv8{Rsxq6M;UH8uPtVzWja+3>fh59rUkS=h@2lb1Me7tdZo}nxn_Je zlWmv`FgH|$+wips&lv$BOwtF&ZxR$DCrjDguqX(ST3V99TCL#bZIdHfD240Du#<}v zm*a=!|4^6;<5HCo;g?rb*HWKx7oAkRaz2I8MzZiN{Mq zDl##$6_}Hw0{a^CTKqUIS1n~CjxQFHdc*eJ#(~3^V*@-%$fvw1%%d}ttjhHz3trxD z=y@%?Uj4%9Y|9}fr{$H^XVO(sX}v=_g0+JE-OA^)gKqkrg$rXKVTXqGTAGKeKGHsN zxGKoWf5p-~j4O#jNZBSMODUhsj{8of$SKQlb^V?m@TVmwZ@$M4g1kr9FHKg z9w13B3-7H(%LYAUS+mirE2=bs6GIASM|D;?TP|aq$nSFs%L_F@Ry2T%Tp4y_(nC|9 zBjb}4lnbvUnxSir0cL7SmSdJYlYDbvN>4y_neY7)S%g|??LW@B+iL9f9Lt!UCqpD!ieqS)DkA`I`Z*fp6pE zi@)T}`NHWjSM1S1k0aDd1`C0|W2az6cJy^Ll677rOzeS@*%{hFrrN6?HGn^t^32!f zVc}bASH?|HyqBiaE#dI51^V2c)6lryP-!R{qOkDl@5@DchJ6Jw)Vnme$U&9~oxaiS zuoE2ZXscPldIPGNV#uimZSS((NC5%`sz@!iiH!b4NcP~ng6>$Be%Vr|8lKcs(;^M z7rCX*QC}XBRu*O@j1}!@@hUW?HN9^d?qpRU)`anoX`}EShN6xeLL825Lyf)HpNb79 zB5n?vxIV7+7#=C^O@LgEcQP9byZr-P&vdh)qv9JP(_wBMD88rlusWcC%HaadT%nb9;C`D z-=~0J(oQw>?xGN?G2i48G$=h62io+#g8vXN=VgbkgQTG}7+bMaPBSLcKOc3$JWc)msaUtW4aqVA(r@@-KJvmPG?O#!O80B?<89~_% zt-B1HmHsYoihz!Cyt~Zs%z1)6xW)B!--7lW^Zzvz01yaRVJIRTE)|}_4@d~Ctw4(A zl|9dp0ZFz}a$cy278}w&oOA3_{k=%xRaDz+)!Ow2(ldNt>uenl-@7lOXQWC0Y0##I|r|5YM|v3lFI~!pv`gf&PCC} zQxVS5LQ*YHBq4=XAGbz>w{NQw#sv`~FOZeV7qU6@`IX^Zc+|_ckX3(8C%BnbPV65I zU?Be${4=kh_*+XEt_W0>)?Z*{wra!4o;&9{ptYP{P2yTMoXJuLh(M6%zDO6>d7;rQ88Qm>zn28}dj0Rm7f zW;g8K?Gr99L1*RSayfAtK@$tqB!rMYl$MgHmcBV=O8VTke_(IBVol+H@gL2EVOCIh zX2wEqo^RH7J6^Io298Tp61@T>pD8&|x63=$G@~TdR-E?1~`;gvgKz z+1rKHwKcSI*n2!+sXM4p6-tKMOsw{&B{ar7(hF(1C2Ryu}85Y1Y zPy;ex+|a*ktLt$X{gwNDr?AX8+rQu6=O`U<>{PSDTjP)$WTsuK{(E%x4WrU2a zlk&mgaErd^P#3AIp{nN`aiYsn1Xs zql{;zXMA#Sbi*;4&SI0e-seN*{7kS#khRDlBrm3PKc=6cbshmMC%s|H*DT38q7H#c z_HSg>gyR+kDkeY=ln#|jrx@nL-9|tnMhWt#KUp#QNw9AFv5T2mS8U7A*f#dI=^ZS_ z-&69XWxHTaxII4J156gPP<+Hu)mKv7zKHm#fWM0e$I)D(`xW`4G98x2ONFsFuY@-` zv?x}cu$Cv@K8BB?tr(i>$uYFtNY#8^MvyV$f~B96tV0IXmc=j)3sxHKK-XvGK6pw; z$6uNZrko+k8sqJ!D^BNL)MCGS-XNPA_|HKv+fs6jokOI)Xgp&?z_nS}SDyAdnWmpE#btPa_k2w~ zyD(BjbA^xsg<|6`{G6f=iYgXvY<-CtoR*o#H&!*J1v3!Njn4Bkesl zGU0`ggqhJ2G=(&o{=7py1Fz#6Jal8-XvluM)O;d*Qeg<; zfN7{Qzv~$-h@l8Ajd>drMB^P+{t~-*^1*C}gVOkH1RO)L&9$fct)CqYT*H&5g_C8l zL9uH+$}CY6K$=o1(p%eY6vYJ4C^wP*H{nsVJpfQb^vU;T?q2QwZ6@jw6Iq2HV( zzwbCAS8DjHCy7NhLah>@ts@Gs?6B9W`Q|TiT z%;w^FOBEC$0CM|-wr}evy>4Y<+LV%vIV8NP77**#a#Ym391bd~*1p+X*lJszsdu11 zb818oS}lXpl6h;Kokob!x{@zljxz>f5e<-qbfc7IDa~j?g%R~=!iWuGtRnvJ@DAAYWJEtL-e*RDY<)LUcDy zcYGF*+OI-K6_hxyp7fMTr!mJvNd==;DUAuBEd5c49_DPBtmY0j&aghcZIN%VzWwoB zYF1c4W6^-CNVB+U|R1G%oEm*%tPlkod1x=Pk-=zxcc(py-EYnP^92>$LmjG6l$ zEsZ{ypMGHhDOZ;q>`-$dRN|-ND?w#29c)BGOFejxMvK{$&G+%@1c$1}!DGGR z=ICtg+rh%d^kU>YPuK7wgr{M;4B<-r+uIi&`I)lQHUdlky(u|3obXwS7J~z>L8Jcy3 zNcX0t%O=Um)z^%dn0t`x#rIr_E|T#_1tVZjXUE0+B6M<_ZJggSFZ^ozyFiyIAt%F5 zxzW*`e|D<^(2nc1PUFR9a3~0HKe%>l$79pWV`K(gry|NlqOgwzkCbWpMCmz6z*dw0 z(Ki(}lb*zcBqbzL?jcYLCOYr6+b5fkU&rBRI5O(_NBFqSCVj$Rfw_md9yODE3+eJH zbCw1!>V3t8i)ji>P4)&kUF{{SK`T_sXDd8HqSxy$nKf+>NRgdEI9aQ;9Pz?mFzhdg z{+jXsOC@ir`JuL$hUn7|Z$URG*H$wKLL9)9k6Pf`?3T`pkEneo>URXpOfEv;rB{e7 z)HX^Xz5$<1Nnn?eKd^~1K4kG(Qh7%mm^cMCFrW(sCI&rfl3n#^cBGoKEg{+d_Z$Qc zT#R?0?>GNOoeHwC>wgNUHFf+Jc#WHtIiSdI%qq*a8Yw=Vps({waRWa`S~$6qf?GgP zir+<0Rqp2kL*e&8M1_$&iIr|=mk7?>pN-+D+(@*rinvqR>>&@r-+35uJ05t}5;*S) z%HI_ANXB)PHME_zrq^Vv{SFENI2;>&Y^u+Z-rN+Lm=zCX@KgE3HMdyq~VTsS~h+m7;BUSq>joj3Ib8tyEaAG&m*1g!BnGYiM{O7AS6UHIdn9WHvJt zifJA#DJe�#~nVA;i7<>cq!nQWG#@GY3)n}rHP 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 z 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 X+tUu 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⪚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 z z{sq8ycNwDfYVYbr*`IcQpoGyBS!MTd@^Ez7LsB`ZPjIpXo|GgDzt-CvUZ_Y^CB>iygf3Vd zn@;CpbY?~u@8EaCI-6}tOtOmO>Hbne1v1vDS&}y%)LforED1@IMu(*K{A5#ck zZ?1A0WqVL;sIKXw6m2X<2$wNy5ez=$jXqC@}M-dr@*<*+e?(s zJ012~HVYbis}dLeS!N+;-WT{-_=4+apPt@eXJV0HGH?L7)a#WG2~y0If?nT?F?<=P zZ``I0nq81r#UO*AmEJv+KR*zUmjy60Wfc|uN#q}7QRTk`uR zEry?#L&SaRuo2^~n?1BS+r8xyM*XkI5oz>EAxZ`=V#Vl*dF#nnNLvGk{mR z#&kODw6iKK+OBV2R$)xTV<;Fc6dbNbXRgN{9BjRCBPv@NqZ|Fz;CL;jEyKS%<+G9M zgOw?W1xWwFye8rmt1W1H7Q{3Jth;V!o4g!p0$5oN@$3icFCx-TiD%J7e*bn()E9#) z&F$nv!-XZ_fV{VNtpym?4ab-C>;6%)q*wD9!4a3f>YA){tp~4|@UniG-MovDQ6r`WpUH44 zj@t8ffh6KTTM_Sp0W6zQSllb^|EnH3J|#4+);`R9b5g1JYiCh+_=AAv` z$mf#W=pT);DalELJy^1=gCL(AQ9=RpJcQU^uZnN;ZH-@nXb=H0d|NyF!L2mJt?9Jo zgw62;=KONrlVhG25p+9TxztQ)x2c6`(|d}+UrITGg^JP7W<*79i_>AmcLS4m@F~Lk zh1Y3|JkZ1DuwE5f-JuP^zG`wn1YeU2m>p!V!nb^0r$SUT9?zcCePhlw&58AoXO#`mWTx!ua!XlSOs2fvD8+QX6$~NG#~rj8Xl|b zP8PQ%@HYg~5c4NFiu%kqX)Jm!a>D*K5J7nKqXGvfPv0-X7G%Np_cnU|G6&fx+=UOf z$e^b0WCCQV4znpbTbO$@3!+N)r+4L;pZPxXX_}EV_{UfWH~MRPCKh&QnljK@u?$hY zM-V0QXt38PapSb0ipuKrbA3cM$CMiEk4$Sdo$fNUKp9qmjI2kvwM!F{r3bB_rOvez zc|T2V{hEYBz)LM9XC@Mbo zBIx=L;NYkbReW*(av=oVA2n8|*sH)(on=KRBD1Y$*5s+N>WWidx^b0#Z-Vc^a&Caj(k^ z5u(qxF|6Rp91!h17!KY#Ijsi7{$AG4kpTGwX1(Q!UoN|%5E+*w7j(gtd5`yGi0T5a zv+lkB1W&a5UBO|Wci}-(33PJJgBsC}JtpeL2)D||aG z!Rld>5#DP~OTiHt!uHE4*9gZj{FGG9Mcrv?R zu1G!J-E#9CzPZ`GEmc@_XgnDS*YbR?)ITG!0oM-a`ZW=BKr!Eon+`8WcpJ>)isqD! z3A>^oNl-A|jLhWqoxp^k>WcG%634nK4s-Hgzvbw?#K?(dHkxFmtxd&E?XRFBRPPkT z;zAv6^>)Et@TJ`s#Kt|Zf=sM;=qKpl2|sOo%x91@%ziLPv65JLf%jvC_3b%dU}S%n zN&>n8Q625B-x>orcoqDiS!WolJMj(nBvC0m$5(~4zh=~b#28Zecey?9ghuEPq^)h; z%bppu1#UZ&N64a#?CFAfR^*`Him4yt7}^#E4n_nrV1*scW?RY@6`x1>drr?whv2ks zZpC~e5dq+!V~d7xAvNX1SL~w^&T2}7 z88z2Nmi=Ww2^lpyukL^p3g)r7e5HX(=gJbRJ*m*L*RlHhMMiS3xCc4E$Zr{vsJ3~b zxc}^WfCN)akho&8e|27_+Ek1jiss#B3Z0lj*!DTckHhH2iC!sc$5fSfetkTOUlSLu zDPs$!mG!K0*cnaZG#7;H!wgX0D_zv{3QMBRE%TpXPTMInSXz}suFExt-(<6|MJI-9 zF_mo$N#V=l|D!(u3y+h19A7>O8F?!c21{**X4kJbxZ9Qv?y_<}6%sAN@=4wmPwkqH z57CXMn2zIDBfa;&lvKsDt^S(XCn>{(YXwGB6=F>XTMMH6SiO^^RHx-J42c?i8(i6D z;`T~(TOwPKl7?)gmWT)MpZ5Z!1>?X?VzMe?#Ds1VS{{bKo@P(ipO-A770+YGXgci< z!sO)b&`s^0(?C5|$T?sRQTpLV&i3}W^4F>Eu~!}a_YZxl3y$avA*E)E@ye{#boYha z?kFOFY$us)`p@3!udcEn)1?Yk9bxJpXDUx|PmP4(%e;m-ql6J5Nm?WJgCA)EgpI!u z8S6SS-eND&+?U?Y`h#Vna&n`94*7fk-vyZlf_f;KnTz7|zXIkzkDq`JM?)spK+Qw` xZ)*U7o*V~|y`x&?tZDuY2P%aBk1v8f!})Kh7rBk0N4)?(@1)*KR)`z<{U3w_p&|eP literal 0 HcmV?d00001 diff --git a/doc/images/BLEA-DeployECS-05-Multi.png b/doc/images/BLEA-DeployECS-05-Multi.png new file mode 100644 index 0000000000000000000000000000000000000000..1446b26062e5b1dcf5666eba12605bca83a3eef7 GIT binary patch literal 50237 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

S$_iy9 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 W(sP7Ch0$QZpNxcpc(tfe;Qs;S%b;Wc literal 0 HcmV?d00001 diff --git a/tools/cicd/README.md b/tools/cicd/README.md deleted file mode 100644 index 9ee1c3e5e..000000000 --- a/tools/cicd/README.md +++ /dev/null @@ -1,132 +0,0 @@ -# Deployment pipeline for Baseline Envirionment on AWS with GitHub - -[View this page in Japanese (日本語)](README_ja.md) | [Back to Repository README](../../README.md) - -This CDK application deploys Simple CodePipeline project to deploy resouces defined in BLEA to the same AWS account. - -# Overview - -## 1. Deploy to Development environment (from your local computer) - -![BLEA-Deploy-Dev](../../doc/images/BLEA-Deploy-Dev.png) - -## 2. Setup pipeline to Production environment (from your local computer) - -![BLEA-Deploy-Pipeline](../../doc/images/BLEA-Deploy-Pipeline.png) - -## 3. Commit BLEA and deploy to Production environment (from GitHub) - -![BLEA-Deploy-Prod](../../doc/images/BLEA-Deploy-Prod.png) - -# Deployment - -## Prerequisities - -- You have bootstrapped CDK on the account -- You have configured AWS CLI environment (credentials) to access target account as Administrator. -- You have forked BLEA repository to your GitHub account. - -## 1. Connect to GitHub using OAuth - -1. Login to target account's AWS Console -2. Open `CodePipeline` Service -3. Click `Settings`=>`Connections` on the bottle of left navigation pane. Then click `Create connection` - ![BLEA-Deploy-1-Console](../../doc/images/BLEA-Deploy-1-Console.png) -4. Select `GitHub` and input `Connection name`. Click `Connect to GitHub`. - ![BLEA-Deploy-2-ChooseGitHub](../../doc/images/BLEA-Deploy-2-ChooseGitHub.png) -5. Click `Install a new app` to setup "AWS Connector for GitHub" app - ![BLEA-Deploy-3-CreateConnection](../../doc/images/BLEA-Deploy-3-CreateConnection.png) -6. On `Install AWS Connector for GitHub`, Choose your repository and Click `Install`. Then you return to AWS Console. - ![BLEA-Deploy-4-InstallApp](../../doc/images/BLEA-Deploy-4-InstallApp.png) -7. On `Connect to GitHub` page, Click `Connect` - ![BLEA-Deploy-5-Connect](../../doc/images/BLEA-Deploy-5-Connect.png) -8. Now you can see Arn for connection, like "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx". Copy it for later use. - ![BLEA-Deploy-6-Finished](../../doc/images/BLEA-Deploy-6-Finished.png) - -## 2. Setup your CodePipeline project configuration - -Update tools/cicd/cdk.json so CodePipeline can access your BLEA repository and specify a target branch. - -``` - "prodpipeline": { - "env": { - "account": "222222222222", - "region": "ap-northeast-1" - }, - "envName": "Production", - "githubRepositoryOwner": "ownername", - "githubRepositoryName": "repositoryname", - "githubTargetBranch": "main" - "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - }, -``` - -- `prodpipeline`: Environment name to specify on CDK command line. In this sample, it should be `-c environment=prodpipeline` -- env: Target account and region you want to deploy pipeline and resources. This account should be the same as "environment" defined on "cdk deploy" command in buildspec.yaml. -- envName: Environment name discription. -- githubRepositoryOwner: GitHub repository owner name. If your reopsitory URL is 'https://github.com/ownername/repositoryname.git', you can specify `ownername`. -- githubRepositoryName: GitHub repository name. `repositoryname` on the sample above. -- githubTargetBranch: Target branch (When merged to this branch, CodePipeline will triggerd). -- codestarConnectionArn: Connection Arn copied from the previous section. - -## 3. Deploy CodePipeline project - -``` -cd tools/cicd/ -npm ci -npx cdk bootstrap -c environment=prodpipeline --profile your_profile_name # If you haven't bootstrapped target account -npx cdk deploy -c environment=prodpipeline --profile your_profile_name -``` - -## 4. Update buildspec.yaml - -You need to specify CDK deploy command on buildspec.yaml. -This is example, when you want to deploy `BLEA-MonitorAlarm` stack with `prod` environment variables on cdk.json. This is not in this directory but in root directory of Baseline Environment on AWS. your buildspec.yaml will be like this. - -``` -version: 0.2 - -phases: - install: - commands: - # requires npm >=8.1.0 - - npm i -g npm - pre_build: - commands: - - npm ci - build: - commands: - - npm audit - - npm run lint - - npm run build --workspace usecases/guest-webapp-sample - - npm run test --workspace usecases/guest-webapp-sample - # You can specify CDK deployment commands. - # Usually, you may want to deploy all of resources in the app. - # If you want to do so, please specify `"*"` - - cd usecases/guest-webapp-sample - - npx cdk deploy BLEA-MonitorAlarm -c environment=dev --require-approval never -``` - -> Notes: You can add another commands to build stage for deploying another stacks. -> Notes: You don't need to specify --profile on commandline. Because we already add sufficient role (Administrator) to CodeBuild. - -## 5. Update BLEA codes, merge and deploy - -Now you set up buildspec.yaml, you can add changes to BLEA codes. -When you finished updating codes, you will commit and merge updates into target branch. Don't forget to add buildspec.yaml too. - -When you push the changes into GitHub, CodePipeline project will be triggerd automatically then deploy resources you defined in BLEA CDK codes. - -# Appendix - How to deploy container image from GitHub - -## 1. Push container image to ECR on Development environment and Deploy with CDK. - -![BLEA-DeployECS-Dev](../../doc/images/BLEA-DeployECS-Dev.png) - -## 2. Commit dockerfile and build image with GitHub Actions then push it to ECR on Prod. - -![BLEA-DeployECS-Build](../../doc/images/BLEA-DeployECS-Build.png) - -## 3. Commit updated BLEA code to GitHub and ECS pull new container image from ECR. - -![BLEA-DeployECS-Prod](../../doc/images/BLEA-DeployECS-Prod.png) diff --git a/tools/cicd/README_ja.md b/tools/cicd/README_ja.md deleted file mode 100644 index d37a2c723..000000000 --- a/tools/cicd/README_ja.md +++ /dev/null @@ -1,144 +0,0 @@ -# Baseline Envirionment on AWS デプロイパイプライン (GitHub 版) - -[In English](README.md) | [リポジトリの README に戻る](../../README_ja.md) - -tools/cicd ディレクトリにある CDK アプリケーションは GitHub に置かれた Baseline Environment on AWS (BLEA) アプリケーションをデプロイするための、CodePipeline パイプラインをデプロイします。 - -# デプロイの概要 - -## 1. BLEA を直接開発環境にデプロイする (手元の PC から) - -![BLEA-Deploy-Dev](../../doc/images/BLEA-Deploy-Dev.png) - -## 2. 本番環境にデプロイするパイプラインを このアプリケーションでセットアップする (手元の PC から) - -![BLEA-Deploy-Pipeline](../../doc/images/BLEA-Deploy-Pipeline.png) - -## 3. BLEA コードを GitHub に commit して本番環境へデプロイする - -![BLEA-Deploy-Prod](../../doc/images/BLEA-Deploy-Prod.png) - -# デプロイメント - -## 前提条件 - -- 対象アカウントおよびリージョンで CDK をブートストラップ済みであること -- 対象アカウントに Administrator 権限でアクセスする認証情報を AWS CLI プロファイルとして設定済みであること -- BLEA リポジトリを自身の GitHub アカウントに fork していること(これを元に開発を行なっていることを想定) - -## 1. OAuth で GitHub に接続する - -1. ターゲットアカウントの AWS マネジメントコンソールにログインします -2. `CodePipeline` サービスを開きます -3. ナビゲーションペインの左下にある `Settings`=>`Connections` をクリックし、`Create connection` をクリックします - ![BLEA-Deploy-1-Console](../../doc/images/BLEA-Deploy-1-Console.png) -4. `GitHub` を選択して、`Connection name` を指定し、 `Connect to GitHub`をクリックします - ![BLEA-Deploy-2-ChooseGitHub](../../doc/images/BLEA-Deploy-2-ChooseGitHub.png) -5. "AWS Connector for GitHub"をインストールするため、`Install a new app` をクリックします - ![BLEA-Deploy-3-CreateConnection](../../doc/images/BLEA-Deploy-3-CreateConnection.png) -6. `Install AWS Connector for GitHub`の画面で、自身のリポジトリを選択し、`Install`をクリックします。この後画面がマネジメントコンソールに戻ります - ![BLEA-Deploy-4-InstallApp](../../doc/images/BLEA-Deploy-4-InstallApp.png) -7. `Connect to GitHub` のページで、 `Connect`をクリックします - ![BLEA-Deploy-5-Connect](../../doc/images/BLEA-Deploy-5-Connect.png) -8. 以上で Connection の ARN が画面に表示されます。形式は次のとおりです。 "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" 後に使用するため、これをコピーします - ![BLEA-Deploy-6-Finished](../../doc/images/BLEA-Deploy-6-Finished.png) - -## 2. CodePipeline プロジェクトを設定する - -CodePipeline が自身の BLEA リポジトリの対象ブランチにアクセスできるようにするため、このディレクトリにある cdk.json ファイル(tools/cicd/cdk.json) を編集する。 - -``` - "prodpipeline": { - "env": { - "account": "222222222222", - "region": "ap-northeast-1" - }, - "envName": "Production", - "githubRepositoryOwner": "ownername", - "githubRepositoryName": "repositoryname", - "githubTargetBranch": "main" - "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - }, -``` - -- `prodpipeline`: このあと CDK コマンドラインで指定する環境名。このサンプルの場合は `-c environment=prodpipeline` のように指定することになる -- `env`: パイプラインと BLEA リソースのデプロイターゲットとなるアカウントとリージョン -- `envName`: 環境名の解説。デプロイ対象のリソースタグに付与される -- `githubRepositoryOwner`: GitHub リポジトリオーナーの名前。自身のリポジトリ URL が 'https://github.com/ownername/repositoryname.git' である場合、`ownername` を指定する -- `githubRepositoryName`: GitHub リポジトリ名。上記 URL の例では `repositoryname` を指定する -- `githubTargetBranch`: ターゲットブランチ(このブランチにマージするとパイプラインが起動する) -- `codestarConnectionArn`: 先のセクションで取得した GitHub Connection の ARN - -## 3. CodePipeline project のデプロイ - -``` -cd tools/cicd/ -npm ci -npx cdk bootstrap -c environment=prodpipeline --profile your_profile_name # If you haven't bootstrapped target account -npx cdk deploy -c environment=prodpipeline --profile your_profile_name -``` - -## 4. buildspec.yaml のアップデート - -buildspec.yaml で CDK のデプロイコマンドを指定します。 -例えば、cdk.json で定義した `prod` 環境へ、スタック`BLEA-MonitorAlarm`をデプロイしたい場合の例を示します。 -buildspec.yaml はこのディレクトリではなく、BLEA ソースコードのルートディレクトリにあります。 - -``` -version: 0.2 - -phases: - install: - commands: - # requires npm >=8.1.0 - - npm i -g npm - pre_build: - commands: - - npm ci - build: - commands: - - npm audit - - npm run lint - - npm run build --workspace usecases/guest-webapp-sample - - npm run test --workspace usecases/guest-webapp-sample - # You can specify CDK deployment commands. - # Usually, you may want to deploy all of resources in the app. - # If you want to do so, please specify `"*"` - - cd usecases/guest-webapp-sample - - npx cdk deploy BLEA-MonitorAlarm -c environment=dev --require-approval never -``` - -> Notes: 他のスタックをデプロイしたい場合は build フェーズに他のコマンドを追加することができます。 - -> Notes: コマンドラインで --profile を指定する必要はありません。CodeBuild は適切な権限(ターゲットアカウントの Administrator 権限)を保持しているためです。 - -## 5. BLEA のコードをアップデートおよびマージすることで、デプロイを実行する - -buildspec.yaml をセットアップしたら、BLEA のコードを変更してデプロイすることが可能になります。 -BLEA のコードを変更して、commit し、対象ブランチへのマージを実行します。buildspec.yaml も忘れずに commit してください。 - -GitHub に変更が push されたら、CodePipeline プロジェクトが起動され、その中で CodeBuild が実行されます。CodeBuild はご自身の GitHub リポジトリから BLEA ソースコードを取得し、ターゲットアカウントへリソースをデプロイします。 - -以上で BLEA のコードがパイプラインを通じてデプロイされました。 - -# Appendix - コンテナイメージのデプロイの流れ - -ECS サンプルアプリケーションでは GitHub に push された Dockerfile を元に、GitHub Actions でコンテナイメージをビルドし、ECR に Push されることを想定しています。ここではコンテナイメージの一連のデプロイの流れを概説します。 - -## 1. 開発環境へのデプロイ - -開発環境の ECR へコンテナイメージを push します。デプロイは CDK で実施します。 - -![BLEA-DeployECS-Dev](../../doc/images/BLEA-DeployECS-Dev.png) - -## 2. 本番環境へのコンテナイメージ Push - -GitHub に Dockerfile を push します。GitHub Actions でビルドを実行し、本番環境の ECR へイメージを push します。 - -![BLEA-DeployECS-Build](../../doc/images/BLEA-DeployECS-Build.png) - -## 3. 本番環境の ECS へのデプロイ - -BLEA コードをアップデート(最新のコンテナイメージを指すように変更する)して GitHub へ push します。ECS は ECR から最新のイメージを取得します。 - -![BLEA-DeployECS-Prod](../../doc/images/BLEA-DeployECS-Prod.png) diff --git a/tools/cicd/bin/bleadeploy.ts b/tools/cicd/bin/bleadeploy.ts deleted file mode 100644 index 380df8517..000000000 --- a/tools/cicd/bin/bleadeploy.ts +++ /dev/null @@ -1,33 +0,0 @@ -import 'source-map-support/register'; -import * as cdk from 'aws-cdk-lib'; -import { BLEAdeployStack } from '../lib/bleadeploy-stack'; - -const pjPrefix = 'BLEA-DEPLOY'; - -const app = new cdk.App(); - -// ----------------------- Load context variables ------------------------------ -// (This is same as BLEA implementation) -// This context need to be specified in args -const argContext = 'environment'; - -// Environment Key (dev,stage,prod...) -// Should be defined in 2nd level of "context" tree in cdk.json -const envKey = app.node.tryGetContext(argContext); -if (envKey == undefined) - throw new Error(`Please specify envieonment with context option. ex) cdk deploy -c ${argContext}=dev`); - -// Array of envrionment variables. These values hould be defined in cdk.json or cdk.context.json -const envVals = app.node.tryGetContext(envKey); -if (envVals == undefined) throw new Error('Invalid environment.'); - -const procEnv = envVals['env']; // contains "account" and "region" - -// ----------------------- Deploy CI/CD Stack ------------------------------ -new BLEAdeployStack(app, `${pjPrefix}-Stack`, { - githubRepositoryOwner: envVals['githubRepositoryOwner'], - githubRepositoryName: envVals['githubRepositoryName'], - githubTargetBranch: envVals['githubTargetBranch'], - codestarConnectionArn: envVals['codestarConnectionArn'], - env: procEnv, -}); diff --git a/tools/cicd/cdk.json b/tools/cicd/cdk.json deleted file mode 100644 index 14184295e..000000000 --- a/tools/cicd/cdk.json +++ /dev/null @@ -1,37 +0,0 @@ -{ - "app": "npx ts-node --prefer-ts-exts bin/bleadeploy.ts", - "context": { - "dev": { - "description": "Context samples for Dev - Anonymous account & region", - "envName": "Development", - "githubRepositoryOwner": "ownername", - "githubRepositoryName": "repositoryname", - "githubTargetBranch": "staging", - "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - }, - "stage": { - "description": "Context samples for Staging - Specific account & region ", - "env": { - "account": "111111111111", - "region": "ap-northeast-1" - }, - "envName": "Staging", - "githubRepositoryOwner": "ownername", - "githubRepositoryName": "repositoryname", - "githubTargetBranch": "staging", - "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - }, - "prod": { - "description": "Context samples for Production - Specific account & region ", - "env": { - "account": "222222222222", - "region": "ap-northeast-1" - }, - "envName": "Production", - "githubRepositoryOwner": "ownername", - "githubRepositoryName": "repositoryname", - "githubTargetBranch": "main", - "codestarConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" - } - } -} diff --git a/tools/cicd/jest.config.js b/tools/cicd/jest.config.js deleted file mode 100644 index 98bd8c9e5..000000000 --- a/tools/cicd/jest.config.js +++ /dev/null @@ -1,7 +0,0 @@ -module.exports = { - roots: ['/test'], - testMatch: ['**/*.test.ts'], - transform: { - '^.+\\.tsx?$': 'ts-jest', - }, -}; diff --git a/tools/cicd/lib/bleadeploy-stack.ts b/tools/cicd/lib/bleadeploy-stack.ts deleted file mode 100644 index c72de2285..000000000 --- a/tools/cicd/lib/bleadeploy-stack.ts +++ /dev/null @@ -1,73 +0,0 @@ -import * as cdk from 'aws-cdk-lib'; -import { Construct } from 'constructs'; -import { aws_iam as iam } from 'aws-cdk-lib'; -import { aws_codebuild as codebuild } from 'aws-cdk-lib'; -import { aws_codepipeline as codepipeline } from 'aws-cdk-lib'; -import { aws_codepipeline_actions as codepipeline_actions } from 'aws-cdk-lib'; - -export interface BLEAdeployStackProps extends cdk.StackProps { - githubRepositoryOwner: string; - githubRepositoryName: string; - githubTargetBranch: string; - codestarConnectionArn: string; -} - -export class BLEAdeployStack extends cdk.Stack { - constructor(scope: Construct, id: string, props: BLEAdeployStackProps) { - super(scope, id, props); - - const pipeline = new codepipeline.Pipeline(this, `${id}-Pipeline`, { - pipelineName: `${id}-Pipeline`, - }); - - // You just have to select GitHub as the source when creating the connection in the console - const sourceOutput = new codepipeline.Artifact(); - const sourceAction = new codepipeline_actions.CodeStarConnectionsSourceAction({ - actionName: `${id}-GitHubSource`, - owner: props.githubRepositoryOwner, - repo: props.githubRepositoryName, - branch: props.githubTargetBranch, - connectionArn: props.codestarConnectionArn, - output: sourceOutput, - }); - - const deployRole = new iam.Role(this, `${id}-CodeBuildDeployRole`, { - assumedBy: new iam.ServicePrincipal('codebuild.amazonaws.com'), - managedPolicies: [ - { - managedPolicyArn: 'arn:aws:iam::aws:policy/AdministratorAccess', - }, - ], - }); - - const applicationBuild = new codebuild.PipelineProject(this, `${id}-CodeBuildProject`, { - projectName: `${id}-CodeBuildProject`, - role: deployRole, - environment: { - buildImage: codebuild.LinuxBuildImage.AMAZON_LINUX_2_3, - environmentVariables: { - AWS_DEFAULT_REGION: { - type: codebuild.BuildEnvironmentVariableType.PLAINTEXT, - value: this.region, - }, - }, - }, - }); - - const buildAction = new codepipeline_actions.CodeBuildAction({ - actionName: `${id}-BuildAction`, - project: applicationBuild, - input: sourceOutput, - runOrder: 3, - }); - - pipeline.addStage({ - stageName: 'Source', - actions: [sourceAction], - }); - pipeline.addStage({ - stageName: 'Build', - actions: [buildAction], - }); - } -} diff --git a/tools/cicd/package.json b/tools/cicd/package.json deleted file mode 100644 index 83139c002..000000000 --- a/tools/cicd/package.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "private": true, - "name": "bleadeploy", - "version": "1.0.0", - "description": "Pipelines for BLEA", - "bin": { - "bleadeploy": "bin/bleadeploy.js" - }, - "license": "MIT-0", - "scripts": { - "synth:dev": "npx cdk synth -c environment=dev", - "depcheck": "npx depcheck --ignore-dirs cdk.out", - "build": "tsc --build", - "clean": "tsc --build --clean && rm -rf cdk.out", - "watch": "tsc -w", - "test": "jest", - "lint": "eslint --fix .", - "format": "prettier --write ." - }, - "devDependencies": { - "@types/jest": "^27.4.0", - "@types/node": "17.0.12", - "aws-cdk": "^2.8.0", - "jest": "^27.4.7", - "ts-jest": "^27.1.3", - "ts-node": "^10.4.0", - "typescript": "~4.5.5" - }, - "dependencies": { - "aws-cdk-lib": "^2.8.0", - "cdk": "^2.8.0", - "constructs": "^10.0.45", - "source-map-support": "^0.5.21" - } -} diff --git a/tools/cicd/test/__snapshots__/bleadeploy.test.ts.snap b/tools/cicd/test/__snapshots__/bleadeploy.test.ts.snap deleted file mode 100644 index 1c1a6bf1a..000000000 --- a/tools/cicd/test/__snapshots__/bleadeploy.test.ts.snap +++ /dev/null @@ -1,773 +0,0 @@ -// Jest Snapshot v1, https://goo.gl/fbAQLP - -exports[`BLEA Stacks BLEA Deploy Stack 1`] = ` -Object { - "Parameters": Object { - "BootstrapVersion": Object { - "Default": "/cdk-bootstrap/hnb659fds/version", - "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", - "Type": "AWS::SSM::Parameter::Value", - }, - }, - "Resources": Object { - "DeployStackCodeBuildDeployRoleAAA60B15": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "codebuild.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - "ManagedPolicyArns": Array [ - "arn:aws:iam::aws:policy/AdministratorAccess", - ], - }, - "Type": "AWS::IAM::Role", - }, - "DeployStackCodeBuildDeployRoleDefaultPolicyFA3548DF": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "logs:CreateLogGroup", - "logs:CreateLogStream", - "logs:PutLogEvents", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":logs:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":log-group:/aws/codebuild/", - Object { - "Ref": "DeployStackCodeBuildProject9086D16F", - }, - ], - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":logs:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":log-group:/aws/codebuild/", - Object { - "Ref": "DeployStackCodeBuildProject9086D16F", - }, - ":*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "codebuild:CreateReportGroup", - "codebuild:CreateReport", - "codebuild:UpdateReport", - "codebuild:BatchPutTestCases", - "codebuild:BatchPutCodeCoverages", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":codebuild:", - Object { - "Ref": "AWS::Region", - }, - ":", - Object { - "Ref": "AWS::AccountId", - }, - ":report-group/", - Object { - "Ref": "DeployStackCodeBuildProject9086D16F", - }, - "-*", - ], - ], - }, - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "DeployStackCodeBuildDeployRoleDefaultPolicyFA3548DF", - "Roles": Array [ - Object { - "Ref": "DeployStackCodeBuildDeployRoleAAA60B15", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "DeployStackCodeBuildProject9086D16F": Object { - "Properties": Object { - "Artifacts": Object { - "Type": "CODEPIPELINE", - }, - "Cache": Object { - "Type": "NO_CACHE", - }, - "EncryptionKey": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - "Environment": Object { - "ComputeType": "BUILD_GENERAL1_SMALL", - "EnvironmentVariables": Array [ - Object { - "Name": "AWS_DEFAULT_REGION", - "Type": "PLAINTEXT", - "Value": Object { - "Ref": "AWS::Region", - }, - }, - ], - "Image": "aws/codebuild/amazonlinux2-x86_64-standard:3.0", - "ImagePullCredentialsType": "CODEBUILD", - "PrivilegedMode": false, - "Type": "LINUX_CONTAINER", - }, - "Name": "DeployStack-CodeBuildProject", - "ServiceRole": Object { - "Fn::GetAtt": Array [ - "DeployStackCodeBuildDeployRoleAAA60B15", - "Arn", - ], - }, - "Source": Object { - "Type": "CODEPIPELINE", - }, - }, - "Type": "AWS::CodeBuild::Project", - }, - "DeployStackPipelineArtifactsBucket2FBBF0B9": Object { - "DeletionPolicy": "Retain", - "Properties": Object { - "BucketEncryption": Object { - "ServerSideEncryptionConfiguration": Array [ - Object { - "ServerSideEncryptionByDefault": Object { - "KMSMasterKeyID": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - "SSEAlgorithm": "aws:kms", - }, - }, - ], - }, - "PublicAccessBlockConfiguration": Object { - "BlockPublicAcls": true, - "BlockPublicPolicy": true, - "IgnorePublicAcls": true, - "RestrictPublicBuckets": true, - }, - }, - "Type": "AWS::S3::Bucket", - "UpdateReplacePolicy": "Retain", - }, - "DeployStackPipelineArtifactsBucketEncryptionKeyAlias11AD99EB": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "AliasName": "alias/codepipeline-deploystackdeploystackpipeline17211b4e", - "TargetKeyId": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - }, - "Type": "AWS::KMS::Alias", - "UpdateReplacePolicy": "Delete", - }, - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7": Object { - "DeletionPolicy": "Delete", - "Properties": Object { - "KeyPolicy": Object { - "Statement": Array [ - Object { - "Action": "kms:*", - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":iam::", - Object { - "Ref": "AWS::AccountId", - }, - ":root", - ], - ], - }, - }, - "Resource": "*", - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::KMS::Key", - "UpdateReplacePolicy": "Delete", - }, - "DeployStackPipelineArtifactsBucketPolicy9C58EA6A": Object { - "Properties": Object { - "Bucket": Object { - "Ref": "DeployStackPipelineArtifactsBucket2FBBF0B9", - }, - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "s3:*", - "Condition": Object { - "Bool": Object { - "aws:SecureTransport": "false", - }, - }, - "Effect": "Deny", - "Principal": Object { - "AWS": "*", - }, - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::S3::BucketPolicy", - }, - "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDB81A0F3": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":iam::", - Object { - "Ref": "AWS::AccountId", - }, - ":root", - ], - ], - }, - }, - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::IAM::Role", - }, - "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDefaultPolicy888F32DF": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "codebuild:BatchGetBuilds", - "codebuild:StartBuild", - "codebuild:StopBuild", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackCodeBuildProject9086D16F", - "Arn", - ], - }, - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDefaultPolicy888F32DF", - "Roles": Array [ - Object { - "Ref": "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDB81A0F3", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "DeployStackPipelineE72A6049": Object { - "DependsOn": Array [ - "DeployStackPipelineRoleDefaultPolicyFFF0FC4A", - "DeployStackPipelineRole9A958AB1", - ], - "Properties": Object { - "ArtifactStore": Object { - "EncryptionKey": Object { - "Id": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - "Type": "KMS", - }, - "Location": Object { - "Ref": "DeployStackPipelineArtifactsBucket2FBBF0B9", - }, - "Type": "S3", - }, - "Name": "DeployStack-Pipeline", - "RoleArn": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineRole9A958AB1", - "Arn", - ], - }, - "Stages": Array [ - Object { - "Actions": Array [ - Object { - "ActionTypeId": Object { - "Category": "Source", - "Owner": "AWS", - "Provider": "CodeStarSourceConnection", - "Version": "1", - }, - "Configuration": Object { - "BranchName": "staging", - "ConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - "FullRepositoryId": "ownername/repositoryname", - }, - "Name": "DeployStack-GitHubSource", - "OutputArtifacts": Array [ - Object { - "Name": "Artifact_Source_DeployStack-GitHubSource", - }, - ], - "RoleArn": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleF0A57F33", - "Arn", - ], - }, - "RunOrder": 1, - }, - ], - "Name": "Source", - }, - Object { - "Actions": Array [ - Object { - "ActionTypeId": Object { - "Category": "Build", - "Owner": "AWS", - "Provider": "CodeBuild", - "Version": "1", - }, - "Configuration": Object { - "ProjectName": Object { - "Ref": "DeployStackCodeBuildProject9086D16F", - }, - }, - "InputArtifacts": Array [ - Object { - "Name": "Artifact_Source_DeployStack-GitHubSource", - }, - ], - "Name": "DeployStack-BuildAction", - "RoleArn": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDB81A0F3", - "Arn", - ], - }, - "RunOrder": 3, - }, - ], - "Name": "Build", - }, - ], - }, - "Type": "AWS::CodePipeline::Pipeline", - }, - "DeployStackPipelineRole9A958AB1": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "Service": "codepipeline.amazonaws.com", - }, - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::IAM::Role", - }, - "DeployStackPipelineRoleDefaultPolicyFFF0FC4A": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - "s3:DeleteObject*", - "s3:PutObject", - "s3:Abort*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - }, - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleF0A57F33", - "Arn", - ], - }, - }, - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineBuildDeployStackBuildActionCodePipelineActionRoleDB81A0F3", - "Arn", - ], - }, - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "DeployStackPipelineRoleDefaultPolicyFFF0FC4A", - "Roles": Array [ - Object { - "Ref": "DeployStackPipelineRole9A958AB1", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleDefaultPolicyACEE3BD8": Object { - "Properties": Object { - "PolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "codestar-connections:UseConnection", - "Effect": "Allow", - "Resource": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", - }, - Object { - "Action": Array [ - "s3:GetObject*", - "s3:GetBucket*", - "s3:List*", - "s3:DeleteObject*", - "s3:PutObject", - "s3:Abort*", - ], - "Effect": "Allow", - "Resource": Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - "/*", - ], - ], - }, - ], - }, - Object { - "Action": Array [ - "kms:Decrypt", - "kms:DescribeKey", - "kms:Encrypt", - "kms:ReEncrypt*", - "kms:GenerateDataKey*", - ], - "Effect": "Allow", - "Resource": Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucketEncryptionKeyD623D0F7", - "Arn", - ], - }, - }, - Object { - "Action": "s3:PutObjectAcl", - "Effect": "Allow", - "Resource": Object { - "Fn::Join": Array [ - "", - Array [ - Object { - "Fn::GetAtt": Array [ - "DeployStackPipelineArtifactsBucket2FBBF0B9", - "Arn", - ], - }, - "/*", - ], - ], - }, - }, - ], - "Version": "2012-10-17", - }, - "PolicyName": "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleDefaultPolicyACEE3BD8", - "Roles": Array [ - Object { - "Ref": "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleF0A57F33", - }, - ], - }, - "Type": "AWS::IAM::Policy", - }, - "DeployStackPipelineSourceDeployStackGitHubSourceCodePipelineActionRoleF0A57F33": Object { - "Properties": Object { - "AssumeRolePolicyDocument": Object { - "Statement": Array [ - Object { - "Action": "sts:AssumeRole", - "Effect": "Allow", - "Principal": Object { - "AWS": Object { - "Fn::Join": Array [ - "", - Array [ - "arn:", - Object { - "Ref": "AWS::Partition", - }, - ":iam::", - Object { - "Ref": "AWS::AccountId", - }, - ":root", - ], - ], - }, - }, - }, - ], - "Version": "2012-10-17", - }, - }, - "Type": "AWS::IAM::Role", - }, - }, - "Rules": Object { - "CheckBootstrapVersion": Object { - "Assertions": Array [ - Object { - "Assert": Object { - "Fn::Not": Array [ - Object { - "Fn::Contains": Array [ - Array [ - "1", - "2", - "3", - "4", - "5", - ], - Object { - "Ref": "BootstrapVersion", - }, - ], - }, - ], - }, - "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", - }, - ], - }, - }, -} -`; diff --git a/tools/cicd/test/bleadeploy.test.ts b/tools/cicd/test/bleadeploy.test.ts deleted file mode 100644 index 90c4c8dcf..000000000 --- a/tools/cicd/test/bleadeploy.test.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { Template } from 'aws-cdk-lib/assertions'; -import * as cdk from 'aws-cdk-lib'; -import * as BLEAdeploy from '../lib/bleadeploy-stack'; - -// Load cdk.json to get context parameters -import * as cdk_json from '../cdk.json'; - -const procEnv = { - account: process.env.CDK_DEFAULT_ACCOUNT, - region: process.env.CDK_DEFAULT_REGION, -}; - -const pjPrefix = 'BLEA'; -const app = new cdk.App(); -const envKey = 'dev'; -const envVals = cdk_json['context'][envKey]; - -describe(`${pjPrefix} Stacks`, () => { - test('BLEA Deploy Stack', () => { - const deployStack = new BLEAdeploy.BLEAdeployStack(app, 'DeployStack', { - githubRepositoryOwner: envVals['githubRepositoryOwner'], - githubRepositoryName: envVals['githubRepositoryName'], - githubTargetBranch: envVals['githubTargetBranch'], - codestarConnectionArn: envVals['codestarConnectionArn'], - env: procEnv, - }); - - // test with snapshot - expect(Template.fromStack(deployStack)).toMatchSnapshot(); - }); -}); diff --git a/tools/cicd/tsconfig.json b/tools/cicd/tsconfig.json deleted file mode 100644 index 6b477d407..000000000 --- a/tools/cicd/tsconfig.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "../../tsconfig.base.json", - "compilerOptions": { - "baseUrl": "./" - }, - "include": ["bin/**/*.ts", "lib/**/*.ts", "test/**/*.ts"] -} diff --git a/usecases/guest-webapp-sample/README.md b/usecases/guest-webapp-sample/README.md index 076df2abc..cdf756d16 100644 --- a/usecases/guest-webapp-sample/README.md +++ b/usecases/guest-webapp-sample/README.md @@ -6,6 +6,9 @@ - bin/blea-guest-ecsapp-sample.ts - ECS/Fargate + AuroraPostgreSQL +- bin/blea-guest-ecsapp-sample-pipeline.ts + - CI/CD of this system by CDK Pipelines. + - [How to deploy](../../doc/PipelineDeployment.md) ## Sample Web application (ECS+SSL) diff --git a/usecases/guest-webapp-sample/README_ja.md b/usecases/guest-webapp-sample/README_ja.md index 3cb39e5ca..a0edcc5d3 100644 --- a/usecases/guest-webapp-sample/README_ja.md +++ b/usecases/guest-webapp-sample/README_ja.md @@ -6,6 +6,9 @@ - bin/blea-guest-ecsapp-sample.ts - ECS/Fargate+AuroraPostgreSQL を使ったサンプルシステム +- bin/blea-guest-ecsapp-sample-pipeline.ts + - 上の構成に対して CDK Pipelines を用いた CI/CD を行うサンプルシステム。 + - 詳細は[こちら](../../doc/PipelineDeployment_ja.md) ## Web アプリケーションサンプル (ECS+SSL) diff --git a/usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts b/usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts new file mode 100644 index 000000000..cfdf35751 --- /dev/null +++ b/usecases/guest-webapp-sample/bin/blea-guest-ecsapp-sample-pipeline.ts @@ -0,0 +1,185 @@ +import * as cdk from 'aws-cdk-lib'; +import { BLEAVpcStack } from '../lib/blea-vpc-stack'; +import { BLEAKeyAppStack } from '../lib/blea-key-app-stack'; +import { BLEADbAuroraPgStack } from '../lib/blea-db-aurora-pg-stack'; +import { BLEAECSAppStack } from '../lib/blea-ecsapp-stack'; +import { BLEAMonitorAlarmStack } from '../lib/blea-monitor-alarm-stack'; +import { BLEAChatbotStack } from '../lib/blea-chatbot-stack'; +import { BLEABuildContainerStack } from '../lib/blea-build-container-stack'; +import { BLEAECRStack } from '../lib/blea-ecr-stack'; +import { BLEAWafStack } from '../lib/blea-waf-stack'; +import { BLEAFrontendSimpleStack } from '../lib/blea-frontend-simple-stack'; +import { BLEADashboardStack } from '../lib/blea-dashboard-stack'; +import { BLEACanaryStack } from '../lib/blea-canary-stack'; + +import { BLEAPipelineStack } from '../pipeline/blea-ecsapp-sample-pipeline-stack'; +import { Construct } from 'constructs'; + +const pjPrefix = 'BLEA'; + +const app = new cdk.App(); + +// ----------------------- Load context variables ------------------------------ +// This context need to be specified in args +const argContext = 'environment'; +const envKey = app.node.tryGetContext(argContext); +if (envKey == undefined) + throw new Error(`Please specify environment with context option. ex) cdk deploy -c ${argContext}=dev`); +const envVals = app.node.tryGetContext(envKey); +if (envVals == undefined) throw new Error('Invalid environment.'); + +// ----------------------- Environment variables for stack ------------------------------ +// Default enviroment +const procEnvDefault = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION, +}; + +// Define account id and region from context. +// If "env" isn't defined on the environment variable in context, use account and region specified by "--profile". +function getProcEnv() { + if (envVals['env'] && envVals['env']['account'] && envVals['env']['region']) { + return { account: envVals['env']['account'], region: envVals['env']['region'] }; + } else { + return procEnvDefault; + } +} + +// ----------------------- Pipeline Stage for Guest System Stacks ------------------------------ +export class BLEAPipelineStage extends cdk.Stage { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + // Slack Notifier + const workspaceId = envVals['slackNotifier']['workspaceId']; + const channelIdMon = envVals['slackNotifier']['channelIdMon']; + + // Topic for monitoring guest system + const monitorAlarm = new BLEAMonitorAlarmStack(this, `${pjPrefix}-MonitorAlarm`, { + notifyEmail: envVals['monitoringNotifyEmail'], + // getProcEnv should be called in pipeline layer and do not call this func in stage stack. + // This is because deployment environment is set in instanciating stage stack. + // env: getProcEnv(), + }); + + new BLEAChatbotStack(this, `${pjPrefix}-ChatbotMonitor`, { + topicArn: monitorAlarm.alarmTopic.topicArn, + workspaceId: workspaceId, + channelId: channelIdMon, + // env: getProcEnv(), + }); + + // CMK for Apps + const appKey = new BLEAKeyAppStack(this, `${pjPrefix}-AppKey`, { + // env: getProcEnv() + }); + + // Networking + const myVpcCidr = envVals['vpcCidr']; + const prodVpc = new BLEAVpcStack(this, `${pjPrefix}-Vpc`, { + myVpcCidr: myVpcCidr, + // env: getProcEnv(), + }); + + // WebACL for ALB + // Note: + // For CloudFront, you can create WebACL with these options. + // But currently this code doesn't work. As CDK don't provide cross-stack reference for corss environment. + // { scope: 'CLOUDFRONT', + // env: { + // account: getProcEnv().account, + // region: 'us-east-1', + // }} + const waf = new BLEAWafStack(this, `${pjPrefix}-Waf`, { + scope: 'REGIONAL', + // env: getProcEnv(), + }); + + // Simple CloudFront FrontEnd + const front = new BLEAFrontendSimpleStack(this, `${pjPrefix}-SimpleFrontStack`, { + myVpc: prodVpc.myVpc, + webAcl: waf.webAcl, + // env: getProcEnv(), + }); + + // Container Repository + const ecr = new BLEAECRStack(this, `${pjPrefix}-ECR`, { + // TODO: will get "repositoryName" from parameters + repositoryName: 'apprepo', + alarmTopic: monitorAlarm.alarmTopic, + // env: getProcEnv(), + }); + + // Build Container Image + const build_container = new BLEABuildContainerStack(this, `${pjPrefix}-ContainerImage`, { + ecrRepository: ecr.repository, + // env: getProcEnv(), + }); + + // Application Stack (LoadBalancer + Fargate) + const ecsApp = new BLEAECSAppStack(this, `${pjPrefix}-ECSApp`, { + myVpc: prodVpc.myVpc, + appKey: appKey.kmsKey, + repository: ecr.repository, + imageTag: build_container.imageTag, + alarmTopic: monitorAlarm.alarmTopic, + webFront: front, + // env: getProcEnv(), + }); + ecsApp.addDependency(build_container); + + // Aurora + const dbCluster = new BLEADbAuroraPgStack(this, `${pjPrefix}-DBAuroraPg`, { + myVpc: prodVpc.myVpc, + dbName: 'mydbname', + dbUser: envVals['dbUser'], + dbAllocatedStorage: 25, + vpcSubnets: prodVpc.myVpc.selectSubnets({ + subnetGroupName: 'Protected', + }), + appServerSecurityGroup: ecsApp.appServerSecurityGroup, + appKey: appKey.kmsKey, + alarmTopic: monitorAlarm.alarmTopic, + // env: getProcEnv(), + }); + + // Monitoring + const appCanary = new BLEACanaryStack(this, `${pjPrefix}-ECSAppCanary`, { + alarmTopic: monitorAlarm.alarmTopic, + appEndpoint: front.cfDistribution.domainName, + // env: getProcEnv(), + }); + + new BLEADashboardStack(this, `${pjPrefix}-ECSAppDashboard`, { + dashboardName: `${pjPrefix}-ECSApp`, + webFront: front, + ecsClusterName: ecsApp.ecsClusterName, + ecsServiceName: ecsApp.ecsServiceName, + appTargetGroupName: ecsApp.appTargetGroupName, + dbClusterName: dbCluster.dbClusterName, + albTgUnHealthyHostCountAlarm: ecsApp.albTgUnHealthyHostCountAlarm, + ecsScaleOnRequestCount: ecsApp.ecsScaleOnRequestCount, + ecsTargetUtilizationPercent: ecsApp.ecsTargetUtilizationPercent, + canaryDurationAlarm: appCanary.canaryDurationAlarm, + canaryFailedAlarm: appCanary.canaryFailedAlarm, + // env: getProcEnv(), + }); + } +} +// --------------------------------- Pipleine ------------------------------------- +new BLEAPipelineStack(app, `${pjPrefix}-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: getProcEnv(), + + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Pipeline-Deployment`, { + env: getProcEnv(), // you can change deploy account by changing this value. + }), +}); + +// --------------------------------- Tagging ------------------------------------- + +// Tagging "Environment" tag to all resources in this app +const envTagName = 'Environment'; +cdk.Tags.of(app).add(envTagName, envVals['envName']); diff --git a/usecases/guest-webapp-sample/cdk.json b/usecases/guest-webapp-sample/cdk.json index 0f84badd9..dc4b0b8cd 100644 --- a/usecases/guest-webapp-sample/cdk.json +++ b/usecases/guest-webapp-sample/cdk.json @@ -13,7 +13,10 @@ }, "domainName": "example.com", "hostedZoneId": "Z0123456789", - "hostName": "www" + "hostName": "www", + "repository": "aws-samples/baseline-environment-on-aws", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/example" }, "stage": { "description": "Context samples for Staging - Specific account & region ", @@ -31,7 +34,10 @@ }, "domainName": "example.com", "hostedZoneId": "Z0123456789", - "hostName": "www" + "hostName": "www", + "repository": "aws-samples/baseline-environment-on-aws", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/example" }, "prod": { "description": "Context samples for Production - Specific account & region ", @@ -49,7 +55,10 @@ }, "domainName": "example.com", "hostedZoneId": "Z0123456789", - "hostName": "www" + "hostName": "www", + "repository": "aws-samples/baseline-environment-on-aws", + "branch": "main", + "connectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/example" } } } diff --git a/usecases/guest-webapp-sample/package.json b/usecases/guest-webapp-sample/package.json index 8c6505710..016d5126f 100644 --- a/usecases/guest-webapp-sample/package.json +++ b/usecases/guest-webapp-sample/package.json @@ -9,6 +9,7 @@ }, "scripts": { "synth:dev": "npx cdk synth -c environment=dev && npx cdk synth --app \"npx ts-node --prefer-ts-exts bin/blea-guest-asgapp-sample.ts\" -c environment=dev && npx cdk synth --app \"npx ts-node --prefer-ts-exts bin/blea-guest-ec2app-sample.ts\" -c environment=dev && npx cdk synth --app \"npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-ssl-sample.ts\" -c environment=dev", + "synth_dev_context_test": "npx cdk synth -c", "depcheck": "npx depcheck --ignore-dirs cdk.out", "build": "tsc --build", "clean": "tsc --build --clean && rm -rf cdk.out", diff --git a/usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts b/usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts new file mode 100644 index 000000000..1a0b11902 --- /dev/null +++ b/usecases/guest-webapp-sample/pipeline/blea-ecsapp-sample-pipeline-stack.ts @@ -0,0 +1,60 @@ +import * as cdk from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import { aws_iam as iam } from 'aws-cdk-lib'; +import { pipelines } from 'aws-cdk-lib'; + +export interface BLEAPipelineStackProps extends cdk.StackProps { + repository: string; + branch: string; + connectionArn: string; + environment?: string; + deployStage: cdk.Stage; +} + +export class BLEAPipelineStack extends cdk.Stack { + constructor(scope: Construct, id: string, props: BLEAPipelineStackProps) { + super(scope, id, props); + let environment = 'dev'; + + if (props.environment) { + environment = props.environment; + } + + const deployRole = new iam.Role(this, `${id}-CodeBuildDeployRole`, { + assumedBy: new iam.ServicePrincipal('codebuild.amazonaws.com'), + managedPolicies: [ + { + managedPolicyArn: 'arn:aws:iam::aws:policy/AdministratorAccess', + }, + ], + }); + + // You just have to select GitHub as the source when creating the connection in the console + // basic pipeline declaration. This sets the initial structure of our pipeline + const pipeline = new pipelines.CodePipeline(this, `${id}-pipeline`, { + // crossAccountKeys: true, + synth: new pipelines.CodeBuildStep('SynthStep', { + input: pipelines.CodePipelineSource.connection(props.repository, props.branch, { + connectionArn: props.connectionArn, + }), + + installCommands: ['n stable', 'node -v', 'npm update npm'], + commands: [ + 'echo "node: $(node --version)" ', + 'echo "npm: $(npm --version)" ', + 'npm ci', + 'npm audit', + 'npm run lint', + 'cd usecases/guest-webapp-sample', + 'npm run build', + 'npm run test', + `npx cdk synth --app "npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts" -c environment=${environment}`, + `npx cdk ls -c environment=${environment}`, + ], + role: deployRole, + primaryOutputDirectory: './usecases/guest-webapp-sample/cdk.out', + }), + }); + pipeline.addStage(props.deployStage); + } +} diff --git a/usecases/guest-webapp-sample/test/__snapshots__/blea-guest-ecsapp-sample-pipeline.test.ts.snap b/usecases/guest-webapp-sample/test/__snapshots__/blea-guest-ecsapp-sample-pipeline.test.ts.snap new file mode 100644 index 000000000..bcb13a95c --- /dev/null +++ b/usecases/guest-webapp-sample/test/__snapshots__/blea-guest-ecsapp-sample-pipeline.test.ts.snap @@ -0,0 +1,3098 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`BLEA Stacks BLEA Deploy Stack 1`] = ` +Object { + "Parameters": Object { + "BootstrapVersion": Object { + "Default": "/cdk-bootstrap/hnb659fds/version", + "Description": "Version of the CDK Bootstrap resources in this environment, automatically retrieved from SSM Parameter Store. [cdk:skip]", + "Type": "AWS::SSM::Parameter::Value", + }, + }, + "Resources": Object { + "BLEAProdPipelineCodeBuildDeployRoleC24893C8": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "codebuild.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + "ManagedPolicyArns": Array [ + "arn:aws:iam::aws:policy/AdministratorAccess", + ], + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelineCodeBuildDeployRoleDefaultPolicy51A1E053": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:/aws/codebuild/", + Object { + "Ref": "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:/aws/codebuild/", + Object { + "Ref": "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A", + }, + ":*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "codebuild:CreateReportGroup", + "codebuild:CreateReport", + "codebuild:UpdateReport", + "codebuild:BatchPutTestCases", + "codebuild:BatchPutCodeCoverages", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":codebuild:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":report-group/", + Object { + "Ref": "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A", + }, + "-*", + ], + ], + }, + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelineCodeBuildDeployRoleDefaultPolicy51A1E053", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelineCodeBuildDeployRoleC24893C8", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelineAssetsFileAsset1E8FBE3A4": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"npm install -g cdk-assets\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"cdk-assets --path \\\\\\"assembly-BLEA-Prod-Stage/BLEAProdStageBLEAContainerImage0D8D1EEB.assets.json\\\\\\" --verbose publish \\\\\\"80f730532f1195ed4fede75fbf8191acdfc52e6721de3b612c0c6a7eab1dbbc1:current_account-current_region\\\\\\"\\" + ] + } + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelineAssetsFileAsset2DFC013E7": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"npm install -g cdk-assets\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"cdk-assets --path \\\\\\"assembly-BLEA-Prod-Stage/BLEAProdStageBLEAContainerImage0D8D1EEB.assets.json\\\\\\" --verbose publish \\\\\\"4a575666d1c2c6412590d2a56f328e040a81ad1ef59aecee31ae9b393d05f659:current_account-current_region\\\\\\"\\" + ] + } + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelineAssetsFileAsset397ED5D36": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"npm install -g cdk-assets\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"cdk-assets --path \\\\\\"assembly-BLEA-Prod-Stage/BLEAProdStageBLEAECSAppCanary23394634.assets.json\\\\\\" --verbose publish \\\\\\"1e64e462d93160eb5230b00e665705bfaf2299d9c302ab56dd093bccbe387c4f:current_account-current_region\\\\\\"\\" + ] + } + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelineAssetsFileAsset4DF5F9FC3": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"npm install -g cdk-assets\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"cdk-assets --path \\\\\\"assembly-BLEA-Prod-Stage/BLEAProdStageBLEADBAuroraPg1F6BF089.assets.json\\\\\\" --verbose publish \\\\\\"6c0316fef24d0df8a9a705c77052001217d864f49af386539d01df54618cd131:current_account-current_region\\\\\\"\\" + ] + } + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "codebuild.amazonaws.com", + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelineAssetsFileRoleDefaultPolicy90885D80": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:/aws/codebuild/*", + ], + ], + }, + }, + Object { + "Action": Array [ + "codebuild:CreateReportGroup", + "codebuild:CreateReport", + "codebuild:UpdateReport", + "codebuild:BatchPutTestCases", + "codebuild:BatchPutCodeCoverages", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":codebuild:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":report-group/*", + ], + ], + }, + }, + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": "*", + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Sub": "arn:\${AWS::Partition}:iam::\${AWS::AccountId}:role/cdk-hnb659fds-file-publishing-role-\${AWS::AccountId}-\${AWS::Region}", + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelineAssetsFileRoleDefaultPolicy90885D80", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelineAssetsFileRoleC7F735E9", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipeline1F4829D4": Object { + "DependsOn": Array [ + "BLEAProdPipelinepipelinePipelineRoleDefaultPolicy56998FBC", + "BLEAProdPipelinepipelinePipelineRoleD8651A93", + ], + "Properties": Object { + "ArtifactStore": Object { + "Location": Object { + "Ref": "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + }, + "Type": "S3", + }, + "RestartExecutionOnUpdate": true, + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineRoleD8651A93", + "Arn", + ], + }, + "Stages": Array [ + Object { + "Actions": Array [ + Object { + "ActionTypeId": Object { + "Category": "Source", + "Owner": "AWS", + "Provider": "CodeStarSourceConnection", + "Version": "1", + }, + "Configuration": Object { + "BranchName": "main", + "ConnectionArn": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/example", + "FullRepositoryId": "aws-samples/baseline-environment-on-aws", + }, + "Name": "aws-samples_baseline-environment-on-aws", + "OutputArtifacts": Array [ + Object { + "Name": "aws_samples_baseline_environment_on_aws_Source", + }, + ], + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRole1048131F", + "Arn", + ], + }, + "RunOrder": 1, + }, + ], + "Name": "Source", + }, + Object { + "Actions": Array [ + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "EnvironmentVariables": "[{\\"name\\":\\"_PROJECT_CONFIG_HASH\\",\\"type\\":\\"PLAINTEXT\\",\\"value\\":\\"9f610b88a06977a00a6cc1c1c194ce24263d06c353b7e796932b1f6a7ab83d0e\\"}]", + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "aws_samples_baseline_environment_on_aws_Source", + }, + ], + "Name": "SynthStep", + "OutputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleCE042576", + "Arn", + ], + }, + "RunOrder": 1, + }, + ], + "Name": "Build", + }, + Object { + "Actions": Array [ + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "EnvironmentVariables": "[{\\"name\\":\\"_PROJECT_CONFIG_HASH\\",\\"type\\":\\"PLAINTEXT\\",\\"value\\":\\"3fec166019be648330518b8b398c6a4e157296743b25720082061acb497bed1d\\"}]", + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "SelfMutate", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRole6882D888", + "Arn", + ], + }, + "RunOrder": 1, + }, + ], + "Name": "UpdatePipeline", + }, + Object { + "Actions": Array [ + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelineAssetsFileAsset1E8FBE3A4", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "FileAsset1", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleA924B461", + "Arn", + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelineAssetsFileAsset2DFC013E7", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "FileAsset2", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleE5C3D2D7", + "Arn", + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelineAssetsFileAsset397ED5D36", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "FileAsset3", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRole1A08B470", + "Arn", + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Build", + "Owner": "AWS", + "Provider": "CodeBuild", + "Version": "1", + }, + "Configuration": Object { + "ProjectName": Object { + "Ref": "BLEAProdPipelinepipelineAssetsFileAsset4DF5F9FC3", + }, + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "FileAsset4", + "RoleArn": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRole45427CC6", + "Arn", + ], + }, + "RunOrder": 1, + }, + ], + "Name": "Assets", + }, + Object { + "Actions": Array [ + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-AppKey", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAAppKeyA3C76E23.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-AppKey.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-MonitorAlarm", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAMonitorAlarm3AAF4660.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-MonitorAlarm.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-Vpc", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAVpc133DC938.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-Vpc.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-Waf", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAWaf59A0E818.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-Waf.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 1, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-AppKey", + }, + "Name": "BLEA-AppKey.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 2, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-MonitorAlarm", + }, + "Name": "BLEA-MonitorAlarm.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 2, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-Vpc", + }, + "Name": "BLEA-Vpc.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 2, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-Waf", + }, + "Name": "BLEA-Waf.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 2, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ChatbotMonitor", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAChatbotMonitorD6AEFD65.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ChatbotMonitor.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 3, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ECR", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAECR33F72816.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ECR.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 3, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-SimpleFrontStack", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEASimpleFrontStack331E818B.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-SimpleFrontStack.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 3, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ChatbotMonitor", + }, + "Name": "BLEA-ChatbotMonitor.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 4, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ECR", + }, + "Name": "BLEA-ECR.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 4, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-SimpleFrontStack", + }, + "Name": "BLEA-SimpleFrontStack.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 4, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ContainerImage", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAContainerImage0D8D1EEB.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ContainerImage.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 5, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ECSAppCanary", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAECSAppCanary23394634.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ECSAppCanary.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 5, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ContainerImage", + }, + "Name": "BLEA-ContainerImage.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 6, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ECSAppCanary", + }, + "Name": "BLEA-ECSAppCanary.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 6, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ECSApp", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAECSAppF5C1E96D.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ECSApp.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 7, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ECSApp", + }, + "Name": "BLEA-ECSApp.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 8, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-DBAuroraPg", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEADBAuroraPg1F6BF089.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-DBAuroraPg.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 9, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-DBAuroraPg", + }, + "Name": "BLEA-DBAuroraPg.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 10, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_REPLACE", + "Capabilities": "CAPABILITY_NAMED_IAM,CAPABILITY_AUTO_EXPAND", + "ChangeSetName": "PipelineChange", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-cfn-exec-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "StackName": "BLEA-Prod-Stage-BLEA-ECSAppDashboard", + "TemplatePath": "SynthStep_Output::assembly-BLEA-Prod-Stage/BLEAProdStageBLEAECSAppDashboard5720D941.template.json", + }, + "InputArtifacts": Array [ + Object { + "Name": "SynthStep_Output", + }, + ], + "Name": "BLEA-ECSAppDashboard.Prepare", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 11, + }, + Object { + "ActionTypeId": Object { + "Category": "Deploy", + "Owner": "AWS", + "Provider": "CloudFormation", + "Version": "1", + }, + "Configuration": Object { + "ActionMode": "CHANGE_SET_EXECUTE", + "ChangeSetName": "PipelineChange", + "StackName": "BLEA-Prod-Stage-BLEA-ECSAppDashboard", + }, + "Name": "BLEA-ECSAppDashboard.Deploy", + "RoleArn": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + "RunOrder": 12, + }, + ], + "Name": "BLEA-Prod-Stage", + }, + ], + }, + "Type": "AWS::CodePipeline::Pipeline", + }, + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592": Object { + "DeletionPolicy": "Retain", + "Properties": Object { + "BucketEncryption": Object { + "ServerSideEncryptionConfiguration": Array [ + Object { + "ServerSideEncryptionByDefault": Object { + "SSEAlgorithm": "aws:kms", + }, + }, + ], + }, + "PublicAccessBlockConfiguration": Object { + "BlockPublicAcls": true, + "BlockPublicPolicy": true, + "IgnorePublicAcls": true, + "RestrictPublicBuckets": true, + }, + }, + "Type": "AWS::S3::Bucket", + "UpdateReplacePolicy": "Retain", + }, + "BLEAProdPipelinepipelinePipelineArtifactsBucketPolicy17CDC247": Object { + "Properties": Object { + "Bucket": Object { + "Ref": "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + }, + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "s3:*", + "Condition": Object { + "Bool": Object { + "aws:SecureTransport": "false", + }, + }, + "Effect": "Deny", + "Principal": Object { + "AWS": "*", + }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + }, + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::S3::BucketPolicy", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleA924B461": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleDefaultPolicy2171446D": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileAsset1E8FBE3A4", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleDefaultPolicy2171446D", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleA924B461", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleDefaultPolicyFCCDC815": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileAsset2DFC013E7", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleDefaultPolicyFCCDC815", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleE5C3D2D7", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleE5C3D2D7": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRole1A08B470": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRoleDefaultPolicy7E7C26D3": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileAsset397ED5D36", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRoleDefaultPolicy7E7C26D3", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRole1A08B470", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRole45427CC6": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRoleDefaultPolicyCD2F0B41": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineAssetsFileAsset4DF5F9FC3", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRoleDefaultPolicyCD2F0B41", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRole45427CC6", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelineCodeBuildDeployRoleC24893C8", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"n stable\\", + \\"node -v\\", + \\"npm update npm\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"echo \\\\\\"node: $(node --version)\\\\\\" \\", + \\"echo \\\\\\"npm: $(npm --version)\\\\\\" \\", + \\"npm ci\\", + \\"npm audit\\", + \\"npm run lint\\", + \\"cd usecases/guest-webapp-sample\\", + \\"npm run build\\", + \\"npm run test\\", + \\"npx cdk synth --app \\\\\\"npx ts-node --prefer-ts-exts bin/blea-guest-ecsapp-sample-pipeline.ts\\\\\\" -c environment=dev\\", + \\"npx cdk ls -c environment=dev\\" + ] + } + }, + \\"artifacts\\": { + \\"base-directory\\": \\"./usecases/guest-webapp-sample/cdk.out\\", + \\"files\\": \\"**/*\\" + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleCE042576": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleDefaultPolicy812404AE": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineBuildSynthStepCdkBuildProject2E3BBE1A", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleDefaultPolicy812404AE", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleCE042576", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineRoleD8651A93": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "codepipeline.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineRoleDefaultPolicy56998FBC": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRole1048131F", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineBuildSynthStepCodePipelineActionRoleCE042576", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRole6882D888", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset1CodePipelineActionRoleA924B461", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset2CodePipelineActionRoleE5C3D2D7", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset3CodePipelineActionRole1A08B470", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineAssetsFileAsset4CodePipelineActionRole45427CC6", + "Arn", + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/cdk-hnb659fds-deploy-role-", + Object { + "Ref": "AWS::AccountId", + }, + "-", + Object { + "Ref": "AWS::Region", + }, + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineRoleDefaultPolicy56998FBC", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineRoleD8651A93", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRole1048131F": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRoleDefaultPolicy7620E3B9": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "codestar-connections:UseConnection", + "Effect": "Allow", + "Resource": "arn:aws:codestar-connections:ap-northeast-1:xxxxxxxxxxxx:connection/example", + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + "s3:DeleteObject*", + "s3:PutObject", + "s3:Abort*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + Object { + "Action": "s3:PutObjectAcl", + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRoleDefaultPolicy7620E3B9", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineSourceawssamplesbaselineenvironmentonawsCodePipelineActionRole1048131F", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRole6882D888": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "AWS": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":root", + ], + ], + }, + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRoleDefaultPolicyB2563550": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "codebuild:BatchGetBuilds", + "codebuild:StartBuild", + "codebuild:StopBuild", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE", + "Arn", + ], + }, + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRoleDefaultPolicyB2563550", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelinePipelineUpdatePipelineSelfMutateCodePipelineActionRole6882D888", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE": Object { + "Properties": Object { + "Artifacts": Object { + "Type": "CODEPIPELINE", + }, + "Cache": Object { + "Type": "NO_CACHE", + }, + "EncryptionKey": "alias/aws/s3", + "Environment": Object { + "ComputeType": "BUILD_GENERAL1_SMALL", + "Image": "aws/codebuild/standard:5.0", + "ImagePullCredentialsType": "CODEBUILD", + "PrivilegedMode": false, + "Type": "LINUX_CONTAINER", + }, + "ServiceRole": Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelineUpdatePipelineSelfMutationRole1E73AC1B", + "Arn", + ], + }, + "Source": Object { + "BuildSpec": "{ + \\"version\\": \\"0.2\\", + \\"phases\\": { + \\"install\\": { + \\"commands\\": [ + \\"npm install -g aws-cdk\\" + ] + }, + \\"build\\": { + \\"commands\\": [ + \\"cdk -a . deploy BLEA-Prod-Pipeline --require-approval=never --verbose\\" + ] + } + } +}", + "Type": "CODEPIPELINE", + }, + }, + "Type": "AWS::CodeBuild::Project", + }, + "BLEAProdPipelinepipelineUpdatePipelineSelfMutationRole1E73AC1B": Object { + "Properties": Object { + "AssumeRolePolicyDocument": Object { + "Statement": Array [ + Object { + "Action": "sts:AssumeRole", + "Effect": "Allow", + "Principal": Object { + "Service": "codebuild.amazonaws.com", + }, + }, + ], + "Version": "2012-10-17", + }, + }, + "Type": "AWS::IAM::Role", + }, + "BLEAProdPipelinepipelineUpdatePipelineSelfMutationRoleDefaultPolicyF5BCA10B": Object { + "Properties": Object { + "PolicyDocument": Object { + "Statement": Array [ + Object { + "Action": Array [ + "logs:CreateLogGroup", + "logs:CreateLogStream", + "logs:PutLogEvents", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:/aws/codebuild/", + Object { + "Ref": "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE", + }, + ], + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":logs:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":log-group:/aws/codebuild/", + Object { + "Ref": "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE", + }, + ":*", + ], + ], + }, + ], + }, + Object { + "Action": Array [ + "codebuild:CreateReportGroup", + "codebuild:CreateReport", + "codebuild:UpdateReport", + "codebuild:BatchPutTestCases", + "codebuild:BatchPutCodeCoverages", + ], + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:", + Object { + "Ref": "AWS::Partition", + }, + ":codebuild:", + Object { + "Ref": "AWS::Region", + }, + ":", + Object { + "Ref": "AWS::AccountId", + }, + ":report-group/", + Object { + "Ref": "BLEAProdPipelinepipelineUpdatePipelineSelfMutation359507DE", + }, + "-*", + ], + ], + }, + }, + Object { + "Action": "sts:AssumeRole", + "Condition": Object { + "ForAnyValue:StringEquals": Object { + "iam:ResourceTag/aws-cdk:bootstrap-role": Array [ + "image-publishing", + "file-publishing", + "deploy", + ], + }, + }, + "Effect": "Allow", + "Resource": Object { + "Fn::Join": Array [ + "", + Array [ + "arn:*:iam::", + Object { + "Ref": "AWS::AccountId", + }, + ":role/*", + ], + ], + }, + }, + Object { + "Action": "cloudformation:DescribeStacks", + "Effect": "Allow", + "Resource": "*", + }, + Object { + "Action": "s3:ListBucket", + "Effect": "Allow", + "Resource": "*", + }, + Object { + "Action": Array [ + "s3:GetObject*", + "s3:GetBucket*", + "s3:List*", + ], + "Effect": "Allow", + "Resource": Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + Object { + "Fn::Join": Array [ + "", + Array [ + Object { + "Fn::GetAtt": Array [ + "BLEAProdPipelinepipelinePipelineArtifactsBucket1D5BA592", + "Arn", + ], + }, + "/*", + ], + ], + }, + ], + }, + ], + "Version": "2012-10-17", + }, + "PolicyName": "BLEAProdPipelinepipelineUpdatePipelineSelfMutationRoleDefaultPolicyF5BCA10B", + "Roles": Array [ + Object { + "Ref": "BLEAProdPipelinepipelineUpdatePipelineSelfMutationRole1E73AC1B", + }, + ], + }, + "Type": "AWS::IAM::Policy", + }, + }, + "Rules": Object { + "CheckBootstrapVersion": Object { + "Assertions": Array [ + Object { + "Assert": Object { + "Fn::Not": Array [ + Object { + "Fn::Contains": Array [ + Array [ + "1", + "2", + "3", + "4", + "5", + ], + Object { + "Ref": "BootstrapVersion", + }, + ], + }, + ], + }, + "AssertDescription": "CDK bootstrap stack version 6 required. Please run 'cdk bootstrap' with a recent version of the CDK CLI.", + }, + ], + }, + }, +} +`; diff --git a/usecases/guest-webapp-sample/test/blea-guest-ecsapp-sample-pipeline.test.ts b/usecases/guest-webapp-sample/test/blea-guest-ecsapp-sample-pipeline.test.ts new file mode 100644 index 000000000..dde90c36b --- /dev/null +++ b/usecases/guest-webapp-sample/test/blea-guest-ecsapp-sample-pipeline.test.ts @@ -0,0 +1,164 @@ +import { Template } from 'aws-cdk-lib/assertions'; +import * as cdk from 'aws-cdk-lib'; +import { Construct } from 'constructs'; +import * as BLEAPipeline from '../pipeline/blea-ecsapp-sample-pipeline-stack'; + +// Load cdk.json to get context parameters +import * as cdk_json from '../cdk.json'; + +import { BLEAChatbotStack } from '../lib/blea-chatbot-stack'; +import { BLEAMonitorAlarmStack } from '../lib/blea-monitor-alarm-stack'; +import { BLEAKeyAppStack } from '../lib/blea-key-app-stack'; +import { BLEAVpcStack } from '../lib/blea-vpc-stack'; +import { BLEAECRStack } from '../lib/blea-ecr-stack'; +import { BLEABuildContainerStack } from '../lib/blea-build-container-stack'; +import { BLEAECSAppStack } from '../lib/blea-ecsapp-stack'; +import { BLEADbAuroraPgStack } from '../lib/blea-db-aurora-pg-stack'; +import { BLEAWafStack } from '../lib/blea-waf-stack'; +import { BLEAFrontendSimpleStack } from '../lib/blea-frontend-simple-stack'; +import { BLEADashboardStack } from '../lib/blea-dashboard-stack'; +import { BLEACanaryStack } from '../lib/blea-canary-stack'; + +const procEnv = { + account: process.env.CDK_DEFAULT_ACCOUNT, + region: process.env.CDK_DEFAULT_REGION, +}; + +const pjPrefix = 'BLEA'; +const app = new cdk.App(); +const envKey = 'dev'; +const envVals = cdk_json['context'][envKey]; + +describe(`${pjPrefix} Stacks`, () => { + test('BLEA Deploy Stack', () => { + class BLEAPipelineStage extends cdk.Stage { + constructor(scope: Construct, id: string, props?: cdk.StackProps) { + super(scope, id, props); + + // Slack Notifier + const workspaceId = envVals['slackNotifier']['workspaceId']; + const channelIdMon = envVals['slackNotifier']['channelIdMon']; + + // Topic for monitoring guest system + const monitorAlarm = new BLEAMonitorAlarmStack(this, `${pjPrefix}-MonitorAlarm`, { + notifyEmail: envVals['monitoringNotifyEmail'], + env: procEnv, + }); + + new BLEAChatbotStack(this, `${pjPrefix}-ChatbotMonitor`, { + topicArn: monitorAlarm.alarmTopic.topicArn, + workspaceId: workspaceId, + channelId: channelIdMon, + env: procEnv, + }); + + // CMK for Apps + const appKey = new BLEAKeyAppStack(this, `${pjPrefix}-AppKey`, { env: procEnv }); + + // Networking + const myVpcCidr = envVals['vpcCidr']; + const prodVpc = new BLEAVpcStack(this, `${pjPrefix}-Vpc`, { + myVpcCidr: myVpcCidr, + env: procEnv, + }); + + // WebACL for ALB + // Note: + // For CloudFront, you can create WebACL with these options. + // But currently this code doesn't work. As CDK don't provide cross-stack reference for corss environment. + // { scope: 'CLOUDFRONT', + // env: { + // account: procEnv.account, + // region: 'us-east-1', + // }} + const waf = new BLEAWafStack(this, `${pjPrefix}-Waf`, { + scope: 'REGIONAL', + env: procEnv, + }); + + // Simple CloudFront FrontEnd + const front = new BLEAFrontendSimpleStack(this, `${pjPrefix}-SimpleFrontStack`, { + myVpc: prodVpc.myVpc, + webAcl: waf.webAcl, + env: procEnv, + }); + + // Container Repository + const ecr = new BLEAECRStack(this, `${pjPrefix}-ECR`, { + // TODO: will get "repositoryName" from parameters + repositoryName: 'apprepo', + alarmTopic: monitorAlarm.alarmTopic, + env: procEnv, + }); + + // Build Container Image + const build_container = new BLEABuildContainerStack(this, `${pjPrefix}-ContainerImage`, { + ecrRepository: ecr.repository, + env: procEnv, + }); + + // Application Stack (LoadBalancer + Fargate) + const ecsApp = new BLEAECSAppStack(this, `${pjPrefix}-ECSApp`, { + myVpc: prodVpc.myVpc, + appKey: appKey.kmsKey, + repository: ecr.repository, + imageTag: build_container.imageTag, + alarmTopic: monitorAlarm.alarmTopic, + webFront: front, + env: procEnv, + }); + ecsApp.addDependency(build_container); + + // Aurora + const dbCluster = new BLEADbAuroraPgStack(this, `${pjPrefix}-DBAuroraPg`, { + myVpc: prodVpc.myVpc, + dbName: 'mydbname', + dbUser: envVals['dbUser'], + dbAllocatedStorage: 25, + vpcSubnets: prodVpc.myVpc.selectSubnets({ + subnetGroupName: 'Protected', + }), + appServerSecurityGroup: ecsApp.appServerSecurityGroup, + appKey: appKey.kmsKey, + alarmTopic: monitorAlarm.alarmTopic, + env: procEnv, + }); + + // Monitoring + const appCanary = new BLEACanaryStack(this, `${pjPrefix}-ECSAppCanary`, { + alarmTopic: monitorAlarm.alarmTopic, + appEndpoint: front.cfDistribution.domainName, + env: procEnv, + }); + + new BLEADashboardStack(this, `${pjPrefix}-ECSAppDashboard`, { + dashboardName: `${pjPrefix}-ECSApp`, + webFront: front, + ecsClusterName: ecsApp.ecsClusterName, + ecsServiceName: ecsApp.ecsServiceName, + appTargetGroupName: ecsApp.appTargetGroupName, + dbClusterName: dbCluster.dbClusterName, + albTgUnHealthyHostCountAlarm: ecsApp.albTgUnHealthyHostCountAlarm, + ecsScaleOnRequestCount: ecsApp.ecsScaleOnRequestCount, + ecsTargetUtilizationPercent: ecsApp.ecsTargetUtilizationPercent, + canaryDurationAlarm: appCanary.canaryDurationAlarm, + canaryFailedAlarm: appCanary.canaryFailedAlarm, + env: procEnv, + }); + } + } + + // const devStack = new BLEAPipelineStage(app, `${pjPrefix}-Dev-Stage`); + const prodStack = new BLEAPipeline.BLEAPipelineStack(app, `${pjPrefix}-Prod-Pipeline`, { + repository: envVals['repository'], + branch: envVals['branch'], + connectionArn: envVals['connectionArn'], + env: procEnv, + environment: 'dev', + deployStage: new BLEAPipelineStage(app, `${pjPrefix}-Prod-Stage`), + }); + + // test with snapshot + expect(Template.fromStack(prodStack)).toMatchSnapshot(); + }); +});