Cookie の設定を選択する

当社は、当社のサイトおよびサービスを提供するために必要な必須 Cookie および類似のツールを使用しています。当社は、パフォーマンス Cookie を使用して匿名の統計情報を収集することで、お客様が当社のサイトをどのように利用しているかを把握し、改善に役立てています。必須 Cookie は無効化できませんが、[カスタマイズ] または [拒否] をクリックしてパフォーマンス Cookie を拒否することはできます。

お客様が同意した場合、AWS および承認された第三者は、Cookie を使用して便利なサイト機能を提供したり、お客様の選択を記憶したり、関連する広告を含む関連コンテンツを表示したりします。すべての必須ではない Cookie を受け入れるか拒否するには、[受け入れる] または [拒否] をクリックしてください。より詳細な選択を行うには、[カスタマイズ] をクリックしてください。

AWS コードサービスと AWS KMS マルチリージョンキーを使用して、複数のアカウントとリージョンへのマイクロサービスのブルー/グリーンデプロイを管理 - AWS 規範ガイダンス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS コードサービスと AWS KMS マルチリージョンキーを使用して、複数のアカウントとリージョンへのマイクロサービスのブルー/グリーンデプロイを管理

作成者:Balaji Vedagiri (AWS)、Ashish Kumar (AWS)、Faisal Shahdad (AWS)、Anand Krishna Varanasi (AWS)、Vanitha Dontireddy (AWS) と Vivek Thangamuthu (AWS)

概要

注意: AWS CodeCommit は新規顧客には利用できなくなりました。の既存のお客様は、通常どおりサービスを AWS CodeCommit 引き続き使用できます。詳細はこちら

このパターンは、ブルー/グリーンデプロイ戦略に従い、中央のAWS アカウントから複数のワークロードアカウントとリージョンにグローバルマイクロサービスアプリケーションをデプロイする方法を説明しています。このパターンは以下をサポートします。

  • ソフトウェアは中央アカウントで開発されますが、ワークロードとアプリケーションは複数のアカウントと AWS リージョンに分散されます。

  • ディザスタリカバリとして、単一の AWS キー管理システム (AWS KMS) マルチリージョンキーが暗号化と復号に使用されます。

  • KMS キーはリージョン固有であり、パイプラインアーティファクト用に 3 つの異なるリージョンで管理しまたは作成する必要があります。KMS マルチリージョンキーは、リージョン間で同じキー ID を保持することに役立ちます。

  • Git ワークフローの分岐モデルは 2 つのブランチ (開発とメイン) で実装され、コードはプルリクエスト (PR) でマージされます。このスタックからデプロイされる AWS Lambda 関数は、開発ブランチからメインブランチへの PR を作成します。メインブランチにマージするPR は、AWS CodePipeline パイプラインを開始します。これにより、継続的インテグレーションと継続的デリバリー (CI/CD) フローをオーケストレーションし、アカウントにスタックをデプロイします。

このパターンは、AWS CloudFormation スタックによるコードとしての Infrastructure as Code (IaC) 設定のサンプルを提供され、このユースケースを説明します。マイクロサービスのブルー/グリーンデプロイは、AWS CodeDeploy を使用して実装されます。

前提条件と制限

