IAM ロールの設定とパイプライン設定の編集

今回作成したビルド定義(buildspec.yml)では、ビルド内で ECR に対してコンテナイメージを Push しているため、CodeBuild のビルドプロジェクトに割り当てた IAM ロールに対して ECR の操作権限を付与する必要があります。

作業手順

IAM ロールへのポリシーのアタッチ

  1. 「サービス」から「セキュリティ、ID、およびコンプライアンス」->「IAM」を選択し、左のメニューの「ロール」を選択します。検索ボックスで codebuild と入力し、先ほど自動作成された IAM ロール codebuild-{ユーザー名}-frontend-build-service-role を選択します。

    1

  2. 「ポリシーをアタッチします」を選択します。

  3. 「アクセス権限をアタッチする」画面で、検索ボックスに AmazonEC2ContainerRegistryPowerUser と入力します。AmazonEC2ContainerRegistryPowerUser ポリシーが表示されるので、左のチェックボックスにチェックを入れます。

    2

  4. 「ポリシーのアタッチ」を選択し、IAM ロールにポリシーをアタッチします。

CodePipeline の設定編集

  1. 「サービス」から「開発者用ツール」->「CodePipeline」を選択します。先ほど作成した「{ユーザー名}-ecsdemo-pipeline」を選択し、「編集」を選択します。

  2. Deploy ステージの「ステージを編集する」を選択し、Deploy アクションの × アイコンの左隣にあるアイコンを選択します。

    • × アイコンは押さないでください。

    4

  3. 入力アーティファクトで「追加」を選択し、「SourceArtifact」を追加します。

    5

  4. 続けて以下のように設定し、「完了」、「保存」と選択します。

    • Amazon ECS タスク定義: SourceArtifact

    • AWS CodeDeploy AppSpec ファイル: SourceArtifact

    • 入力アーティファクトを持つイメージの詳細: BuildArtifact

      • これは、タスク定義の image を動的に変更するための情報が記載された入力アーティファクトを指します。
    • タスク定義のプレースホルダー文字: IMAGE1_NAME

    6

CodeDeploy の設定編集

  1. 「サービス」から「開発者用ツール」->「CodeDeploy」を選択します。左のメニューから「アプリケーション」、「AppECS-{ユーザー名}-fargate-cluster-{ユーザー名}-ecsdemo-frontend」、「DgpECS-{ユーザー名}-fargate-cluster-{ユーザー名}-ecsdemo-frontend」と順に選択し、「編集」を選択します。

  2. ここで、Blue/Green デプロイ時に Green 環境をテストする期間を設けるために以下のように設定します。設定後、「変更の保存」を選択します。

    • デプロイ設定:

      • トラフィックの再ルーティング: トラフィックを再ルーティングするタイミングを指定します

      • 0 日間 0 時間 10 分

    • 元のリビジョンの終了:

      • 0 日間 0 時間 10 分

    8

実装の確認

パイプラインの実行

  1. CodePipelineから「{ユーザー名}-ecsdemo-frontend」を選択し、「変更をリリースする」を選択します。

  2. パイプラインのリリースが始まります。

デプロイ状況の確認

  1. 以下の方法で、デプロイメントの進行状況を CodeDeploy コンソールから確認します。

    1. 「デプロイメント」から、最新の「デプロイ ID」を選択します。

    2. ステップ 3 に入ると、右上に「トラフィックの再ルーティング」が表示されます。

    3. ブラウザで、「ALB の DNS 名:9000」にアクセスし、置換タスク(新しいバージョン)での表示を確認します。

    4. 問題があれば「デプロイを停止してロールバック」、なければ「トラフィックの再ルーティング」を選択して、処理を進めます。

    10

デプロイ時の挙動の確認

  • オリジナルタスクは設定した 10 分を経過すると削除されます。

  • 置換タスク(新しいバージョン)に何か問題があればロールバックしましょう。

  • 指定した時間分の待機が不要であれば、画面右上の「元のタスクセットの終了」から削除もできます。

    11

  • ECS コンソール「クラスター」の「サービス」タブからサービス名を選択して「デプロイメント」を表示すると、Blue/Green デプロイメントの状況を確認することもできます。

  • 「イベント」タブでは、タスクの起動/停止や、ターゲットグループに対する登録/登録解除などを確認することができます