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