前提条件

  • 4 つのアクティブな AWS アカウント:

    • コードパイプラインを管理し、AWS CodeCommit リポジトリを維持するためのツールアカウント。

    • マイクロサービスワークロードをデプロイするための 3 つのワークロード (テスト) アカウント。

  • このパターンでは次のリージョンを使用します。他のリージョンを使用する場合は、AWS CodeDeploy と AWS KMS マルチリージョンスタックに適切な変更を加える必要があります。

    • ツール (AWS CodeCommit) アカウント: ap-south-1

    • ワークロード (テスト) アカウント 1: ap-south-1

    • ワークロード (テスト) アカウント 2: eu-central-1

    • ワークロード (テスト) アカウント 3: us-east-1

  • 各ワークロードアカウントのデプロイ用の 3 つの Amazon Simple Storage Service (Amazon S3) バケット。(これらはこのパターンで、S3BUCKETNAMETESTACCOUNT1S3BUCKETNAMETESTACCOUNT2 S3BUCKETNAMETESTACCOUNT3 と呼ばれています。)

    たとえば、これらのバケットは、特定のアカウントとリージョンに次のように固有のバケット名で作成できます ( xxxx をランダムなナンバーに置き換える)。

    ##In Test Account 1 aws s3 mb s3://ecs-codepipeline-xxxx-ap-south-1 --region ap-south-1 ##In Test Account 2 aws s3 mb s3://ecs-codepipeline-xxxx-eu-central-1 --region eu-central-1 ##In Test Account 3 aws s3 mb s3://ecs-codepipeline-xxxx-us-east-1 --region us-east-1 #Example ##In Test Account 1 aws s3 mb s3://ecs-codepipeline-18903-ap-south-1 --region ap-south-1 ##In Test Account 2 aws s3 mb s3://ecs-codepipeline-18903-eu-central-1 --region eu-central-1 ##In Test Account 3 aws s3 mb s3://ecs-codepipeline-18903-us-east-1 --region us-east-1

制約事項

このパターンは、AWS CodeBuild とその他の設定ファイルでサンプルマイクロサービスをデプロイします。別のワークロードタイプ (サーバーレスなど) を使用している場合は、関連する設定をすべて更新する必要があります。

アーキテクチャ

ターゲットテクノロジースタック

  • AWS CloudFormation

  • AWS CodeCommit

  • AWS CodeBuild

  • AWS CodeDeploy

  • AWS CodePipeline

ターゲットアーキテクチャ

マイクロサービスを複数のアカウントとリージョンにデプロイするためのターゲットアーキテクチャ

自動化とスケール

設定は、AWS CloudFormation スタックテンプレート (IaC) を使用して自動化されます。複数の環境やアカウントに合わせて簡単にスケールすることができます。

ツール

AWS サービス

  • AWS CloudFormation を使用すると、AWS リソースをセットアップし、迅速かつ一貫したプロビジョニングを行い、AWS アカウントとリージョン全体でライフサイクル全体にわたってリソースを管理できます。

  • AWS CodeBuild は完全マネージド型の構築サービスです。ソースコードのコンパイル、ユニットテストの実行、すぐにデプロイできるアーティファクトの生成を行います。

  • AWS CodeCommit は、独自のソースコントロールシステムを管理しなくても、Git リポジトリを非公開で保存および管理できるバージョン管理サービスです。

  • AWS CodeDeploy は、Amazon Elastic Compute Cloud (Amazon EC2) またはオンプレミスインスタンス、AWS Lambda 関数、または Amazon Elastic Container Service (Amazon ECS) サービスへのデプロイを自動化します。

  • AWS CodePipeline は、ソフトウェアリリースのさまざまな段階を迅速にモデル化および設定し、ソフトウェアの変更を継続的にリリースするために必要なステップを自動化するのに役立ちます。

  • Amazon Elastic Container Registry (Amazon ECR)」は、セキュリティ、スケーラビリティ、信頼性を備えたマネージドコンテナイメージレジストリサービスです。

  • Amazon Elastic Container Service (Amazon ECS)」 は、クラスターでのコンテナの実行、停止、管理を支援する、高速でスケーラブルなコンテナ管理サービスです。

  • AWS Key Management Service (AWS KMS) は、データの保護に役立つ暗号キーを作成および管理する上で役立ちます。

  • Amazon Simple Storage Service (Amazon S3) は、どのようなデータ量であっても、データを保存、保護、取得することを支援するクラウドベースのオブジェクトストレージサービスです。

その他のツール

  • Git」は、AWS CodeCommit リポジトリと連携するオープンソースの分散型バージョン管理システムです。

  • Docker」は、オペレーティングシステムレベルの仮想化を使用してソフトウェアをコンテナで配信するPlatform as a Service (PaaS) 製品のセットです。このパターンでは、Docker でコンテナイメージをローカルでビルドしてテストします。

  • cfn-lint」と「cfn-nag」は、CloudFormation スタックにエラーやセキュリティ上の問題がないかを確認することに役立つオープンソースツールです。

