チュートリアル: Amazon ECR ソースと ECS-to-CodeDeploy deployment を使用してパイプラインを作成する - AWS CodePipeline

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

チュートリアル: Amazon ECR ソースと ECS-to-CodeDeploy deployment を使用してパイプラインを作成する

このチュートリアルでは、Docker イメージをサポートするブルー/グリーン AWS CodePipeline デプロイを使用してコンテナアプリケーションをデプロイするパイプラインを で設定します。Blue/Green デプロイでは、古いバージョンと一緒に新しいバージョンのアプリケーションを起動し、トラフィックを再ルーティングする前に新しいバージョンをテストできます。また、デプロイプロセスをモニタリングし、問題がある場合は迅速にロールバックすることもできます。

注記

このチュートリアルでは、 の Amazon ECS から CodeDeploy Blue/Green へのデプロイアクションについて説明します CodePipeline。で Amazon ECS 標準デプロイアクションを使用するチュートリアルについては CodePipeline、「」を参照してくださいチュートリアル: を使用した Amazon ECS 標準デプロイ CodePipeline

完成したパイプラインは、Amazon ECR などのイメージリポジトリに保存されているイメージへの変更を検出し、 を使用してトラフィックを Amazon ECS クラスター CodeDeploy にルーティングおよびデプロイし、ロードバランサー CodeDeploy はリスナーを使用して、 AppSpec ファイルで指定された更新されたコンテナのポートにトラフィックを再ルーティングします。ロードバランサー、製造リスナー、ターゲットグループ、Amazon ECS アプリケーションが青/緑のデプロイでどのように使用されるかについては、チュートリアル:Amazon ECS サービスのデプロイ を参照してください。

パイプラインは、Amazon ECS タスク定義が保存されている CodeCommitなどのソースロケーションを使用するようにも設定されています。このチュートリアルでは、これらの各 AWS リソースを設定し、各リソースのアクションを含むステージでパイプラインを作成します。

ソースコードが変更されたり、新しいベースイメージが Amazon ECR にアップロードしたときは、継続的デリバリーパイプラインが自動的にコンテナイメージを構築してデプロイします。

このフローでは、次のアーティファクトを使用します。

  • Amazon ECR イメージリポジトリのコンテナ名とリポジトリ URI を指定する Docker イメージファイル。

  • Docker イメージ名、コンテナ名、Amazon ECS サービス名、およびロードバランサーの設定を一覧表示する Amazon ECS タスク定義。

  • Amazon ECS タスク定義ファイルの名前、更新されたアプリケーションのコンテナの名前、および が CodeDeploy本番トラフィックを再ルーティングするコンテナポートを指定する CodeDeploy AppSpec ファイル。デプロイライフサイクルイベントフック中に実行できるオプションのネットワーク設定と Lambda 関数も指定できます。

注記

Amazon ECR イメージリポジトリへの変更をコミットすると、パイプラインソースアクションはそのコミット用に imageDetail.json ファイルを作成します。imageDetail.json ファイルの詳細については、「Amazon ECS Blue/Green デプロイアクション用の imageDetail.json ファイル」を参照してください。

パイプラインを作成または編集し、デプロイステージのソースアーティファクトを更新または指定するときは、使用する最新の名前とバージョンのソースアーティファクトを必ず指してください。パイプラインを設定した後、イメージまたはタスク定義を変更したら、リポジトリ内のソースアーティファクトファイルを更新してから、パイプラインのデプロイステージを編集する必要があります。

前提条件

以下のリソースがすでに作成されている必要があります。

ステップ 1: イメージを作成して Amazon ECR リポジトリにプッシュする

このセクションでは、Docker を使用してイメージを作成し、 を使用して Amazon ECR リポジトリ AWS CLI を作成し、そのイメージをリポジトリにプッシュします。

注記

使用するイメージがすでにある場合、このスキップは省略できます。

イメージを作成するには
  1. Docker がインストールされている Linux インスタンスにサインインします。

    nginx のイメージをプルダウンから選択します。このコマンドは nginx:latest イメージを返します。

    docker pull nginx
  2. docker images を実行します。リストにイメージが表示されます.。

    docker images
