Amazon Elastic Container Service および CodeDeploy Blue-Green デプロイアクションリファレンス - AWS CodePipeline

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

Amazon Elastic Container Service および CodeDeploy Blue-Green デプロイアクションリファレンス

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

完成したパイプラインはイメージまたはタスク定義ファイルへの変更を検出し、 CodeDeploy を使用してトラフィックを Amazon ECSクラスターにルーティングしてデプロイし、ロードバランサーに新しいリスナー CodeDeploy を作成します。ロードバランサーは、特別なポートを介して新しいタスクをターゲットにできます。Amazon ECSタスク定義が保存されている CodeCommit リポジトリなどのソースロケーションを使用するようにパイプラインを設定することもできます。

パイプラインを作成する前に、Amazon ECSリソース、 CodeDeploy リソース、ロードバランサーとターゲットグループを作成しておく必要があります。イメージにタグを付けてイメージリポジトリに保存し、タスク定義と AppSpec ファイルをファイルリポジトリにアップロードしておく必要があります。

注記

このトピックでは、 の Amazon から CodeDeploy Blue/Green ECSへのデプロイアクションについて説明します CodePipeline。での Amazon ECS標準デプロイアクションのリファレンス情報については CodePipeline、「」を参照してください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 です。タスク定義ファイルが同じ名前で、ファイルリポジトリのルートレベルに保存されている場合は、ファイル名を指定する必要はありません。パスがデフォルトでない場合は、パスとファイル名を入力します。

イメージ<数値>ArtifactName

必須:いいえ

デプロイアクションにイメージを提供する入力アーティファクトの名前。これは通常、Amazon ECRソースアクションからの出力など、イメージリポジトリの出力アーティファクトです。

<Number> に指定できる値は 1 から 4 までです。

イメージ<数値>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 ファイルの詳細については、「imageDetailAmazon ECS Blue/Green デプロイアクション用の .json ファイル」を参照してください。

    CodeDeployToECS アクションは、タスク定義の新しいリビジョンを動的に生成します。このフェーズでは、このアクションにより、タスク定義ファイルのプレースホルダーが imageDetail.json ファイルからURI取得したイメージに置き換えられます。例えば、IMAGE1_NAME を Image1ContainerName パラメータとして設定する場合は、タスク定義ファイルのイメージフィールドの値としてプレースホルダー <IMAGE1_NAME> を指定する必要があります。この場合、 CodeDeployToECS アクションは、Image1 として指定したアーティファクトの imageDetail.json からURI取得した実際のイメージにプレースホルダー <IMAGE1_NAME> を置き換えます。 Image1ArtifactName

    タスク定義の更新の場合、 ファイルには CodeDeploy AppSpec.yaml TaskDefinitionプロパティが含まれます。

    TaskDefinition: <TASK_DEFINITION>

    このプロパティは、新しいタスク定義が作成された後、CodeDeployToECS アクションによって更新されます。

    TaskDefinition フィールドの値の場合、プレースホルダーテキストは <TASK_DEFINITION> である必要があります。CodeDeployToECS アクションは、このプレースホルダーを動的に生成されたタスク定義ARNの実際の に置き換えます。

出力アーティファクト

  • アーティファクトの数: 0

  • 説明: 出力アーティファクトは、このアクションタイプには適用されません。

アクションの宣言

YAML
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
JSON
{ "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 デプロイまでのパイプラインを作成する – このチュートリアルでは、ブルー/グリーンデプロイに必要な CodeDeploy と Amazon ECSリソースの作成手順を説明します。このチュートリアルでは、Docker イメージを Amazon にプッシュECRし、Docker イメージ名、コンテナ名、Amazon ECSサービス名、ロードバランサー設定を一覧表示する Amazon ECSタスク定義を作成する方法を示します。次に、このチュートリアルでは、デプロイ用の AppSpec ファイルとパイプラインを作成する手順を説明します。

    注記

    このトピックとチュートリアルでは、 の CodeDeploy/ECS blue/green アクションについて説明します CodePipeline。のECS標準アクションの詳細については CodePipeline、「チュートリアル: を使用した継続的デプロイ CodePipeline」を参照してください。

  • AWS CodeDeploy ユーザーガイド – ブルー/グリーンデプロイでロードバランサー、本番リスナー、ターゲットグループ、および Amazon ECSアプリケーションを使用する方法については、「チュートリアル: Amazon ECS Service をデプロイする」を参照してください。AWS CodeDeploy ユーザーガイドのこのリファレンス情報は、Amazon ECSおよび を使用した Blue/Green デプロイの概要を示しています AWS CodeDeploy。

  • Amazon Elastic Container Service デベロッパーガイド – Docker イメージとコンテナ、ECSサービス、クラスター、ECSタスクセットの操作については、「Amazon とは」を参照してくださいECS。