コードリポジトリ

このパターンのコードは、GitHub 内の「複数のリージョンとアカウントのグローバルブルー/グリーンデプロイ」リポジトリで利用できます。

エピック

タスク説明必要なスキル

CloudFormation スタックデプロイ用の環境変数を出力します。

このパターンの後半で CloudFormation スタックへの入力として使用する環境変数を定義します。

  1. 前述の「前提条件」セクションで説明したように、3 つのアカウントとリージョンで作成したバケット名を更新します。

    export S3BUCKETNAMETESTACCOUNT1=<S3BUCKETACCOUNT1> export S3BUCKETNAMETESTACCOUNT2=<S3BUCKETACCOUNT2> export S3BUCKETNAMETESTACCOUNT3=<S3BUCKETACCOUNT3>
  2. バケット名はグローバルに一意である必要があるため、ランダムな文字列を定義してアーティファクトバケットを作成します。

    export BUCKETSTARTNAME=ecs-codepipeline-artifacts-19992
  3. アカウント ID とリージョンを定義して出力します。

    export TOOLSACCOUNT=<TOOLSACCOUNT> export CODECOMMITACCOUNT=<CODECOMMITACCOUNT> export CODECOMMITREGION=ap-south-1 export CODECOMMITREPONAME=Poc export TESTACCOUNT1=<TESTACCOUNT1> export TESTACCOUNT2=<TESTACCOUNT2> export TESTACCOUNT3=<TESTACCOUNT3> export TESTACCOUNT1REGION=ap-south-1 export TESTACCOUNT2REGION=eu-central-1 export TESTACCOUNT3REGION=us-east-1 export TOOLSACCOUNTREGION=ap-south-1 export ECRREPOSITORYNAME=web
AWS DevOps

環境変数のセットアップ

タスク説明必要なスキル

CloudFormation スタックデプロイ用の環境変数を出力します。

このパターンの後半で CloudFormation スタックへの入力として使用する環境変数を定義します。

  1. 前述の「前提条件」セクションで説明したように、3 つのアカウントとリージョンで作成したバケット名を更新します。

    export S3BUCKETNAMETESTACCOUNT1=<S3BUCKETACCOUNT1> export S3BUCKETNAMETESTACCOUNT2=<S3BUCKETACCOUNT2> export S3BUCKETNAMETESTACCOUNT3=<S3BUCKETACCOUNT3>
  2. バケット名はグローバルに一意である必要があるため、ランダムな文字列を定義してアーティファクトバケットを作成します。

    export BUCKETSTARTNAME=ecs-codepipeline-artifacts-19992
  3. アカウント ID とリージョンを定義して出力します。

    export TOOLSACCOUNT=<TOOLSACCOUNT> export CODECOMMITACCOUNT=<CODECOMMITACCOUNT> export CODECOMMITREGION=ap-south-1 export CODECOMMITREPONAME=Poc export TESTACCOUNT1=<TESTACCOUNT1> export TESTACCOUNT2=<TESTACCOUNT2> export TESTACCOUNT3=<TESTACCOUNT3> export TESTACCOUNT1REGION=ap-south-1 export TESTACCOUNT2REGION=eu-central-1 export TESTACCOUNT3REGION=us-east-1 export TOOLSACCOUNTREGION=ap-south-1 export ECRREPOSITORYNAME=web
AWS DevOps
タスク説明必要なスキル

リポジトリをクローン作成します。

「サンプルリポジトリ」を作業場所の新しいリポジトリにクローンを作成します。

##In work location git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git
AWS DevOps

Cloudformation リソースをパッケージします。

このステップでは、CloudFormation テンプレートが参照するローカルアーティファクトをパッケージして、Amazon Virtual Private Cloud (Amazon VPC) やApplication Load Balancer などのサービスに必要なインフラストラクチャリソースを作成します。

このテンプレートはコードリポジトリの Infra フォルダで利用できます。

