CodePipeline
ユーザーガイド (API バージョン 2015-07-09)

CodePipeline でクロスリージョンアクションを追加する

AWS CodePipeline には、自動リリースプロセスのビルド、テスト、およびデプロイリソースの設定に役立つ複数のアクションが含まれています。パイプラインとは異なる AWS リージョン内にあるアクションをパイプラインに追加できます。AWS のサービスがアクションプロバイダーであり、このアクションタイプ/プロバイダータイプがパイプラインとは異なる AWS リージョンにある場合、これはクロスリージョンアクションです。

注記

CodePipeline のアクションタイプによっては、特定の AWS リージョン以外では使用できない場合があります。また、アクションタイプを使用できても、そのアクションタイプの特定の AWS プロバイダーを使用できない AWS リージョンもあり得ることに注意してください。

パイプラインにクロスリージョンアクションを追加するには、コンソール、AWS CLI、または AWS CloudFormation を使用できます。

コンソールを使用してパイプラインまたはクロスリージョンアクションを作成する場合は、アクションの作成先のリージョンにデフォルトのアーティファクトバケットが CodePipeline によって設定されます。AWS CLI、AWS CloudFormation、または SDK を使用してパイプラインまたはクロスリージョンアクションを作成する場合は、アクションの作成先のリージョンごとにアーティファクトバケットを指定します。

注記

アーティファクトバケットと暗号化キーは、クロスリージョンアクションと同じ AWS リージョンで、パイプラインと同じアカウントで作成する必要があります。

以下のアクションタイプのクロスリージョンアクションは作成できません。

  • ソースアクション

  • サードパーティーアクション

  • カスタムアクション

パイプラインに含まれているクロスリージョンアクションがステージの一部である場合、CodePipeline はクロスリージョンアクションの入力アーティファクトのみを、アクションのリージョンにレプリケートします。

注記

パイプラインリージョンと CloudWatch イベント 変更検出リソースが保持されているリージョンは同じままです。パイプラインがホストされているリージョンは変わりません。

パイプラインのクロスリージョンアクションを管理する (コンソール)

CodePipeline コンソールを使用して既存のパイプラインにクロスリージョンアクションを追加できます。[パイプラインの作成] ウィザードを使用してクロスリージョンアクションを持つ新しいパイプラインを作成するには、「パイプラインの作成 (コンソールの場合)」を参照してください。

コンソールでパイプラインステージのクロスリージョンアクションを作成するには、アクションプロバイダーと、このプロバイダーのリージョンで作成したリソースを一覧表示する [リージョン] フィールドを選択します。クロスリージョンアクションを追加すると、CodePipeline は、このアクションのリージョンで別のアーティファクトバケットを使用します。クロスリージョンのアーティファクトバケットの詳細については、「CodePipeline パイプライン構造のリファレンス」を参照してください。

パイプラインステージにクロスリージョンアクションを追加する (コンソール)

コンソールを使用してパイプラインにクロスリージョンアクションを追加します。

注記

変更を保存する際にパイプラインが実行中の場合、その実行は完了しません。

クロスリージョンアクションを追加するには

  1. コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home) にサインインします。

  2. パイプラインを選択し、[編集] を選択します。

  3. 図の下部で、新しいステージを追加する場合は [+ Add stage (+ ステージの追加)] を選択します。既存のステージにアクションを追加する場合は、[Edit stage (ステージの編集)] を選択します。

  4. [Edit: <Stage> (編集: <ステージ>)] で、シリアルアクションを追加する場合は [+ Add action group (+ アクショングループの追加)] を選択します。または、パラレルアクションを追加する場合は、[+Add action (+アクションの追加)] を追加します。

  5. [アクションの編集] ページで、以下の操作を行います。

    1. [アクション名] に、クロスリージョンアクションの名前を入力します。

    2. [Action provider (アクションプロバイダー)] で、アクションプロバイダーを選択します。

    3. [リージョン] で、アクションのリソースを作成した、または作成する予定の AWS リージョンを選択します。リージョンを選択すると、このリージョンで使用できるリソースが一覧表示されて選択できるようになります。[リージョン] フィールドは、このアクションタイプとプロバイダータイプに対して作成済みの AWS リソースの場所を示します。このフィールドには、アクションプロバイダが AWS のサービスであるアクションのみが表示されます。[リージョン] フィールドは、デフォルトで、パイプラインと同じ AWS リージョンになります。

    4. [入力アーティファクト] で、前のステージからの適切な入力を選択します。たとえば、前のステージがソースステージである場合は、[SourceArtifact] を選択します。

    5. 設定するアクションプロバイダーのすべての必須フィールドに入力します。

    6. [出力アーティファクト] で、次のステージへの適切な出力を選択します。たとえば、次のステージがデプロイステージである場合は、[BuildArtifact] を選択します。

    7. [保存] を選択します。

  6. [Edit: <Stage> (編集: <ステージ>)] で、完了] を選択します。

  7. [保存] を選択します。

