

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

# 別の AWS アカウントにアプリケーションをデプロイする
<a name="deployments-cross-account"></a>

通常、組織には、さまざまな目的で使用する複数の AWS アカウントがあります (例えば、1 つはシステム管理タスク用、もう 1 つは開発、テスト、本番稼働用タスク用、または 1 つは開発およびテスト環境に関連付けられ、もう 1 つは本番稼働用環境に関連付けられます）。

異なるアカウントで関連作業を実行できる場合でも、CodeDeploy デプロイグループとデプロイ先の Amazon EC2 インスタンスは、これらを作成したアカウントに厳密に関連付けられています。たとえば、1 つのアカウントで起動したインスタンスを別のデプロイグループに追加することはできません。

開発 AWS アカウントと本番稼働用アカウントの 2 つのアカウントがあるとします。主に開発用アカウントで作業しますが、認証情報のフルセットまたは開発用アカウントからのサインアウトや本番稼働用アカウントへのサインインなしで、本番稼働用アカウントでデプロイの開始を可能にします。

クロスアカウント設定手順に従うことで、別のアカウントの認証情報フルセットの必要なしで、組織の別のアカウントに属するデプロイを開始できます。これは、そのアカウントへの一時的アクセスを許可する AWS Security Token Service (AWS STS) が提供する機能を利用して一部行われます。

## ステップ 1: いずれかのアカウントで S3 バケットを作成する
<a name="deployments-cross-account-1-create-s3-bucket"></a>

開発用アカウントまたは本番稼働用アカウントで以下を行います。
+ まだそうしていない場合は、本稼働用アカウントのアプリケーションリビジョンが保存される Amazon S3 バケットを作成します。詳細については、「[Amazon S3 のバケットの作成](https://docs.aws.amazon.com/AmazonS3/latest/userguide/CreatingABucket.html)」を参照してください。同じファイルを開発用アカウントでテスト、確認した本稼働環境にデプロイして、同じバケットとアプリケーションリビジョンを両方のアカウントに使用することもできます。

## ステップ 2: Amazon S3 バケットへのアクセス許可を本番稼働用アカウントの インスタンスプロファイルに付与する
<a name="deployments-cross-account-2-grant-bucket-permissions"></a>

ステップ 1 で作成した Amazon S3 バケットが本番稼働用アカウントにある場合、このステップは必要ありません。後で引き受けるロールは、本番稼働用アカウントにもあるため、このバケットへのアクセス権限をすでに持っています。

開発用アカウントで Amazon S3 バケットを作成する場合は、以下を実行します。
+ 本番稼働用アカウントで、IAM インスタンスプロファイルを作成します。詳細については、「[ステップ 4: Amazon EC2 インスタンス用の IAM インスタンスプロファイルを作成する](getting-started-create-iam-instance-profile.md)」を参照してください。
**注記**  
この IAM インスタンスプロファイルの ARN を書き留めます。次に作成するクロスバケットポリシーにそれを追加する必要があります。
+ 開発用アカウントで作成した Amazon S3 バケットへのアクセス権限を、本番稼働用アカウントで先ほど作成した IAM インスタンスプロファイルに付与します。詳細については、「[例 2: バケット所有者がクロスアカウントのバケットのアクセス許可を付与する](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html)」を参照してください。

  クロスアカウントのバケットのアクセス許可を付与するプロセスを完了するにあたり、次の点に注意してください。
  + サンプルチュートリアルでは、アカウント A は開発用アカウントを表し、アカウント B は本番稼働用アカウントを表します。
  + [アカウント A (開発用アカウント) タスクを実行](https://docs.aws.amazon.com/AmazonS3/latest/userguide/example-walkthroughs-managing-access-example2.html#access-policies-walkthrough-cross-account-permissions-acctA-tasks)する際、チュートリアルで提供されているサンプルポリシーを使用する代わりに、次のバケットポリシーを変更してクロスアカウントアクセス許可を付与します。

------
#### [ JSON ]

****  

    ```
    {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
            {
                "Sid": "Cross-account permissions",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::111122223333:role/role-name"
                },
                "Action": [
                    "s3:Get*",
                    "s3:List*"
                ],
                "Resource": [
                    "arn:aws:s3:::bucket-name/*"
                ]
            }
        ]
    }
    ```

------

    *account-id*は、IAM インスタンスプロファイルを作成した本番稼働用アカウントのアカウント番号を表します。

    *role-name*は、作成した IAM インスタンスプロファイルの名前を表します。

    *bucket-name* は、ステップ 1 で作成したバケットの名前を表します。バケット名の後に必ず `/*` が含まれるようにして、バケット内の各ファイルへのアクセスを提供します。

## ステップ 3: 本番稼働用アカウントでリソースとクロスアカウントロールを作成する
<a name="deployments-cross-account-3-create-resources-and-role"></a>

本番稼働用アカウントで以下を行います。
+ このガイドの手順を使用して、CodeDeploy リソース（アプリケーション、デプロイグループ、デプロイ設定、Amazon EC2 インスタンス、Amazon EC2 インスタンスプロファイル、サービスロールなど）を作成します。
+ 開発用アカウントのユーザーが、この本番稼働用アカウントで CodeDeploy オペレーションを実行するために追加で引き受けるクロスアカウント IAM ロールを作成します。

  クロス[AWS アカウントロールの作成に役立つガイドとして、チュートリアル: IAM ロールを使用してアカウント間のアクセスを委任](https://docs.aws.amazon.com/IAM/latest/UserGuide/walkthru_cross-account-with-roles.html)します。チュートリアルのサンプルアクセス許可をポリシードキュメントに追加する代わりに、少なくとも次の 2 つの AWS 指定されたポリシーをロールにアタッチする必要があります。
  + `AmazonS3FullAccess`: S3 バケットが開発用アカウントにある場合にのみ必要です。引き受けた本番稼働用アカウントのロールに対して、リビジョンが保存されている、開発用アカウントの Amazon S3 サービスとリソースへのフルアクセスを提供します。
  + `AWSCodeDeployDeployerAccess`: リビジョンを登録してデプロイすることをユーザーに許可します。

  デプロイを開始するだけでなく、デプロイグループを作成および管理する場合、`AWSCodeDeployFullAccess` ポリシーの代わりに、`AWSCodeDeployDeployerAccess` ポリシーを追加します。IAM マネージドポリシーを使用して CodeDeploy タスクにアクセス許可を付与する方法の詳細については、「[AWS CodeDeploy の マネージド (事前定義) ポリシー](managed-policies.md)」を参照してください。

  このクロスアカウントロールの使用時に、ほかの AWS サービスでタスクを実行する場合、追加のポリシーをアタッチできます。

**重要**  
クロスアカウントの IAM ロールを作成する際に、本番稼働用アカウントへのアクセスを得るために必要な詳細を書き留めておきます。  
を使用してロール AWS マネジメントコンソール を切り替えるには、次のいずれかを指定する必要があります。  
引き受けたロールの認証情報を使用して本番稼働用アカウントにアクセスするための URL。URL は [**確認**] ページのクロスアカウント作成プロセスの最後に表示されます。
クロスアカウントロール名およびアカウント ID 番号またはエイリアス。
を使用してロール AWS CLI を切り替えるには、以下を指定する必要があります。  
引き受けるクロスアカウントロールの ARN。

## ステップ 4: Amazon S3 バケットにアプリケーションリビジョンをアップロードする
<a name="deployments-cross-account-4-upload-application-revision"></a>

Amazon S3 バケットを作成したアカウントで
+ Amazon S3 バケットにアプリケーションリビジョンをアップロードします。詳細については、「[Amazon S3 に CodeDeploy のリビジョンをプッシュする (EC2/オンプレミスのデプロイのみ)](application-revisions-push.md)」を参照してください。

## ステップ 5: クロスアカウントロールを引き受け、アプリケーションをデプロイする
<a name="deployments-cross-account-5-assume-role-and-deploy"></a>

開発アカウントでは、 AWS CLI または AWS マネジメントコンソール を使用してクロスアカウントロールを引き受け、本番稼働用アカウントでデプロイを開始できます。

を使用してロール AWS マネジメントコンソール を切り替え、デプロイを開始する方法については、[「ロールへの切り替え (AWS マネジメントコンソール)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-console.html)」および「」を参照してください[EC2/オンプレミスコンピューティングプラットフォームのデプロイ作成 (コンソール)](deployments-create-console.md)。

を使用してクロスアカウントロールを AWS CLI 引き受け、デプロイを開始する方法については、[「IAM ロールへの切り替え (AWS Command Line Interface)](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles_use_switch-role-cli.html)」および「」を参照してください[EC2/ オンプレミスコンピューティングプラットフォームのデプロイ作成 (CLI)](deployments-create-cli.md)。

を通じてロールを引き受ける方法の詳細については AWS STS、[AWS Security Token Service 「 ユーザーガイド](https://docs.aws.amazon.com/STS/latest/APIReference/Welcome.html)」の[AssumeRole](https://docs.aws.amazon.com/STS/latest/APIReference/API_AssumeRole.html)」および[AWS CLI 「 コマンドリファレンス](https://docs.aws.amazon.com/cli/latest/reference/)」の[「 assume-role](https://docs.aws.amazon.com/cli/latest/reference/sts/assume-role.html)」を参照してください。

**関連トピック**:
+ [CodeDeploy: 開発用アカウントから本番稼働用アカウントへのデプロイ](https://aws.amazon.com/blogs/devops/aws-codedeploy-deploying-from-a-development-account-to-a-production-account/)