##In TestAccount1## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \ --s3-prefix infraStack \ --region $TESTACCOUNT1REGION \ --output-template-file infrastructure_${TESTACCOUNT1}.template
##In TestAccount2## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \ --s3-prefix infraStack \ --region $TESTACCOUNT2REGION \ --output-template-file infrastructure_${TESTACCOUNT2}.template
##In TestAccount3## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \ --s3-prefix infraStack \ --region $TESTACCOUNT3REGION \ --output-template-file infrastructure_${TESTACCOUNT3}.template
AWS DevOps

パッケージテンプレートを検証します。

パッケージテンプレートを検証します。

aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT1}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT2}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT3}.template
AWS DevOps

パッケージファイルをワークロードアカウントにデプロイ

  1. 設定に基づき、i nfraParameters.json スクリプトのプレースホルダー値とアカウント名を更新します。

  2. パッケージテンプレートを 3 つのワークロードアカウントにデプロイします。

    ##In TestAccount1## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT1}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT1REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount2## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT2}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT2REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount3## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT3}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT3REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
AWS DevOps

インフラストラクチャ用にCloudFormation スタックをパッケージしてデプロイ

タスク説明必要なスキル

リポジトリをクローン作成します。

「サンプルリポジトリ」を作業場所の新しいリポジトリにクローンを作成します。

##In work location git clone https://github.com/aws-samples/ecs-blue-green-global-deployment-with-multiregion-cmk-codepipeline.git
AWS DevOps

Cloudformation リソースをパッケージします。

このステップでは、CloudFormation テンプレートが参照するローカルアーティファクトをパッケージして、Amazon Virtual Private Cloud (Amazon VPC) やApplication Load Balancer などのサービスに必要なインフラストラクチャリソースを作成します。

このテンプレートはコードリポジトリの Infra フォルダで利用できます。

##In TestAccount1## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT1 \ --s3-prefix infraStack \ --region $TESTACCOUNT1REGION \ --output-template-file infrastructure_${TESTACCOUNT1}.template
##In TestAccount2## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT2 \ --s3-prefix infraStack \ --region $TESTACCOUNT2REGION \ --output-template-file infrastructure_${TESTACCOUNT2}.template
##In TestAccount3## aws cloudformation package \ --template-file mainInfraStack.yaml \ --s3-bucket $S3BUCKETNAMETESTACCOUNT3 \ --s3-prefix infraStack \ --region $TESTACCOUNT3REGION \ --output-template-file infrastructure_${TESTACCOUNT3}.template
AWS DevOps

パッケージテンプレートを検証します。

パッケージテンプレートを検証します。

aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT1}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT2}.template aws cloudformation validate-template \ --template-body file://infrastructure_${TESTACCOUNT3}.template
AWS DevOps

パッケージファイルをワークロードアカウントにデプロイ

  1. 設定に基づき、i nfraParameters.json スクリプトのプレースホルダー値とアカウント名を更新します。

  2. パッケージテンプレートを 3 つのワークロードアカウントにデプロイします。

    ##In TestAccount1## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT1}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT1REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount2## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT2}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT2REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM ##In TestAccount3## aws cloudformation deploy \ --template-file infrastructure_${TESTACCOUNT3}.template \ --stack-name mainInfrastack \ --parameter-overrides file://infraParameters.json \ --region $TESTACCOUNT3REGION \ --capabilities CAPABILITY_IAM CAPABILITY_NAMED_IAM
AWS DevOps
タスク説明必要なスキル

Amazon ECR リポジトリにサンプルイメージをプッシュします

(パラメータで設定されているように) web という Amazon Elastic Container Registry (Amazon ECR) リポジトリに、サンプル (NGINX) イメージをプッシュします。このイメージは必要に応じてカスタマイズできます。

ログインして、Amazon ECR にイメージをプッシュするための認証情報を設定するには、「Amazon ECR のドキュメント」の指示に従ってください。

コマンドは以下のとおりです。

docker pull nginx docker images docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag
AWS DevOps

