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

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

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

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

注記

CodePipeline のアクションタイプによっては、特定のAWSリージョン。また、あるかもしれないことに注意してくださいAWSアクションタイプが使用可能であるが、特定のAWSプロバイダーは利用できません。

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

パイプラインを作成または編集する場合は、パイプラインリージョンにアーティファクトバケットが必要であり、アクションを実行する予定のリージョンごとに 1 つのアーティファクトバケットが必要です。ArtifactStores パラメータの詳細については、「CodePipeline パイプライン構造」を参照してください。

注記

CodePipeline は、1 つのAWSクロスリージョンアクションを実行するときの、他のリージョンへのリージョン。

コンソールを使用してパイプラインまたはクロスリージョンアクションを作成する場合は、アクションの作成先のリージョンにデフォルトのアーティファクトバケットが 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. On編集: <Stage>] で、[+ アクショングループの追加をクリックして、シリアルアクションを追加します。または、パラレルアクションを追加する場合は、[+Add action (+アクションの追加)] を追加します。

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

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

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

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

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

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

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

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

  6. On編集: <Stage>] で、[Done

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

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

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

注記

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

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

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

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

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

  4. On編集: <Stage>で、既存のアクションを編集するためのアイコンを選択します。

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

  6. On編集: <Stage>] で、[Done

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

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

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

注記

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

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

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

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

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

  4. On編集: <Stage>で、既存のアクションを削除するためのアイコンを選択します。

  5. On編集: <Stage>] で、[Done

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

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

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

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

注記

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

Prerequisites

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

  • RegionA のパイプライン。

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

  • アクションのリソース (例:クロスリージョンデプロイアクションの CodeDeploy アプリケーションおよびデプロイグループ) は、RegionB

パイプラインにクロスリージョンアクションを追加する (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": "main", "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 で、この例で示しているように、キー SecondRegionMap および RegionA の値をマップする RegionB という名前のマッピング用のリージョンマップを追加します。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] を選択します。