パイプラインステージのクロスリージョンアクションを編集する (コンソール)

コンソールを使用してパイプラインの既存のクロスリージョンアクションを編集します。

注記

変更を保存する際にパイプラインが実行中の場合、その実行は完了しません。

クロスリージョンアクションを編集するには

  1. コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home.) にサインインします。

  2. パイプラインを選択し、[編集] を選択します。

  3. [Edit stage (ステージの編集)] を選択します。

  4. [Edit: <Stage> (編集: <ステージ>)] で、既存のアクションを編集するためのアイコンを選択します。

  5. [アクションの編集] ページで、必要に応じてフィールドを変更します。

  6. [Edit: <Stage> (編集: <ステージ>)] で、完了] を選択します。

  7. [Save] を選択します。

パイプラインステージからクロスリージョンアクションを削除する (コンソール)

コンソールを使用してパイプラインから既存のクロスリージョンアクションを削除します。

注記

変更を保存する際にパイプラインが実行中の場合、その実行は完了しません。

クロスリージョンアクションを削除するには

  1. コンソール (http://console.aws.amazon.com/codesuite/codepipeline/home) にサインインします。

  2. パイプラインを選択し、[編集] を選択します。

  3. [Edit stage (ステージの編集)] を選択します。

  4. [Edit: <Stage> (編集: <ステージ>)] で、既存のアクションを削除するためのアイコンを選択します。

  5. [Edit: <Stage> (編集: <ステージ>)] で、完了] を選択します。

  6. [Save] を選択します。

パイプラインにクロスリージョンアクションを追加する (CLI)

AWS CLI を使用して既存のパイプラインにクロスリージョンアクションを追加できます。

AWS CLI を使用してパイプラインステージのクロスリージョンアクションを作成するには、設定アクションとオプションの region フィールドを追加します。また、アクションのリージョンにアーティファクトバケットを作成しておく必要があります。単一リージョンパイプラインの artifactStore パラメータを指定する代わりに、artifactStores パラメータを使用して各リージョンのアーティファクトバケットのリストを含めます。

注記

このチュートリアルおよびその例では、RegionA がパイプラインの作成先のリージョンです。このアカウントでは、Amazon S3 の RegionA バケットにアクセスして、CodePipeline によって使用されるパイプラインアーティファクトおよびサービスロールを保存することができます。RegionB は、CodeDeploy アプリケーション、デプロイグループ、および CodeDeploy で使用されるサービスロールが作成されるリージョンです。

前提条件

以下を作成しておく必要があります。

  • RegionA のパイプライン。

  • RegionB の Amazon S3 アーティファクトバケット。

  • RegionB でのアクション用のリソース (クロスリージョンデプロイアクション用の CodeDeploy アプリケーションおよびデプロイグループなど)。

パイプラインにクロスリージョンアクションを追加する (CLI)

AWS CLI を使用してクロスリージョンアクションをパイプラインに追加します。