Amazon ECS をスケールしてアクセスを検証します。

  1. Amazon ECS をスケールして 2 つのレプリカを作成します。

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 2

    Poc-Service はサンプルアプリケーションを指します。

  2. ブラウザから完全修飾ドメイン名 (FQDN) または DNS を使用するか、curl コマンドを使用して、Application Load Balancer からサービスにアクセスできることを確認します。

AWS DevOps

サンプルイメージをプッシュして Amazon ECS をスケールします。

タスク説明必要なスキル

Amazon ECR リポジトリにサンプルイメージをプッシュします

(パラメータで設定されているように) web という Amazon Elastic Container Registry (Amazon ECR) リポジトリに、サンプル (NGINX) イメージをプッシュします。このイメージは必要に応じてカスタマイズできます。

ログインして、Amazon ECR にイメージをプッシュするための認証情報を設定するには、「Amazon ECR のドキュメント」の指示に従ってください。

コマンドは以下のとおりです。

docker pull nginx docker images docker tag <imageid> aws_account_id.dkr.ecr.region.amazonaws.com/<web>:latest docker push <aws_account_id>.dkr.ecr.<region>.amazonaws.com/<web>:tag
AWS DevOps

Amazon ECS をスケールしてアクセスを検証します。

  1. Amazon ECS をスケールして 2 つのレプリカを作成します。

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 2

    Poc-Service はサンプルアプリケーションを指します。

  2. ブラウザから完全修飾ドメイン名 (FQDN) または DNS を使用するか、curl コマンドを使用して、Application Load Balancer からサービスにアクセスできることを確認します。

AWS DevOps
タスク説明必要なスキル

ツール アカウントに CodeCommit リポジトリを作成します。

GitHub リポジトリの code フォルダにある codecommit.yaml テンプレートを使用して、ツールアカウントに CodeCommit リポジトリを作成します。このリポジトリは、コードを開発する予定の 1 つのリージョンにのみ作成する必要があります。

aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides CodeCommitReponame=$CODECOMMITREPONAME \ ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

CodePipeline によって生成されたアーティファクトを管理するための S3 バケットを作成します。

GitHub リポジトリの code フォルダにある pre-reqs-bucket.yaml テンプレートを使用して、CodePipeline によって生成されたアーティファクトを管理するための S3 バケットを作成します。スタックは 3 つのワークロード (テスト) とツールのアカウントとリージョンにすべてデプロイする必要があります。

aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

マルチリージョン KMS キーを設定します。

  1. CodePipeline が使用するプライマリキーとレプリカキーを持つマルチリージョン KMS キーを作成します。この例では、ToolsAccount1region - ap-south-1 がプライマリリージョンになります。

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. CMKARN 変数を設定して CodeBuild プロジェクトに渡します。この値は ecs-codepipeline-pre-reqs-KMS テンプレートスタックの出力で利用できます (キー ID はすべてのリージョンで同じで、mrk- で始まります)。または、ツールアカウントから CMKARN 値を取得することもできます。すべてのアカウントセッションでそれらを出力します。 

    export CMKARN1=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN2=arn:aws:kms:eu-central-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN3=arn:aws:kms:us-east-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMARNTOOLS=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx
AWS DevOps

ツールアカウントで CodeBuild プロジェクトを設定します。

  1. GitHub リポジトリの code フォルダにある codebuild_IAM.yaml テンプレートを使用して、ツールアカウントの単一リージョンに AWS CodeBuild 用の AWS アイデンティティとアクセス管理 (IAM) を設定します。

    #In ToolsAccount aws cloudformation deploy --stack-name ecs-codebuild-iam \ --template-file codebuild_IAM.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
  2. codebuild.yaml テンプレートを使用して、ビルドプロジェクト用に CodeBuild を設定します。このテンプレートを 3 つのリージョンに次のようにすべてデプロイします。

    aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT1 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN1 \ --template-file codebuild.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN2 \ --template-file codebuild.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT3 \ CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN3 \ --template-file codebuild.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

ワークロードアカウントに CodeDeploy を設定します。