Amazon ECR リポジトリを作成してイメージをプッシュするには
  1. イメージを保存する Amazon ECR リポジトリを作成します。出力の repositoryUri を書き留めます。

    aws ecr create-repository --repository-name nginx

    出力:

    { "repository": { "registryId": "aws_account_id", "repositoryName": "nginx", "repositoryArn": "arn:aws:ecr:us-east-1:aws_account_id:repository/nginx", "createdAt": 1505337806.0, "repositoryUri": "aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx" } }
  2. 前のステップの repositoryUri でイメージをタグ付けします。

    docker tag nginx:latest aws_account_id.dkr.ecr.us-east-1.amazonaws.com/nginx:latest
  3. この例に示すように、us-west-2 リージョンと 111122223333 アカウント ID を指定して aws ecr get-login-password コマンドを実行します。

    aws ecr get-login-password --region us-west-2 | docker login --username AWS --password-stdin 111122223333.dkr.ecr.us-west-2.amazonaws.com/nginx
  4. 前のステップの repositoryUri を使用して、Amazon ECR にイメージをプッシュします。

    docker push 111122223333.dkr.ecr.us-east-1.amazonaws.com/nginx:latest

ステップ 2: タスク定義と AppSpec ソースファイルを作成して CodeCommit リポジトリにプッシュする

このセクションでは、Amazon ECS でタスク定義 JSON ファイルを作成します。次に、 用の AppSpec ファイルを作成し CodeDeploy 、Git クライアントを使用してファイルを CodeCommit リポジトリにプッシュします。

