翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Blue/Green デプロイを使用してコンテナアプリケーションをデプロイ AWS CodePipeline するパイプラインを で設定できます。Blue/Green デプロイでは、古いバージョンと一緒に新しいバージョンのアプリケーションを起動し、トラフィックを再ルーティングする前に新しいバージョンをテストできます。また、デプロイプロセスをモニタリングし、問題がある場合は迅速にロールバックすることもできます。
完成したパイプラインは、イメージまたはタスク定義ファイルの変更を検出し、CodeDeploy を使用して Amazon ECS クラスターとロードバランサーにトラフィックをルーティングしてデプロイします。CodeDeploy は、特別なポートを介して新しいタスクをターゲットにできる新しいリスナーをロードバランサーに作成します。また、Amazon ECS タスク定義が保存されている CodeCommit リポジトリなどのソース場所を使用するようにパイプラインを設定することもできます。
パイプラインを作成する前に、Amazon ECS リソース、CodeDeploy リソース、ロードバランサーとターゲットグループをすでに作成しておく必要があります。イメージリポジトリにイメージにタグを付けて保存し、タスク定義と AppSpec ファイルをファイルリポジトリにアップロードしておく必要があります。
注記
このトピックでは、CodePipeline の Amazon ECS から CodeDeploy Blue/Green デプロイアクションについて説明します。CodePipeline での Amazon ECS 標準デプロイアクションの詳細については、「Amazon Elastic Container Service デプロイアクションリファレンス」を参照してください。
アクションタイプ
-
カテゴリ:
Deploy
-
所有者:
AWS
-
プロバイダー:
CodeDeployToECS
-
バージョン:
1
設定パラメータ
- ApplicationName
-
必須: はい
CodeDeploy 内のアプリケーションの名前。パイプラインを作成する前に、CodeDeploy でアプリケーションをすでに作成しておく必要があります。
- DeploymentGroupName
-
必須: はい
CodeDeploy アプリケーション用に作成した Amazon ECS タスクセットに指定されているデプロイグループ。パイプラインを作成する前に、CodeDeploy でデプロイグループをすでに作成しておく必要があります。
- TaskDefinitionTemplateArtifact
-
必須: はい
デプロイアクションにタスク定義ファイルを提供する入力アーティファクトの名前。これは通常、ソースアクションからの出力アーティファクトの名前です。コンソールを使用する場合、ソースアクションの出力アーティファクトのデフォルト名は
SourceArtifact
になります。 - AppSpectemplateArtifact
-
必須: はい
デプロイアクションに AppSpec ファイルを提供する入力アーティファクトの名前。この値は、パイプラインの実行時に更新されます。これは通常、ソースアクションからの出力アーティファクトの名前です。コンソールを使用する場合、ソースアクションの出力アーティファクトのデフォルト名は
SourceArtifact
になります。AppSpec ファイル内のTaskDefinition
では、こちらに示されているように<TASK_DEFINITION>
プレースホルダーテキストを使用できます。 - AppSpecTemplatePath
-
必須: いいえ
パイプラインの CodeCommit リポジトリなど、パイプラインのソースファイルのロケーションに保存されている AppSpec ファイルのファイル名。デフォルトのファイル名は
appspec.yaml
です。AppSpec ファイルが同じ名前で、ファイルリポジトリのルートレベルに保存されている場合は、ファイル名を指定する必要はありません。パスがデフォルトでない場合は、パスとファイル名を入力します。 - TaskDefinitionTemplatePath
-
必須: いいえ
パイプラインの CodeCommit リポジトリなど、パイプラインのファイルソースのロケーションに保存されているタスク定義のファイル名。デフォルトのファイル名は
taskdef.json
です。タスク定義ファイルが同じ名前で、ファイルリポジトリのルートレベルに保存されている場合は、ファイル名を指定する必要はありません。パスがデフォルトでない場合は、パスとファイル名を入力します。 - イメージ<Number>ArtifactName
-
必須: いいえ
デプロイアクションにイメージを提供する入力アーティファクトの名前。これは一般に、Amazon ECR ソースアクションからの出力など、イメージリポジトリの出力アーティファクトです。
<Number>
に指定できる値は 1 から 4 までです。 - イメージ<Number>ContainerName
-
必須: いいえ
Amazon ECR ソースリポジトリなど、イメージリポジトリから使用可能なイメージの名前。
<Number>
に指定できる値は 1 から 4 までです。
入力アーティファクト
-
アーティファクトの数:
1 to 5
-
説明:
CodeDeployToECS
アクションは、最初にソースファイルリポジトリ内のタスク定義ファイルと AppSpec ファイルを検索し、次にイメージリポジトリ内のイメージを検索し、タスク定義の新しいリビジョンを動的に生成し、最後に AppSpec コマンドを実行してタスクセットとコンテナをクラスターにデプロイします。CodeDeployToECS
アクションは、イメージ URI をイメージにマップするimageDetail.json
ファイルを検索します。Amazon ECR イメージリポジトリへの変更をコミットすると、ECR ソースアクションのパイプラインはそのコミット用にimageDetail.json
ファイルを作成します。アクションが自動化されていないパイプラインの場合、手動でimageDetail.json
ファイルを追加することもできます。imageDetail.json
ファイルの詳細については、「Amazon ECS Blue/Green デプロイアクション用の imageDetail.json ファイル」を参照してください。CodeDeployToECS
アクションは、タスク定義の新しいリビジョンを動的に生成します。このフェーズでは、このアクションがタスク定義ファイル内のプレースホルダーを、imageDetail.json ファイルから取得したイメージ URI に置き換えます。例えば、IMAGE1_NAME を Image1ContainerName パラメータとして設定する場合、タスク定義ファイルのイメージフィールドの値としてプレースホルダー <IMAGE1_NAME> を指定する必要があります。この場合、CodeDeployToECS アクションはプレースホルダー <IMAGE1_NAME> を、Image1ArtifactName として指定したアーティファクト内の imageDetail.json から取得した実際のイメージ URI に置き換えます。タスク定義の更新では、CodeDeploy の
AppSpec.yaml
ファイルにTaskDefinition
プロパティを含めます。TaskDefinition: <TASK_DEFINITION>
このプロパティは、新しいタスク定義が作成された後、
CodeDeployToECS
アクションによって更新されます。TaskDefinition
フィールドの値として、プレースホルダーテキストは <TASK_DEFINITION> である必要があります。CodeDeployToECS
アクションは、このプレースホルダーを、動的に生成されたタスク定義の実際の ARN に置き換えます。
出力アーティファクト
-
アーティファクトの数:
0
-
説明: 出力アーティファクトは、このアクションタイプには適用されません。
アクションの宣言
Name: Deploy
Actions:
- Name: Deploy
ActionTypeId:
Category: Deploy
Owner: AWS
Provider: CodeDeployToECS
Version: '1'
RunOrder: 1
Configuration:
AppSpecTemplateArtifact: SourceArtifact
ApplicationName: ecs-cd-application
DeploymentGroupName: ecs-deployment-group
Image1ArtifactName: MyImage
Image1ContainerName: IMAGE1_NAME
TaskDefinitionTemplatePath: taskdef.json
AppSpecTemplatePath: appspec.yaml
TaskDefinitionTemplateArtifact: SourceArtifact
OutputArtifacts: []
InputArtifacts:
- Name: SourceArtifact
- Name: MyImage
Region: us-west-2
Namespace: DeployVariables
関連情報
このアクションを利用する際に役立つ関連リソースは以下の通りです。
-
チュートリアル: Amazon ECR ソース、ECS - CodeDeploy 間のデプロイでパイプラインを作成する - このチュートリアルでは、Blue/Green のデプロイに必要な CodeDeploy リソースと Amazon ECS リソースの作成を順を追って説明します。このチュートリアルでは、Docker イメージを Amazon ECR にプッシュし、Docker イメージ名、コンテナ名、Amazon ECS サービス名、およびロードバランサーの設定を一覧表示する Amazon ECS タスク定義を作成する方法について説明します。このチュートリアルでは、デプロイ用の AppSpec ファイルとパイプラインの作成について順を追って説明します。
注記
このトピックとチュートリアルでは、CodePipeline の CodeDeploy および ECS Blue/Green アクションについて説明します。CodePipeline の ECS 標準アクションの詳細については、「チュートリアル: CodePipeline を使用した継続的デプロイ」を参照してください。
-
AWS CodeDeploy ユーザーガイド – Blue/Green デプロイでロードバランサー、本番リスナー、ターゲットグループ、Amazon ECS アプリケーションを使用する方法については、「チュートリアル: Amazon ECS サービスをデプロイする」を参照してください。AWS CodeDeploy ユーザーガイドのこのリファレンス情報は、Amazon ECS および を使用した Blue/Green デプロイの概要を示しています AWS CodeDeploy。
-
Amazon Elastic Container Service デベロッパーガイド - Docker イメージとコンテナ、ECS サービスとクラスター、および ECS タスクセットの操作については、「Amazon ECS とは」を参照してください。