GitHub リポジトリの code フォルダにある codedeploy.yaml テンプレートを使用して、3 つのワークロードアカウントにすべて CodeDeploy を設定します。mainInfraStack の出力には、Amazon ECS クラスターの Amazon リソースネーム (ARN) とApplication Load Balancer リスナーが含まれます。

注記

インフラストラクチャスタックの値はエクスポート済みであるため、CodeDeploy スタックテンプレートによってインポートされます。

##WorkloadAccount1## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount2## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount3## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

コードサービスとリソースを設定

タスク説明必要なスキル

ツール アカウントに CodeCommit リポジトリを作成します。

GitHub リポジトリの code フォルダにある codecommit.yaml テンプレートを使用して、ツールアカウントに CodeCommit リポジトリを作成します。このリポジトリは、コードを開発する予定の 1 つのリージョンにのみ作成する必要があります。

aws cloudformation deploy --stack-name codecommitrepoStack --parameter-overrides CodeCommitReponame=$CODECOMMITREPONAME \ ToolsAccount=$TOOLSACCOUNT --template-file codecommit.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

CodePipeline によって生成されたアーティファクトを管理するための S3 バケットを作成します。

GitHub リポジトリの code フォルダにある pre-reqs-bucket.yaml テンプレートを使用して、CodePipeline によって生成されたアーティファクトを管理するための S3 バケットを作成します。スタックは 3 つのワークロード (テスト) とツールのアカウントとリージョンにすべてデプロイする必要があります。

aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

マルチリージョン KMS キーを設定します。

  1. CodePipeline が使用するプライマリキーとレプリカキーを持つマルチリージョン KMS キーを作成します。この例では、ToolsAccount1region - ap-south-1 がプライマリリージョンになります。

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. CMKARN 変数を設定して CodeBuild プロジェクトに渡します。この値は ecs-codepipeline-pre-reqs-KMS テンプレートスタックの出力で利用できます (キー ID はすべてのリージョンで同じで、mrk- で始まります)。または、ツールアカウントから CMKARN 値を取得することもできます。すべてのアカウントセッションでそれらを出力します。 

    export CMKARN1=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN2=arn:aws:kms:eu-central-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMKARN3=arn:aws:kms:us-east-1:<TOOLSACCOUNTID>:key/mrk-xxx export CMARNTOOLS=arn:aws:kms:ap-south-1:<TOOLSACCOUNTID>:key/mrk-xxx
AWS DevOps

ツールアカウントで CodeBuild プロジェクトを設定します。

  1. GitHub リポジトリの code フォルダにある codebuild_IAM.yaml テンプレートを使用して、ツールアカウントの単一リージョンに AWS CodeBuild 用の AWS アイデンティティとアクセス管理 (IAM) を設定します。

    #In ToolsAccount aws cloudformation deploy --stack-name ecs-codebuild-iam \ --template-file codebuild_IAM.yaml --region $TOOLSACCOUNTREGION \ --capabilities CAPABILITY_NAMED_IAM
  2. codebuild.yaml テンプレートを使用して、ビルドプロジェクト用に CodeBuild を設定します。このテンプレートを 3 つのリージョンに次のようにすべてデプロイします。

    aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT1 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN1 \ --template-file codebuild.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN2 \ --template-file codebuild.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name ecscodebuildstack --parameter-overrides ToolsAccount=$TOOLSACCOUNT \ CodeCommitRepoName=$CODECOMMITREPONAME ECRRepositoryName=$ECRREPOSITORYNAME APPACCOUNTID=$TESTACCOUNT3 \ CodeCommitRegion=$CODECOMMITREGION CMKARN=$CMKARN3 \ --template-file codebuild.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

ワークロードアカウントに CodeDeploy を設定します。

GitHub リポジトリの code フォルダにある codedeploy.yaml テンプレートを使用して、3 つのワークロードアカウントにすべて CodeDeploy を設定します。mainInfraStack の出力には、Amazon ECS クラスターの Amazon リソースネーム (ARN) とApplication Load Balancer リスナーが含まれます。

注記

インフラストラクチャスタックの値はエクスポート済みであるため、CodeDeploy スタックテンプレートによってインポートされます。

