翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
チュートリアル: Amazon ECRソースと ECSからCodeDeploy デプロイまでのパイプラインを作成する
このチュートリアルでは、Docker イメージをサポートするブルー/グリーンデプロイを使用して AWS CodePipeline コンテナアプリケーションをデプロイするパイプラインを に設定します。Blue/Green デプロイでは、古いバージョンと一緒に新しいバージョンのアプリケーションを起動し、トラフィックを再ルーティングする前に新しいバージョンをテストできます。また、デプロイプロセスをモニタリングし、問題がある場合は迅速にロールバックすることもできます。
重要
パイプラインの作成の一環として、お客様が提供する S3 アーティファクトバケットがアーティファクト CodePipeline に によって使用されます。(これは S3 ソースアクションに使用されるバケットとは異なります)。S3 アーティファクトバケットがパイプラインのアカウントとは異なるアカウントにある場合は、S3 アーティファクトバケットが によって所有 AWS アカウント されており、安全で信頼できることを確認してください。
注記
このチュートリアルでは、Amazon ECS が の CodeDeploy ブルー/グリーンデプロイアクションについて説明します CodePipeline。で Amazon ECS標準デプロイアクションを使用するチュートリアルについては CodePipeline、「」を参照してくださいチュートリアル: を使用した Amazon ECS 標準デプロイ CodePipeline。
完了したパイプラインは、Amazon などのイメージリポジトリに保存されているイメージへの変更を検出しECR、 を使用してトラフィックを Amazon ECSクラスター CodeDeploy にルーティングおよびデプロイし、ロードバランサーを使用します。 はリスナー CodeDeploy を使用して、 AppSpec ファイルで指定された更新されたコンテナのポートにトラフィックを再ルーティングします。ブルー/グリーンデプロイでロードバランサー、本番リスナー、ターゲットグループ、Amazon ECSアプリケーションがどのように使用されるかについては、「チュートリアル: Amazon ECS Service をデプロイする」を参照してください。
パイプラインは、Amazon ECSタスク定義が保存されている CodeCommitなどのソースロケーションを使用するようにも設定されています。このチュートリアルでは、これらの AWS 各リソースを設定し、各リソースのアクションを含むステージでパイプラインを作成します。
継続的配信パイプラインは、ソースコードが変更されるか、新しいベースイメージが Amazon にアップロードされるたびに、コンテナイメージを自動的に構築してデプロイしますECR。
このフローでは、次のアーティファクトを使用します。
-
Amazon イメージリポジトリURIのコンテナ名とリポジトリを指定する Docker ECRイメージファイル。
-
Docker イメージ名、コンテナ名、Amazon ECSサービス名、ロードバランサー設定を一覧表示する Amazon ECSタスク定義。
-
Amazon ECSタスク定義ファイルの名前、更新されたアプリケーションのコンテナの名前、および本番トラフィックを再ルーティングする CodeDeployコンテナポートを指定する CodeDeploy AppSpec ファイル。デプロイライフサイクルイベントフック中に実行できるオプションのネットワーク設定と Lambda 関数も指定できます。
注記
Amazon ECRイメージリポジトリに変更をコミットすると、パイプラインソースアクションはそのコミット用のimageDetail.json
ファイルを作成します。imageDetail.json
ファイルの詳細については、「imageDetailAmazon ECS Blue/Green デプロイアクションの .json ファイル」を参照してください。
パイプラインを作成または編集し、デプロイステージのソースアーティファクトを更新または指定するときは、使用する最新の名前とバージョンのソースアーティファクトを必ず指してください。パイプラインを設定した後、イメージまたはタスク定義を変更したら、リポジトリ内のソースアーティファクトファイルを更新してから、パイプラインのデプロイステージを編集する必要があります。
トピック
- 前提条件
- ステップ 1: イメージを作成して Amazon ECRリポジトリにプッシュする
- ステップ 2: タスク定義と AppSpec ソースファイルを作成し、 CodeCommit リポジトリにプッシュする
- ステップ 3: Application Load Balancer とターゲットグループを作成する
- ステップ 4: Amazon ECSクラスターとサービスを作成する
- ステップ 5: アプリケーションとデプロイグループを作成する CodeDeploy (ECS コンピューティングプラットフォーム)
- ステップ 6: パイプラインを作成する
- ステップ 7: パイプラインに変更を加えてデプロイを確認する
前提条件
以下のリソースがすでに作成されている必要があります。
-
CodeCommit リポジトリ。で作成した AWS CodeCommit リポジトリを使用できますチュートリアル: シンプルなパイプラインを作成する (CodeCommit リポジトリ)。
-
Amazon EC2 Linux インスタンスを起動し、Docker をインストールして、このチュートリアルに示すようにイメージを作成します。使用するイメージがすでにある場合、この前提条件は省略できます。
ステップ 1: イメージを作成して Amazon ECRリポジトリにプッシュする
このセクションでは、Docker を使用してイメージを作成し、 を使用して Amazon ECRリポジトリ AWS CLI を作成し、そのイメージをリポジトリにプッシュします。
注記
使用するイメージがすでにある場合、このスキップは省略できます。
イメージを作成するには
-
Docker がインストールされている Linux インスタンスにサインインします。
nginx
のイメージをプルダウンから選択します。このコマンドはnginx:latest
イメージを返します。docker pull nginx
-
docker images を実行します。リストにイメージが表示されます.。
docker images
Amazon ECRリポジトリを作成してイメージをプッシュするには
-
イメージを保存する 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" } } -
前のステップの
repositoryUri
でイメージをタグ付けします。docker tag nginx:latest
aws_account_id
.dkr.ecr.us-east-1
.amazonaws.com/nginx:latest -
この例に示すように、
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
-
前のステップ
repositoryUri
の ECRを使用して、Amazon にイメージをプッシュします。docker push 111122223333.dkr.ecr.
us-east-1
.amazonaws.com/nginx:latest
ステップ 2: タスク定義と AppSpec ソースファイルを作成し、 CodeCommit リポジトリにプッシュする
このセクションでは、タスク定義JSONファイルを作成し、Amazon に登録しますECS。次に、 用の AppSpec ファイルを作成し CodeDeploy 、Git クライアントを使用してファイルを CodeCommit リポジトリにプッシュします。
イメージのタスク定義を作成するには
-
次の内容で、
taskdef.json
という名前のファイルを作成します。image
に、イメージの名前 (例: nginx) を入力します。この値は、パイプラインの実行時に更新されます。注記
タスク定義に指定されている実行ロールに
AmazonECSTaskExecutionRolePolicy
が含まれていることを確認します。詳細については、「Amazon デベロッパーガイド」の「Amazon ECSタスク実行IAMロール」を参照してください。 ECS{ "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" } -
タスク定義を
taskdef.json
ファイルに登録します。aws ecs register-task-definition --cli-input-json file://taskdef.json
-
タスク定義が登録されたら、イメージ名を削除して、イメージフィールド名に
<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 リポジトリにプッシュするには
-
ファイルを CodeCommit リポジトリにプッシュまたはアップロードします。これらのファイルは、 でのデプロイアクション用にパイプラインの作成ウィザードによって作成されたソースアーティファクトです CodePipeline。ファイルは、ローカルディレクトリに次のように表示されます。
/tmp |my-demo-repo |-- appspec.yaml |-- taskdef.json
-
ファイルをアップロードする方法を選択します。
-
ローカルコンピュータのクローンされたリポジトリから git コマンドを使用するには
-
ディレクトリをローカルリポジトリに変更する:
(For Linux, macOS, or Unix)
cd /tmp/my-demo-repo(For Windows)
cd c:\temp\my-demo-repo -
以下のコマンドを実行して、すべてのファイルを一度にステージングします。
git add -A
-
以下のコマンドを実行して、コミットメッセージによりファイルをコミットします。
git commit -m "Added task definition files"
-
次のコマンドを実行して、ローカルリポジトリから CodeCommit リポジトリにファイルをプッシュします。
git push
-
-
CodeCommit コンソールを使用してファイルをアップロードするには:
-
CodeCommit コンソールを開き、リポジトリリストからリポジトリを選択します。
-
[Add file]、[Upload file] の順に選択します。
-
[Choose file] を選択し、ファイルを参照します。ユーザー名とメールアドレスを入力して、変更をコミットします。[Commit changes] (変更のコミット) を選択します。
-
アップロードするファイルごとにこのステップを繰り返します。
-
-
ステップ 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とパブリックサブネットを確認するには
にサインイン AWS Management Console し、 で Amazon VPCコンソールを開きますhttps://console.aws.amazon.com/vpc/
。 -
VPC 使用するデフォルトを確認します。ナビゲーションペインで、 VPCsを選択します。デフォルトVPC列に「はいVPC」と表示されていることに注意してください。これはデフォルトの ですVPC。選択するデフォルトのサブネットが含まれています。
-
[サブネット] を選択します。デフォルトのサブネット 列に はい と表示されている 2 つのサブネットを選択します。
注記
サブネット を書き留めますIDs。これらは、このチュートリアルで後ほど必要になります。
-
サブネットを選択後、[説明] タブを選択します。使用するサブネットが、異なるアベイラビリティーゾーンにあることを確認します。
-
サブネットを選択後、[Route Table] タブを選択します。使用する各サブネットがパブリックサブネットであることを確認するには、ルートテーブルにゲートウェイ行が含まれていることを確認します。
Amazon EC2 Application Load Balancer を作成するには
にサインイン AWS Management Console し、 で Amazon EC2コンソールを開きますhttps://console.aws.amazon.com/ec2/
。 -
ナビゲーションペインで、[ロードバランサー] を選択します。
-
[Create Load Balancer] を選択します。
-
[Application Load Balancer] を選択し、[Create] を選択します。
-
[Name] に、ロードバランサーの名前を入力します。
-
[Scheme] で、[インターネット向け] を選択します。
-
[IP address type] で、[ipv4] を選択します。
-
ロードバランサー用に 2 つのリスナーポートを設定するには:
-
Load Balancer Protocol で、 を選択しますHTTP。[Load Balancer Port (ロードバランサーポート)] に [
80
] を入力します。 -
[リスナーの追加] を選択します。
-
2 番目のリスナーのLoad Balancerプロトコルで、 を選択しますHTTP。[Load Balancer Port (ロードバランサーポート)] に [
8080
] を入力します。
-
-
のアベイラビリティーゾーン でVPC、デフォルトの を選択しますVPC。次に、使用する 2 つのデフォルトサブネットを選択します。
-
[Next: Configure Security Settings] を選択します。
-
[Next: Configure Security Groups] を選択します。
-
[Select an existing security group] を選択し、セキュリティグループ ID を書き留めます。
-
[Next: Configure Routing] を選択します。
-
[Target group] で、[New target group] を選択し、最初のターゲットグループを設定します。
-
[Name] に、ターゲットグループの名前 (例:
target-group-1
) を入力します。 -
[Target type] で、[IP] を選択します。
-
プロトコルで を選択しますHTTP。[Port] に「
80
」と入力します。 -
[Next: Register Targets] を選択します。
-
-
[Next: Review]、[Create] の順に選択します。
ロードバランサーの 2 番目のターゲットグループを作成するには
-
ロードバランサーがプロビジョニングされたら、Amazon EC2コンソールを開きます。ナビゲーションペインで、[ターゲットグループ] を選択します。
-
[ターゲットグループの作成] を選択します。
-
[Name] に、ターゲットグループの名前 (例:
target-group-2
) を入力します。 -
[Target type] で、[IP] を選択します。
-
プロトコルで を選択しますHTTP。[Port] に「
8080
」と入力します。 -
でVPC、デフォルトの を選択しますVPC。
-
[Create] (作成) を選択します。
注記
デプロイを実行するには、ロードバランサー用に 2 つのターゲットグループを作成する必要があります。最初のターゲットグループの のみを書き留めARNる必要があります。これはARN、次のステップの
create-service
JSON ファイルで使用されます。
2 番目のターゲットグループを含めるようにロードバランサーを更新するには
-
Amazon EC2コンソールを開きます。ナビゲーションペインで、[ロードバランサー] を選択します。
-
ロードバランサーを選択後、[Listeners] を選択します。ポート 8080 のリスナーを選択後、[編集] を選択します。
-
[Forward to] の横の鉛筆アイコンを選択します。2 番目のターゲットグループを選択してから、チェックマークを選択します。[更新] を選択して、更新を保存します。
ステップ 4: Amazon ECSクラスターとサービスを作成する
このセクションでは、デプロイ中にトラフィックを (EC2インスタンスではなく Amazon ECSクラスターに) CodeDeploy ルーティングする Amazon ECSクラスターとサービスを作成します。Amazon ECSサービスを作成するには、ロードバランサーで作成したサブネット名、セキュリティグループ、ターゲットグループ値を使用してサービスを作成する必要があります。
注記
これらのステップを使用して Amazon ECSクラスターを作成する場合、Fargate コンテナをプロビジョニング AWS する Networking only クラスターテンプレートを使用します。 AWS Fargate は、コンテナインスタンスインフラストラクチャを管理するテクノロジーです。Amazon ECSクラスターの Amazon EC2インスタンスを選択または手動で作成する必要はありません。
Amazon ECSクラスターを作成するには
で Amazon ECS Classic コンソールを開きますhttps://console.aws.amazon.com/ecs/
。 -
ナビゲーションペインで [Clusters] (クラスター) を選択します。
-
[クラスターを作成] を選択します。
-
AWS Fargate を使用する ネットワークのみ クラスターテンプレートを選択後、次のステップ を選択します。
-
[Configure cluster (クラスターの設定)] ページで、クラスター名を入力します。リソースに任意のタグを追加することができます。[Create] (作成) を選択します。
Amazon ECSサービスを作成するには
AWS CLI を使用して、Amazon でサービスを作成しますECS。
-
JSON ファイルを作成し、名前を付けます
create-service.json
。ファイルに以下を貼り付けますJSON。taskDefinition
フィールドでは、タスク定義を Amazon に登録するときにECS、ファミリーを指定します。これは、リビジョン番号で指定された、複数バージョンのタスク定義の名前に似ています。この例では、ファイル内のファミリーとリビジョン番号に「ecs-demo:1
」を使用します。ステップ 3: Application Load Balancer とターゲットグループを作成する でロードバランサーを使用して作成したサブネット名、セキュリティグループ、ターゲットグループの値を使用します。注記
このARNファイルにターゲットグループを含める必要があります。Amazon EC2コンソールを開き、ナビゲーションペインの LOAD BALANCINGでターゲットグループ を選択します。最初のターゲットグループを選択します。説明タブ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" } } } -
create-service コマンドを実行し、 JSON ファイルを指定します。
重要
ファイル名の前に必ず
file://
を含めてください。このコマンドでは必須です。この例では、
my-service
という名前のサービスが作成されます。注記
このコマンド例では、my-service という名前のサービスを作成します。この名前のサービスがすでにある場合、このコマンドはエラーを返します。
aws ecs create-service --service-name my-service --cli-input-json file://create-service.json
出力はサービスの説明フィールドが返ります。
-
describe-services コマンドを実行して、サービスが作成されたことを確認します。
aws ecs describe-services --cluster
cluster-name
--servicesservice-name
ステップ 5: アプリケーションとデプロイグループを作成する CodeDeploy (ECS コンピューティングプラットフォーム)
Amazon ECSコンピューティングプラットフォームの CodeDeploy アプリケーションとデプロイグループを作成すると、アプリケーションはデプロイ中に正しいデプロイグループ、ターゲットグループ、リスナー、トラフィックのルート変更動作を参照するために使用されます。
CodeDeploy アプリケーションを作成するには
-
CodeDeploy コンソールを開き、アプリケーションの作成 を選択します。
-
[アプリケーション名] に、使用する名前を入力します。
-
Compute プラットフォーム で、Amazon ECSを選択します。
-
[Create application] を選択します。
CodeDeploy デプロイグループを作成するには
-
アプリケーションページの [デプロイグループ] タブで [デプロイグループの作成] を選択します。
-
[デプロイグループ名] に、デプロイグループを表す名前を入力します。
-
サービスロール で、Amazon へのアクセスを許可する CodeDeployサービスロールを選択しますECS。新しいサービスロールを作成するには、次の手順を実行します。
-
でIAMコンソールを開きますhttps://console.aws.amazon.com/iam/
)。 -
コンソールダッシュボードで [ロール] を選択します。
-
[ロールの作成] を選択します。
-
[信頼されたエンティティのタイプを選択] で、[AWS のサービス ] を選択します。ユースケースの選択 で、 を選択しますCodeDeploy。ユースケースの選択 で、 CodeDeploy - ECSを選択します。[Next: Permissions] (次へ: アクセス許可) を選択します。
AWSCodeDeployRoleForECS
マネージドポリシーはロールにアタッチ済みです。 -
[次の手順: タグ]、[次の手順: 確認] の順に選択します。
-
ロールの名前 (例:
CodeDeployECSRole
) を入力し、[ロールの作成] を選択します。
-
-
環境設定 で、Amazon ECSクラスター名とサービス名を選択します。
-
ロードバランサー から、Amazon ECSサービスへのトラフィックを提供するロードバランサーの名前を選択します。
-
本番リスナーポート から、Amazon ECSサービスへの本番トラフィックを提供するリスナーのポートとプロトコルを選択します。[Test listener port] で、テストリスナーのポートとプロトコルを選択します。
-
[Target group 1 name] および [Target group 2 name] から、デプロイ時にトラフィックをルーティングするターゲットグループを選択します。これらが、ロードバランサー用に作成したターゲットグループであることを確認します。
-
トラフィックのルーティングをすぐに選択して、デプロイが成功してから更新された Amazon ECSタスクにトラフィックをルーティングする時間を決定します。
-
デプロイグループの作成 を選択します。
ステップ 6: パイプラインを作成する
このセクションでは、次のアクションを使用してパイプラインを作成します。
-
ソースアーティファクトがタスク定義と AppSpec ファイルである CodeCommit アクション。
-
ソースアーティファクトがイメージファイルである Amazon ECRソースアクションを持つソースステージ。
-
Amazon ECSデプロイアクションを含むデプロイステージ。デプロイは CodeDeploy アプリケーションとデプロイグループで実行されます。
ウィザードで 2 ステージパイプラインを作成するには
にサインイン AWS Management Console し、http://console.aws.amazon.com/codesuite/codepipeline/home
で CodePipeline コンソールを開きます。 -
[ようこそ] ページ、[開始方法] ページ、または [パイプライン] ページで、[パイプラインの作成] を選択します。
-
[ステップ 1: パイプラインの設定を選択する] の [パイプライン名] に「
MyImagePipeline
」と入力します。 -
パイプラインタイプ で、V2 を選択します。詳細については、「パイプラインのタイプ」を参照してください。[Next (次へ)] を選択します。
-
サービスロール で、 CodePipeline でサービスロールの作成を許可する新しいサービスロールを選択しますIAM。
-
[詳細設定] をデフォルト設定のままにし、[次へ] を選択します。
-
[Step 2: Add source stage (ステップ 2: ソースステージの追加)] の [ソースプロバイダ] で、[AWS CodeCommit] を選択します。リポジトリ名 で CodeCommit、 で作成したリポジトリの名前を選択しますステップ 1: CodeCommit リポジトリを作成する。[Branch name] で、最新のコード更新を含むブランチの名前を選択します。
[Next (次へ)] を選択します。
-
[Step 3: Add build stage] (ステップ 3: ビルドステージを追加する) で、[Skip build stage] (ビルドステージのスキップ) を選択し、もう一度 [スキップ] を選択して警告メッセージを受け入れます。[Next (次へ)] を選択します。
-
ステップ 4: デプロイステージを追加する:
-
デプロイプロバイダー で、Amazon ECS (ブルー/グリーン) を選択します。[アプリケーション名] で、
codedeployapp
などの、アプリケーションの名前を入力またはリストから選択します。[デプロイグループ] に、codedeploydeplgroup
などの、デプロイグループの名前を入力またはリストから選択します。注記
「デプロイ」は、[ステップ 4: デプロイ] ステップで作成されるステージにデフォルトで付けられる名前であり、「ソース」は、パイプラインの最初のステージに付けられる名前です。
-
Amazon ECSタスク定義 で、 を選択しますSourceArtifact。フィールドに [
taskdef.json
] と入力します。 -
AWS CodeDeploy AppSpec ファイル で、 を選択しますSourceArtifact。フィールドに [
appspec.yaml
] と入力します。注記
この時点では、[Dynamically update task definition image] に情報は入力しないでください。
-
[Next (次へ)] を選択します。
-
-
[ステップ 5: 確認] で情報を確認し、[パイプラインの作成] を選択します。
Amazon ECRソースアクションをパイプラインに追加するには
パイプラインを表示し、Amazon ECRソースアクションをパイプラインに追加します。
-
パイプラインを選択します。左上の [Edit] (編集) を選択します。
-
ソースステージで、[ステージを編集] を選択します。
-
CodeCommit ソースアクションの横にある + 追加アクションを選択して、並列アクションを追加します。
-
[Action name] (アクション名) に、名前を入力します (例:
Image
)。 -
アクションプロバイダー で、Amazon ECRを選択します。
-
リポジトリ名 で、Amazon ECRリポジトリの名前を選択します。
-
[Image tag] で、イメージの名前とバージョンを指定します (最新でない場合)。
-
出力アーティファクト で、次のステージで使用するイメージ名とリポジトリURI情報を含む出力アーティファクトのデフォルト ( など
MyImage
) を選択します。 -
アクション画面で、[Save] を選択します。ステージ画面で、[Done] を選択します。パイプラインで、[Save] を選択します。Amazon ECRソースアクション用に作成する Amazon CloudWatch Events ルールを示すメッセージが表示されます。
ソースアーティファクトをデプロイアクションに関連付けるには
-
デプロイステージで編集を選択し、アイコンを選択して Amazon ECS (ブルー/グリーン) アクションを編集します。
-
ペインの下部までスクロールします。[入力アーティファクト] で [Add] を選択します。新しい Amazon ECRリポジトリ ( など
MyImage
) からソースアーティファクトを追加します。 -
タスク定義 で を選択しSourceArtifact、
taskdef.json
が入力されていることを確認します。 -
AWS CodeDeploy AppSpec ファイル で を選択しSourceArtifact、
appspec.yaml
が入力されていることを確認します。 -
タスク定義イメージ を動的に更新し、Input Artifact with Image URIで を選択しMyImage、
taskdef.json
ファイルで使用されるプレースホルダーテキストを入力しますIMAGE1_NAME
。[Save] を選択します。 -
AWS CodePipeline ペインで、パイプライン変更の保存 を選択し、変更の保存 を選択します。更新されたパイプラインを表示します。
このサンプルパイプラインが作成されると、コンソールエントリのアクション設定が以下のようにパイプライン構造に表示されます。
"configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact", "TaskDefinitionTemplatePath": "taskdef.json", "ApplicationName": "codedeployapp", "DeploymentGroupName": "codedeploydeplgroup", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME" },
-
変更を送信してパイプラインのビルドを開始するには、[変更をリリース]、[リリース] の順に選択します。
-
デプロイアクションを選択して表示 CodeDeploy し、トラフィックシフトの進行状況を確認します。
注記
オプションの待機時間を示すデプロイステップが表示される場合があります。デフォルトでは、 はデプロイが成功してから 1 時間後に CodeDeploy 待機し、元のタスクセットは終了します。この時間を使用してタスクをロールバックまたは終了することはできますが、それ以外の場合、タスクセットが終了した時点でデプロイは完了します。
ステップ 7: パイプラインに変更を加えてデプロイを確認する
イメージを変更し、Amazon ECRリポジトリに変更をプッシュします。これにより、パイプラインの実行がトリガーされます。イメージソースの変更がデプロイされていることを確認します。