クロスリージョンアクションを追加するには

  1. RegionA のパイプラインで、get-pipeline コマンドを実行し、パイプライン構造を JSON ファイルにコピーします。たとえば、MyFirstPipeline という名前のパイプラインに対して、以下のコマンドを実行します。

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json

    このコマンドは何も返しませんが、作成したファイルは、コマンドを実行したディレクトリにあります。

  2. region フィールドを追加して、アクションのリージョンとリソースを含むクロスリージョンアクションを持つ新しいステージを追加します。次の JSON サンプルは、プロバイダーを CodeDeploy とするクロスリージョンデプロイアクションを持つデプロイステージを、新しいリージョン us-east-1 に追加します。

    { "name": "Deploy", "actions": [ { "inputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Deploy", "region": "RegionB", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "name", "DeploymentGroupName": "name" }, "runOrder": 1 }
  3. パイプライン構造で artifactStore フィールドを削除し、新しいクロスリージョンアクションの artifactStores を追加します。マッピングには、アクションがある AWS リージョンごとにエントリを含める必要があります。マッピングのエントリごとに、リソースはそれぞれの AWS リージョンにある必要があります。以下の例で、ID-A は、RegionA は暗号化キー ID、ID-B は、RegionB の暗号化キー ID を表します。

    "artifactStores":{ "RegionA":{ "encryptionKey":{ "id":"ID-A", "type":"KMS" }, "location":"Location1", "type":"S3" }, "RegionB":{ "encryptionKey":{ "id":"ID-B", "type":"KMS" }, "location":"Location2", "type":"S3" } }

    以下の JSON 例では、us-west-2 バケットは my-storage-bucket と表示されており、my-storage-bucket-us-east-1 という名前の新しい us-east-1 バケットを追加します。

    "artifactStores": { "us-west-2": { "type": "S3", "location": "my-storage-bucket" }, "us-east-1": { "type": "S3", "location": "my-storage-bucket-us-east-1" } },
  4. get-pipeline コマンドを使用して取得したパイプライン構造を使用している場合、JSON ファイルから metadata 行を削除します。それ以外の場合は、update-pipeline コマンドで使用することはできません。"metadata": { } 行と、"created""pipelineARN""updated" フィールドを削除します。

    たとえば、構造から以下の行を削除します。

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    ファイルを保存します。

  5. 変更を適用するには、パイプライン JSON ファイルを指定して、update-pipeline コマンドを実行します。

    重要

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

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    このコマンドは、編集したパイプラインの構造全体を返します。出力は次の例のようになります。

    { "pipeline": { "version": 4, "roleArn": "ARN", "stages": [ { "name": "Source", "actions": [ { "inputArtifacts": [], "name": "Source", "actionTypeId": { "category": "Source", "owner": "AWS", "version": "1", "provider": "CodeCommit" }, "outputArtifacts": [ { "name": "SourceArtifact" } ], "configuration": { "PollForSourceChanges": "false", "BranchName": "master", "RepositoryName": "MyTestRepo" }, "runOrder": 1 } ] }, { "name": "Deploy", "actions": [ { "inputArtifacts": [ { "name": "SourceArtifact" } ], "name": "Deploy", "region": "us-east-1", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "name", "DeploymentGroupName": "name" }, "runOrder": 1 } ] } ], "name": "AnyCompanyPipeline", "artifactStores": { "us-west-2": { "type": "S3", "location": "my-storage-bucket" }, "us-east-1": { "type": "S3", "location": "my-storage-bucket-us-east-1" } } } }

    注記

    update-pipeline コマンドは、パイプラインを停止します。update-pipeline コマンドを実行したときにパイプラインによりリビジョンが実行されている場合、その実行は停止します。更新されたパイプラインによりそのリビジョンを実行するには、パイプラインを手動で開始する必要があります。パイプラインを手動で開始するには start-pipeline-execution コマンドを使用します。

  6. パイプラインを更新したら、クロスリージョンのアクションは、以下のようにコンソールに表示されます。

    
                            クロスリージョンアクションを含むパイプラインの概要。

パイプラインにクロスリージョンアクションを追加する (AWS CloudFormation)

AWS CloudFormation を使用して既存のパイプラインにクロスリージョンアクションを追加します。

AWS CloudFormation でクロスリージョンアクションを追加するには

  1. この例に示すように、Region パラメータをテンプレートの ActionDeclaration リソースに追加します。

    ActionDeclaration: Type: Object Properties: ActionTypeId: Type: ActionTypeId Required: true Configuration: Type: Map InputArtifacts: Type: Array ItemType: Type: InputArtifact Name: Type: String Required: true OutputArtifacts: Type: Array ItemType: Type: OutputArtifact RoleArn: Type: String RunOrder: Type: Integer Region: Type: String
  2. Mappings で、リージョンマップを追加します。Pipeline リソースの artifactStore フィールドで、新しいクロスリージョンアクションの artifactStores マップを次のように追加します。

    Mappings: SecondRegionMap: RegionA: SecondRegion: "RegionB" RegionB: SecondRegion: "RegionA" ... Properties: ArtifactStores: - Region: RegionB ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-RegionB - Region: RegionA ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-RegionA

    以下の YAML 例では、RegionA バケットを us-west-2、新しい RegionB バケットを eu-central-1 とします。

    Mappings: SecondRegionMap: us-west-2: SecondRegion: "eu-central-1" eu-central-1: SecondRegion: "us-west-2" ... Properties: ArtifactStores: - Region: eu-central-1 ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-eu-central-1 - Region: us-west-2 ArtifactStore: Type: "S3" Location: test-cross-region-artifact-store-bucket-us-west-2
  3. 更新したテンプレートをローカルコンピュータに保存し、AWS CloudFormation コンソールを開きます。

  4. スタックを選択し、[既存スタックの変更セットの作成] を選択します。

  5. テンプレートをアップロードし、AWS CloudFormation に示された変更を表示します。これらがスタックに加えられる変更です。新しいリソースがリストに表示されています。

  6. [Execute] を選択します。