##WorkloadAccount1## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount2## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM ##WorkloadAccount3## aws cloudformation deploy --stack-name ecscodedeploystack \ --parameter-overrides ToolsAccount=$TOOLSACCOUNT mainInfrastackname=mainInfrastack \ --template-file codedeploy.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps
タスク説明必要なスキル

ツールアカウントにコードパイプラインを作成します。

ツールアカウントで、以下のコマンドを実行します。

aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \ TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \ TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \ CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \ CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \ --template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

AWS KMS キーポリシーと S3 バケットポリシーの CodePipeline と CodeBuild ロールへのアクセスを提供します。

  1. AWS KMS キーポリシーの CodePipeline と CodeBuild ロールへのアクセスを提供します。

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ CodeBuildCondition=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. CodePipeline と CodeDeploy ロールへのアクセスを許可するように S3 バケットポリシーを更新します。

    aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

ツールアカウントで CodeBuild プロジェクトを設定

タスク説明必要なスキル

ツールアカウントにコードパイプラインを作成します。

ツールアカウントで、以下のコマンドを実行します。

aws cloudformation deploy --stack-name ecscodepipelinestack --parameter-overrides \ TestAccount1=$TESTACCOUNT1 TestAccount1Region=$TESTACCOUNT1REGION \ TestAccount2=$TESTACCOUNT2 TestAccount2Region=$TESTACCOUNT2REGION \ TestAccount3=$TESTACCOUNT3 TestAccount3Region=$TESTACCOUNT3REGION \ CMKARNTools=$CMKTROOLSARN CMKARN1=$CMKARN1 CMKARN2=$CMKARN2 CMKARN3=$CMKARN3 \ CodeCommitRepoName=$CODECOMMITREPONAME BucketStartName=$BUCKETSTARTNAME \ --template-file codepipeline.yaml --capabilities CAPABILITY_NAMED_IAM
AWS DevOps

AWS KMS キーポリシーと S3 バケットポリシーの CodePipeline と CodeBuild ロールへのアクセスを提供します。

  1. AWS KMS キーポリシーの CodePipeline と CodeBuild ロールへのアクセスを提供します。

    aws cloudformation deploy --stack-name ecs-codepipeline-pre-reqs-KMS \ --template-file pre-reqs_KMS.yaml --parameter-overrides \ CodeBuildCondition=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT --region $TOOLSACCOUNTREGION
  2. CodePipeline と CodeDeploy ロールへのアクセスを許可するように S3 バケットポリシーを更新します。

    aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT1REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT2REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TESTACCOUNT3REGION --capabilities CAPABILITY_NAMED_IAM aws cloudformation deploy --stack-name pre-reqs-artifacts-bucket --parameter-overrides BucketStartName=$BUCKETSTARTNAME \ PutS3BucketPolicy=true TestAccount1=$TESTACCOUNT1 TestAccount2=$TESTACCOUNT2 \ TestAccount3=$TESTACCOUNT3 CodeCommitAccount=$CODECOMMITACCOUNT ToolsAccount=$TOOLSACCOUNT \ --template-file pre-reqs_bucket.yaml --region $TOOLSACCOUNTREGION --capabilities CAPABILITY_NAMED_IAM
AWS DevOps
タスク説明必要なスキル

変更を CodeCommit リポジトリにプッシュします。

  1. AWS CodeCommit のドキュメント」の説明に従い、codecommitrepoStackgit clone コマンドを使用して作成された CodeCommit リポジトリの子ローンを作成します。

  2. 入力アーティファクトを必要な詳細で更新します。

    • JSON ファイル:このファイルの3 か所にあるファイルの AccountID を更新します。アカウント ID を含む 3 つのファイル名を変更します。

    • YAML ファイル:タスク定義 ARN とバージョンを更新します。アカウント ID を含む 3 つのファイル名を変更します。

  3. index.html ファイルを変更して、ホームページにいくつかの変更を加えます。

  4. 以下のファイルをリポジトリにコピーしてコミットします。

    index.html Dockerfile buildspec.yaml appspec_<accountid>.yaml (3 files - one per account ) taskdef<accountid>.json (3 files - one per account)
  5. パイプラインを起動または再起動し、結果を確認します。

  6. FQDN または DNS を使用してApplication Load Balancer からサービスにアクセスし、更新がデプロイされていることを確認します。

