今回作成したビルド定義(buildspec.yml)では、ビルド内で ECR に対してコンテナイメージを Push しているため、CodeBuild のビルドプロジェクトに割り当てた IAM ロールに対して ECR の操作権限を付与する必要があります。
「サービス」から「セキュリティ、ID、およびコンプライアンス」->「IAM」を選択し、左のメニューの「ロール」を選択します。検索ボックスで codebuild
と入力し、先ほど自動作成された IAM ロール codebuild-{ユーザー名}-frontend-build-service-role
を選択します。
「ポリシーをアタッチします」を選択します。
「アクセス権限をアタッチする」画面で、検索ボックスに AmazonEC2ContainerRegistryPowerUser
と入力します。AmazonEC2ContainerRegistryPowerUser
ポリシーが表示されるので、左のチェックボックスにチェックを入れます。
「ポリシーのアタッチ」を選択し、IAM ロールにポリシーをアタッチします。
「サービス」から「開発者用ツール」->「CodePipeline」を選択します。先ほど作成した「{ユーザー名}-ecsdemo-pipeline
」を選択し、「編集」を選択します。
Deploy ステージの「ステージを編集する」を選択し、Deploy アクションの × アイコンの左隣にあるアイコンを選択します。
入力アーティファクトで「追加」を選択し、「SourceArtifact」を追加します。
続けて以下のように設定し、「完了」、「保存」と選択します。
Amazon ECS タスク定義: SourceArtifact
AWS CodeDeploy AppSpec ファイル: SourceArtifact
入力アーティファクトを持つイメージの詳細: BuildArtifact
image
を動的に変更するための情報が記載された入力アーティファクトを指します。タスク定義のプレースホルダー文字: IMAGE1_NAME
「サービス」から「開発者用ツール」->「CodeDeploy」を選択します。左のメニューから「アプリケーション」、「AppECS-{ユーザー名}-fargate-cluster-{ユーザー名}-ecsdemo-frontend」、「DgpECS-{ユーザー名}-fargate-cluster-{ユーザー名}-ecsdemo-frontend」と順に選択し、「編集」を選択します。
ここで、Blue/Green デプロイ時に Green 環境をテストする期間を設けるために以下のように設定します。設定後、「変更の保存」を選択します。
デプロイ設定:
トラフィックの再ルーティング: トラフィックを再ルーティングするタイミングを指定します
0 日間 0 時間 10 分
元のリビジョンの終了:
0 日間 0 時間 10 分
CodePipelineから「{ユーザー名}-ecsdemo-frontend
」を選択し、「変更をリリースする」を選択します。
パイプラインのリリースが始まります。
以下の方法で、デプロイメントの進行状況を CodeDeploy コンソールから確認します。
「デプロイメント」から、最新の「デプロイ ID」を選択します。
ステップ 3 に入ると、右上に「トラフィックの再ルーティング」が表示されます。
ブラウザで、「ALB の DNS 名:9000
」にアクセスし、置換タスク(新しいバージョン)での表示を確認します。
問題があれば「デプロイを停止してロールバック」、なければ「トラフィックの再ルーティング」を選択して、処理を進めます。
オリジナルタスクは設定した 10 分を経過すると削除されます。
置換タスク(新しいバージョン)に何か問題があればロールバックしましょう。
指定した時間分の待機が不要であれば、画面右上の「元のタスクセットの終了」から削除もできます。
ECS コンソール「クラスター」の「サービス」タブからサービス名を選択して「デプロイメント」を表示すると、Blue/Green デプロイメントの状況を確認することもできます。
「イベント」タブでは、タスクの起動/停止や、ターゲットグループに対する登録/登録解除などを確認することができます