イメージのタスク定義を作成するには
  1. 次の内容で、taskdef.json という名前のファイルを作成します。image に、イメージの名前 (例: nginx) を入力します。この値は、パイプラインの実行時に更新されます。

    注記

    タスク定義に指定されている実行ロールに AmazonECSTaskExecutionRolePolicy が含まれていることを確認します。詳細については、Amazon ECS デベロッパーガイドAmazon ECS タスク実行 IAM ロール を参照してください。

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "nginx", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
  2. タスク定義を taskdef.json ファイルに登録します。

    aws ecs register-task-definition --cli-input-json file://taskdef.json
  3. タスク定義が登録されたら、イメージ名を削除して、イメージフィールド名に <IMAGE1_NAME> プレースホルダーが含まれるようにファイルを編集します。

    { "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole", "containerDefinitions": [ { "name": "sample-website", "image": "<IMAGE1_NAME>", "essential": true, "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ] } ], "requiresCompatibilities": [ "FARGATE" ], "networkMode": "awsvpc", "cpu": "256", "memory": "512", "family": "ecs-demo" }
AppSpec ファイルを作成するには
  • AppSpec ファイルは CodeDeploy デプロイに使用されます。オプションのフィールドが含まれるファイルでは、この形式を使用します。

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "task-definition-ARN" LoadBalancerInfo: ContainerName: "container-name" ContainerPort: container-port-number # Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-name-1", "subnet-name-2"] SecurityGroups: ["security-group"] AssignPublicIp: "ENABLED" Hooks: - BeforeInstall: "BeforeInstallHookFunctionName" - AfterInstall: "AfterInstallHookFunctionName" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

    例を含む AppSpec ファイルの詳細については、「ファイルCodeDeploy AppSpec リファレンス」を参照してください。

    次の内容で、appspec.yaml という名前のファイルを作成します。TaskDefinition<TASK_DEFINITION> プレースホルダーテキストは変更しないでください。この値は、パイプラインの実行時に更新されます。

    version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: <TASK_DEFINITION> LoadBalancerInfo: ContainerName: "sample-website" ContainerPort: 80
CodeCommit リポジトリにファイルをプッシュするには
  1. ファイルを CodeCommit リポジトリにプッシュまたはアップロードします。これらのファイルは、 でデプロイアクション用にパイプラインの作成ウィザードによって作成されたソースアーティファクトです CodePipeline。ファイルは、ローカルディレクトリに次のように表示されます。

    /tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
  2. ファイルをアップロードする方法を選択します。

    1. ローカルコンピュータのクローンされたリポジトリから git コマンドを使用するには

      1. ディレクトリをローカルリポジトリに変更する:

        (For Linux, macOS, or Unix) cd /tmp/my-demo-repo (For Windows) cd c:\temp\my-demo-repo
      2. 以下のコマンドを実行して、すべてのファイルを一度にステージングします。

        git add -A
      3. 以下のコマンドを実行して、コミットメッセージによりファイルをコミットします。

        git commit -m "Added task definition files"
      4. 次のコマンドを実行して、ローカルリポジトリから CodeCommit リポジトリにファイルをプッシュします。

        git push
    2. CodeCommit コンソールを使用してファイルをアップロードするには:

      1. CodeCommit コンソールを開き、リポジトリリストからリポジトリを選択します。

      2. [Add file]、[Upload file] の順に選択します。

      3. [Choose file] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[Commit changes] (変更のコミット) を選択します。

      4. アップロードするファイルごとにこのステップを繰り返します。

ステップ 3: Application Load Balancer とターゲットグループを作成する

このセクションでは、Amazon EC2 Application Load Balancer を作成します。後で Amazon ECS サービスを作成するときに、ロードバランサーで作成したサブネット名とターゲットグループ値を使用します。Application Load Balancer または Network Load Balancer を作成できます。ロードバランサーでは、2 つのパブリックサブネットを別々のアベイラビリティーゾーンに持つ VPC を使用する必要があります。以下のステップでは、デフォルト VPC を確認して、ロードバランサーを作成してから、ロードバランサーの 2 つのターゲットグループを作成します。詳細については、「Network Load Balancer のターゲットグループ」を参照してください。

デフォルト VPC とパブリックサブネットを確認するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/vpc/ で Amazon VPC コンソールを開きます。

  2. 使用するデフォルト VPC を確認します。ナビゲーションペインで、[Your VPCs(お使いの VPC)] を選択します。デフォルトのVPC 列に はい と表示されている VPC に注意してください。これがデフォルト VPC です。選択するデフォルトのサブネットが含まれています。

  3. [サブネット] を選択します。デフォルトのサブネット 列に はい と表示されている 2 つのサブネットを選択します。

    注記

    サブネット ID を書き留めます。これらは、このチュートリアルで後ほど必要になります。

  4. サブネットを選択後、[説明] タブを選択します。使用するサブネットが、異なるアベイラビリティーゾーンにあることを確認します。

  5. サブネットを選択後、[Route Table] タブを選択します。使用する各サブネットがパブリックサブネットであることを確認するには、ルートテーブルにゲートウェイ行が含まれていることを確認します。

Amazon EC2 Application Load Balancer を作成するには
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/ec2/ で Amazon EC2 コンソールを開きます。

  2. ナビゲーションペインで、[ロードバランサー] を選択します。

  3. [Create Load Balancer] を選択します。

  4. [Application Load Balancer] を選択し、[Create] を選択します。

  5. [Name] に、ロードバランサーの名前を入力します。

  6. [Scheme] で、[インターネット向け] を選択します。

  7. [IP address type] で、[ipv4] を選択します。

  8. ロードバランサー用に 2 つのリスナーポートを設定するには:

    1. [Load Balancer Protocol (ロードバランサーのプロトコル)] で、[HTTP] を選択します。[Load Balancer Port (ロードバランサーポート)] に [80] を入力します。

    2. [リスナーの追加] を選択します。

    3. 2 番目のリスナーの [Load Balancer Protocol] で、[HTTP] を選択します。[Load Balancer Port (ロードバランサーポート)] に [8080] を入力します。

  9. [アベイラビリティーゾーン] の [VPC] で、デフォルトの VPC を選択します。次に、使用する 2 つのデフォルトサブネットを選択します。

  10. [Next: Configure Security Settings] を選択します。

  11. [Next: Configure Security Groups] を選択します。

  12. [Select an existing security group] を選択し、セキュリティグループ ID を書き留めます。

  13. [Next: Configure Routing] を選択します。

  14. [Target group] で、[New target group] を選択し、最初のターゲットグループを設定します。

    1. [Name] に、ターゲットグループの名前 (例: target-group-1) を入力します。

    2. [Target type] で、[IP] を選択します。

    3. [Protocol] で、[HTTP] を選択します。[Port] に「80」と入力します。

    4. [Next: Register Targets] を選択します。

  15. [Next: Review]、[Create] の順に選択します。

ロードバランサーの 2 番目のターゲットグループを作成するには
  1. ロードバランサーがプロビジョニングされたら、Amazon EC2 コンソールを開きます。ナビゲーションペインで、[ターゲットグループ] を選択します。

  2. [ターゲットグループの作成] を選択します。

  3. [Name] に、ターゲットグループの名前 (例: target-group-2) を入力します。

  4. [Target type] で、[IP] を選択します。

  5. [Protocol] で、[HTTP] を選択します。[Port] に「8080」と入力します。

  6. [VPC] で、デフォルトの VPC を選択します。

  7. [作成] を選択します。

    注記

    デプロイを実行するには、ロードバランサー用に 2 つのターゲットグループを作成する必要があります。最初のターゲットグループの ARN を書き留める必要があります。この ARN は、次のステップの create-service JSON ファイルで使用されます。

2 番目のターゲットグループを含めるようにロードバランサーを更新するには
  1. Amazon EC2 コンソールを開きます。ナビゲーションペインで、[ロードバランサー] を選択します。

  2. ロードバランサーを選択後、[Listeners] を選択します。ポート 8080 のリスナーを選択後、[編集] を選択します。

  3. [Forward to] の横の鉛筆アイコンを選択します。2 番目のターゲットグループを選択してから、チェックマークを選択します。[更新] を選択して、更新を保存します。

ステップ 4: Amazon ECS クラスターとサービスを作成する

このセクションでは、 がデプロイ中に CodeDeploy トラフィックをルーティングする Amazon ECS クラスターとサービス (EC2 インスタンスではなく Amazon ECS クラスター) を作成します。Amazon ECS サービスを作成するには、ロードバランサーで作成したサブネット名、セキュリティグループ、ターゲットグループの値を使用してサービスを作成する必要があります。

注記

これらのステップを使用して Amazon ECS クラスターを作成する場合、Fargate コンテナをプロビジョニング AWS する Networking Only クラスターテンプレートを使用します。 AWS Fargate は、コンテナインスタンスインフラストラクチャを管理するテクノロジーです。Amazon ECS クラスター用の Amazon EC2 インスタンスを手動で選択または作成する必要はありません。

Amazon ECS クラスターを作成するには
  1. Amazon ECS クラシックコンソール (https://console.aws.amazon.com/ecs/) を開きます。

  2. ナビゲーションペインで [クラスター] を選択します。

  3. [クラスターを作成] を選択します。

  4. AWS Fargate を使用する ネットワークのみ クラスターテンプレートを選択後、次のステップ を選択します。

  5. [Configure cluster (クラスターの設定)] ページで、クラスター名を入力します。リソースに任意のタグを追加することができます。[作成] を選択します。

Amazon ECS サービスを作成する

を使用して AWS CLI 、Amazon ECS でサービスを作成します。

  1. JSON ファイルを作成し、create-service.json と名付けます。次の内容を JSON ファイルに貼り付けます。

    taskDefinitionフィールドでは、Amazon ECS にタスク定義を登録するときに、ファミリーを指定します。これは、リビジョン番号で指定された、複数バージョンのタスク定義の名前に似ています。この例では、ファイル内のファミリーとリビジョン番号に「ecs-demo:1」を使用します。ステップ 3: Application Load Balancer とターゲットグループを作成する でロードバランサーを使用して作成したサブネット名、セキュリティグループ、ターゲットグループの値を使用します。

    注記

    ターゲットグループ ARN をこのファイルに含める必要があります。Amazon EC2 コンソールを開き、ナビゲーションペインの ロードバランシングターゲットグループ を選択します。最初のターゲットグループを選択します。[説明] タブから ARN をコピーします。

    { "taskDefinition": "family:revision-number", "cluster": "my-cluster", "loadBalancers": [ { "targetGroupArn": "target-group-arn", "containerName": "sample-website", "containerPort": 80 } ], "desiredCount": 1, "launchType": "FARGATE", "schedulingStrategy": "REPLICA", "deploymentController": { "type": "CODE_DEPLOY" }, "networkConfiguration": { "awsvpcConfiguration": { "subnets": [ "subnet-1", "subnet-2" ], "securityGroups": [ "security-group" ], "assignPublicIp": "ENABLED" } } }
  2. JSON ファイルを指定して、create-service コマンドを実行します。

    重要

    ファイル名の前に必ず file:// を含めてください。このコマンドでは必須です。

    この例では、my-service という名前のサービスが作成されます。

    注記

    このコマンド例では、my-service という名前のサービスを作成します。この名前のサービスがすでにある場合、このコマンドはエラーを返します。

    aws ecs create-service --service-name my-service --cli-input-json file://create-service.json

    出力はサービスの説明フィールドが返ります。

  3. describe-services コマンドを実行して、サービスが作成されたことを確認します。

    aws ecs describe-services --cluster cluster-name --services service-name

ステップ 5: アプリケーションとデプロイグループを作成する CodeDeploy (ECS コンピューティングプラットフォーム)

Amazon ECS コンピューティングプラットフォームの CodeDeploy アプリケーションとデプロイグループを作成すると、アプリケーションはデプロイ中に正しいデプロイグループ、ターゲットグループ、リスナー、トラフィックの再ルーティング動作を参照するために使用されます。

CodeDeploy アプリケーションを作成するには
  1. CodeDeploy コンソールを開き、アプリケーションの作成 を選択します。

  2. [アプリケーション名] に、使用する名前を入力します。

  3. [コンピューティングプラットフォーム] で [Amazon ECS] を選択します。

  4. [Create application] を選択します。

CodeDeploy デプロイグループを作成するには
  1. アプリケーションページの [デプロイグループ] タブで [デプロイグループの作成] を選択します。

  2. [デプロイグループ名] に、デプロイグループを表す名前を入力します。

  3. サービスロール で、Amazon ECS へのアクセスを許可する CodeDeployサービスロールを選択します。新しいサービスロールを作成するには、次の手順を実行します。

    1. https://console.aws.amazon.com/iam/ で IAM コンソール を開きます。

    2. コンソールダッシュボードで [ロール] を選択します。

    3. [ロールを作成] を選択します。

    4. [信頼されたエンティティのタイプを選択] で、[AWS のサービス ] を選択します。ユースケースの選択 で、 を選択しますCodeDeployユースケースの選択 でCodeDeploy - ECS を選択します。[次のステップ: アクセス許可] を選択します。AWSCodeDeployRoleForECS マネージドポリシーはロールにアタッチ済みです。

    5. [次の手順: タグ]、[次の手順: 確認] の順に選択します。

    6. ロールの名前 (例: CodeDeployECSRole) を入力し、[ロールの作成] を選択します。

  4. 環境設定 で、Amazon ECS クラスターの名前とサービス名を選択します。

  5. ロードバランサー から、Amazon ECS サービスにトラフィックを提供するロードバランサーの名前を選択します。

  6. [Production listener port] から、Amazon ECS サービスへの本稼働トラフィックを提供するリスナーのポートとプロトコルを選択します。[Test listener port] で、テストリスナーのポートとプロトコルを選択します。

  7. [Target group 1 name] および [Target group 2 name] から、デプロイ時にトラフィックをルーティングするターゲットグループを選択します。これらが、ロードバランサー用に作成したターゲットグループであることを確認します。

  8. すぐにトラフィックを再ルーティング を選択して、デプロイが成功してから更新された Amazon ECS タスクにトラフィックを再ルーティングするまでの時間を決定します。

  9. デプロイグループの作成 を選択します。

ステップ 6: パイプラインを作成する

このセクションでは、次のアクションを使用してパイプラインを作成します。

  • ソースアーティファクトがタスク定義と AppSpec ファイルである CodeCommit アクション。

  • ソースアーティファクトがイメージファイルである Amazon ECR ソースアクションを持つソースステージ。

  • デプロイが CodeDeploy アプリケーションとデプロイグループで実行される Amazon ECS デプロイアクションを含むデプロイステージ。

ウィザードで 2 ステージパイプラインを作成するには
  1. にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home で CodePipeline コンソールを開きます。

  2. [ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。

  3. [ステップ 1: パイプラインの設定を選択する] の [パイプライン名] に「MyImagePipeline」と入力します。

  4. このチュートリアルの目的では、[パイプラインタイプ] で、[V1] を選択します。[V2] を選択することもできますが、パイプラインタイプは特性と価格が異なることに注意してください。詳細については、「パイプラインのタイプ」を参照してください。

  5. サービスロール で、IAM でサービスロールを作成することを許可する新しいサービスロールを選択します。 CodePipeline

  6. [詳細設定] をデフォルト設定のままにし、[次へ] を選択します。

  7. [Step 2: Add source stage (ステップ 2: ソースステージの追加)] の [ソースプロバイダ] で、[AWS CodeCommit] を選択します。リポジトリ名 で、 で作成したリポジトリの名前 CodeCommitを選択しますステップ 1: CodeCommit リポジトリを作成する。[Branch name] で、最新のコード更新を含むブランチの名前を選択します。

    [次へ] をクリックします。

  8. [Step 3: Add build stage] (ステップ 3: ビルドステージを追加する) で、[Skip build stage] (ビルドステージのスキップ) を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。[次へ] をクリックします。

  9. ステップ 4: デプロイステージを追加する:

    1. [Deploy provider] で、[Amazon ECS (Blue/Green)] を選択します。[アプリケーション名] で、codedeployapp などの、アプリケーションの名前を入力またはリストから選択します。[デプロイグループ] に、codedeploydeplgroup などの、デプロイグループの名前を入力またはリストから選択します。

      注記

      「デプロイ」は、[ステップ 4: デプロイ] ステップで作成されるステージにデフォルトで付けられる名前であり、「ソース」は、パイプラインの最初のステージに付けられる名前です。

    2. Amazon ECS タスク定義 で、 を選択しますSourceArtifact。フィールドに [taskdef.json] と入力します。

    3. AWS CodeDeploy AppSpec ファイル で、 を選択しますSourceArtifact。フィールドに [appspec.yaml] と入力します。

      注記

      この時点では、[Dynamically update task definition image] に情報は入力しないでください。

    4. [次へ] をクリックします。

  10. [ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。

Amazon ECR ソースアクションをパイプラインに追加するには

パイプラインを表示し、Amazon ECR ソースアクションをパイプラインに追加します。

  1. パイプラインを選択します。左上の [Edit] (編集) を選択します。

  2. ソースステージで、[ステージを編集] を選択します。

  3. CodeCommit ソースアクションの横にある + アクションを追加 を選択して、並列アクションを追加します。

  4. [アクション名] に、名前を入力します (例えば、Image)。

  5. [アクションプロバイダ] で [Amazon ECR] を選択します。

    Amazon ECR ソースアクションをパイプラインに追加します。
  6. リポジトリ名 で、Amazon ECR リポジトリの名前を選択します。

  7. [Image tag] で、イメージの名前とバージョンを指定します (最新でない場合)。

  8. 出力アーティファクトで、次のステージで使用するイメージ名およびリポジトリ URI 情報が含まれている出力アーティファクトのデフォルト(例: MyImage)を選択します。

  9. アクション画面で、[Save] を選択します。ステージ画面で、[Done] を選択します。パイプラインで、[Save] を選択します。Amazon ECR ソースアクション用に作成される Amazon CloudWatch Events ルールを示すメッセージが表示されます。

ソースアーティファクトをデプロイアクションに関連付けるには
  1. デプロイステージで 編集 を選択後、アイコンを選択して、Amazon ECS (Blue/Green) アクションを編集します。

  2. ペインの下部までスクロールします。[入力アーティファクト] で [Add] を選択します。新しい Amazon ECR リポジトリ (例: MyImage など) からソースアーティファクトを追加します。

  3. タスク定義 で を選択しSourceArtifacttaskdef.jsonが入力されていることを確認します。

  4. AWS CodeDeploy AppSpec ファイル で を選択しSourceArtifactappspec.yamlが入力されていることを確認します。

  5. 動的に更新するタスク定義イメージ で、Input Artifact with Image URI で を選択しMyImagetaskdef.json ファイルで使用されるプレースホルダーテキストを入力します IMAGE1_NAME[保存] を選択します。

  6. AWS CodePipeline ペインで、パイプライン変更の保存 を選択し、変更の保存 を選択します。更新されたパイプラインを表示します。

    このサンプルパイプラインが作成されると、コンソールエントリのアクション設定が以下のようにパイプライン構造に表示されます。

    "configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
  7. 変更を送信してパイプラインのビルドを開始するには、[変更をリリース][リリース] の順に選択します。

  8. デプロイアクションを選択して表示します。 CodeDeploy また、トラフィックシフトの進行状況を確認します。

    注記

    オプションの待機時間を示すデプロイステップが表示される場合があります。デフォルトでは、 はデプロイが成功してから 1 時間後に CodeDeploy 待機してから、元のタスクセットを終了します。この時間を使用してタスクをロールバックまたは終了することはできますが、それ以外の場合、タスクセットが終了した時点でデプロイは完了します。

ステップ 7: パイプラインに変更を加えてデプロイを確認する

イメージを変更して、その変更を Amazon ECR リポジトリにプッシュします。これにより、パイプラインの実行がトリガーされます。イメージソースの変更がデプロイされていることを確認します。