パイプラインを呼び出してテスト

タスク説明必要なスキル

変更を CodeCommit リポジトリにプッシュします。

  1. AWS CodeCommit のドキュメント」の説明に従い、codecommitrepoStackgit clone コマンドを使用して作成された CodeCommit リポジトリの子ローンを作成します。

  2. 入力アーティファクトを必要な詳細で更新します。

    • JSON ファイル:このファイルの3 か所にあるファイルの AccountID を更新します。アカウント ID を含む 3 つのファイル名を変更します。

    • YAML ファイル:タスク定義 ARN とバージョンを更新します。アカウント ID を含む 3 つのファイル名を変更します。

  3. index.html ファイルを変更して、ホームページにいくつかの変更を加えます。

  4. 以下のファイルをリポジトリにコピーしてコミットします。

    index.html Dockerfile buildspec.yaml appspec_<accountid>.yaml (3 files - one per account ) taskdef<accountid>.json (3 files - one per account)
  5. パイプラインを起動または再起動し、結果を確認します。

  6. FQDN または DNS を使用してApplication Load Balancer からサービスにアクセスし、更新がデプロイされていることを確認します。

タスク説明必要なスキル

デプロイされたすべてのリソースをクリーンアップします。

  1. Amazon ECS をゼロインスタンスにスケールダウンします。

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 0
  2. 各アカウントとリージョンのCloudFormation スタックを削除します。

    ##In Tools Account## aws cloudformation delete-stack --stack-name ecscodepipelinestack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name ecs-codepipeline-pre-reqs-KMS --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name codecommitrepoStack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecs-codebuild-iam --region $TOOLSACCOUNTREGION ##NOTE: Artifact buckets will not get deleted if there are artifacts so it has to be emptied manually before deleting.##
    ##In Workload / Test Accounts## ##Account:1## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT1REGION ##Account:2## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT2REGION ##Account:3## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT3REGION ##NOTE: Amazon ECR (web) will not get deleted if the registry still includes images. It can be manually cleaned up if not required.

クリーンアップ

タスク説明必要なスキル

デプロイされたすべてのリソースをクリーンアップします。

  1. Amazon ECS をゼロインスタンスにスケールダウンします。

    aws ecs update-service --cluster QA-Cluster --service Poc-Service --desired-count 0
  2. 各アカウントとリージョンのCloudFormation スタックを削除します。

    ##In Tools Account## aws cloudformation delete-stack --stack-name ecscodepipelinestack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name ecscodebuildstack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name ecs-codepipeline-pre-reqs-KMS --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name codecommitrepoStack --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name pre-reqs-artifacts-bucket --region $TOOLSACCOUNTREGION aws cloudformation delete-stack --stack-name ecs-codebuild-iam --region $TOOLSACCOUNTREGION ##NOTE: Artifact buckets will not get deleted if there are artifacts so it has to be emptied manually before deleting.##
    ##In Workload / Test Accounts## ##Account:1## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT1REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT1REGION ##Account:2## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT2REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT2REGION ##Account:3## aws cloudformation delete-stack --stack-name ecscodedeploystack --region $TESTACCOUNT3REGION aws cloudformation delete-stack --stack-name mainInfrastack --region $TESTACCOUNT3REGION ##NOTE: Amazon ECR (web) will not get deleted if the registry still includes images. It can be manually cleaned up if not required.

トラブルシューティング

問題ソリューション

リポジトリにコミットした変更はデプロイされません。

  • CodeBuild ログに Docker ビルド操作のエラーがないか確認します。CodeBuild の詳細については、「のドキュメント」を参照してください。

  • CodeDeploy のデプロイをチェックして、Amazon ECS のデプロイに問題がないか確認します。

関連リソース

プライバシーサイト規約Cookie の設定
© 2025, Amazon Web Services, Inc. or its affiliates.All rights reserved.