

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

# 異なる AWS アカウント間の VPC で一貫したアベイラビリティーゾーンを使用する
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts"></a>

*Amazon Web Services、Adam Spicer*

## 概要
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-summary"></a>

Amazon Web Services (AWS) クラウドでは、アベイラビリティーゾーンには AWS アカウントによって異なる名前と、その場所を識別する「[アベイラビリティーゾーン ID (AZ ID)](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)」があります。AWS CloudFormation を使用して仮想プライベートクラウド (VPC) を作成する場合、サブネットを作成するときにアベイラビリティーゾーンの名前または ID を指定する必要があります。複数のアカウントで VPC を作成する場合、アベイラビリティーゾーン名はランダム化されます。つまり、サブネットはアカウントごとに異なるアベイラビリティーゾーンを使用します。 

複数のアカウントに同じアベイラビリティーゾーンを使用するには、各アカウントのアベイラビリティーゾーン名を同じ AZ ID にマッピングする必要があります。例えば、次の図は、`use1-az6` AZ ID が AWS アカウント A では `us-east-1a`、AWSアカウントZでは `us-east-1c` という名前になっていることを示している。

![use1-az6 AZ ID は、AWS アカウント A では us-east-1a、AWS アカウント Z では us-east-1c という名前になっています。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/23c8a37b-2408-4534-a1e0-bccfa4d7fbe3.png)


 

このパターンは、サブネット内の同じアベイラビリティーゾーンを使用するための、クロスアカウントでスケーラブルなソリューションを提供することで、ゾーンの一貫性を確保するのに役立ちます。ゾーンの整合性により、クロスアカウントのネットワークトラフィックがアベイラビリティーゾーン間のネットワークパスを回避できるため、データ転送コストを削減し、ワークロード間のネットワークレイテンシーを短縮できます。

このパターンは、AWS CloudFormation「[アベイラビリティーゾーン](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html#cfn-ec2-subnet-availabilityzoneid)」プロパティの代替アプローチです。

## 前提条件と制限
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-prereqs"></a>

**前提条件**
+ 同じ AWS リージョンの少なくとも 2 つのアクティブな AWS アカウント。
+ リージョン内の VPC 要件をサポートするのに必要なアベイラビリティーゾーンの数を評価してください。
+ サポートする必要のある各アベイラビリティーゾーンの AZ ID を特定して記録します。詳細については、AWS ResAWS Resource Access Manager ドキュメントの「[AWS リソースのアベイラビリティーゾーン ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)」を参照してください。 
+ AZ ID の順序付きカンマ区切りリスト。例えば、リストの最初のアベイラビリティーゾーンは `az1` としてマッピングされ、2 番目のアベイラビリティーゾーンは `az2` としてマップされます。このマッピング構造は、カンマで区切られたリストが完全にマップされるまで続きます。マッピングできる AZ ID の数に上限はありません。 
+ ローカルマシンにコピーされた GitHub「[マルチアカウントアベイラビリティーゾーンのマッピング](https://github.com/aws-samples/multi-account-az-mapping/)」リポジトリの `az-mapping.yaml` ファイル

## アーキテクチャ
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-architecture"></a>

次の図は、アカウントにデプロイされ、AWS Systems Manager Parameter Store 値を作成するアーキテクチャを示しています。これらのパラメータストア値は、アカウントに VPC を作成するときに消費されます。

![AZ ID ごとに Systems Manager Parameter Store 値を作成し、AZ 名を保存するワークフロー。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/f1168464-55f8-4efc-9b28-6a0cda668b9e.png)


この図表は、次のワークフローを示しています:

1. このパターンのソリューションは、VPC のゾーン整合性を必要とするすべてのアカウントにデプロイされます。 

1. このソリューションでは、AZ ID ごとにパラメータストア値を作成し、新しいアベイラビリティーゾーン名を保存します。 

1. AWS CloudFormation テンプレートは、各パラメータストア値に保存されているアベイラビリティーゾーン名を使用するため、ゾーンの一貫性が確保されます。

次の図は、このパターンのソリューションを使用して VPC を作成するワークフローを示しています。

 

![このワークフローは CloudFormation テンプレートを送信して、正しい AZ ID を持つ VPC を作成します。](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/images/pattern-img/9954e7f9-d6ce-44bd-af99-0c6bb7cd3cb0/images/cd859430-ac25-479f-b56a-21da24cddf21.png)


 

この図表は、次のワークフローを示しています:

1. VPC を作成するためのテンプレートを AWS CloudFormation に送信します。

1. AWS CloudFormation は各アベイラビリティーゾーンのパラメータストア値を解決し、各 AZ ID のアベイラビリティーゾーン名を返します。

1. VPC は、ゾーンの整合性に必要な正しい AZ ID で作成されます。

このパターンのソリューションをデプロイしたら、Parameter Store 値を参照するサブネットを作成できます。AWS CloudFormation を使用する場合、次の YAML 形式のサンプルコードからアベイラビリティーゾーンのマッピングパラメータ値を参照できます。

```
Resources:
    PrivateSubnet1AZ1: 
        Type: AWS::EC2::Subnet 
        Properties: 
            VpcId: !Ref VPC
            CidrBlock: !Ref PrivateSubnetAZ1CIDR
            AvailabilityZone: 
                !Join 
                    - ''
                    - - '{{resolve:ssm:/az-mapping/az1:1}}'
```

このサンプルコードは、GitHub「[マルチアカウントアベイラビリティーゾーンマッピングリ](https://github.com/aws-samples/multi-account-az-mapping/)」ポジトリの `vpc-example.yaml ` ファイルに含まれています。ゾーンの整合性を保つために、パラメータストアの値に合わせた VPC とサブネットを作成する方法について説明します。

テクノロジースタック
+ AWS CloudFormation
+ AWS Lambda
+ Systems Manager Parameter Store

**自動化とスケール**

このパターンは、AWS CloudFormation StackSets または AWS Control Tower 向けカスタマイズソリューションを使用して、すべての AWS アカウントにデプロイできます。詳細については、AWS Cloudformation ドキュメントの「[AWS CloudFormation StackSets 使用](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)」と、AWS ソリューションライブラリの「[AWS Control Tower のカスタマイズ](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/)」を参照してください。 

AWS CloudFormation テンプレートをデプロイしたら、パラメータストアの値を使用するようにテンプレートを更新し、パイプラインに、または要件に応じて VPC をデプロイできます。 

## ツール
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-tools"></a>

**AWS サービス**
+ 「[AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)」は、AWS リソースのモデル化と設定、迅速かつ一貫したプロビジョニング、ライフサイクル全体にわたる管理を支援します。リソースを個別に管理する代わりに、テンプレートを使用してリソースとその依存関係を記述し、それらをスタックとしてまとめて起動して設定できます。複数の AWS アカウントと AWS リージョンにまたがるスタックを管理およびプロビジョニングできます。
+ 「[AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)」 – AWS Lambda はサーバーのプロビジョニングや管理を行わずにコードの実行を支援できるコンピューティングサービスです。Lambda は必要に応じてコードを実行し、1 日あたり数個のリクエストから 1 秒あたり数千のリクエストまで自動的にスケールします。課金は実際に消費したコンピューティング時間に対してのみ発生します。コードが実行されていない場合、料金は発生しません。
+ 「[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store.html)」は AWS Systems Manager の一機能です。設定データ管理と機密管理のための安全な階層型ストレージを提供します。

**Code**

このパターンのコードは、GitHub 内の「[マルチアカウントアベイラビリティーゾーンのマッピング](https://github.com/aws-samples/multi-account-az-mapping/)」リポジトリで利用できます。

## エピック
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-epics"></a>

### AZ マッピング.yaml ファイルをデプロイします。
<a name="deploy-the-az-mapping-yaml-file"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| リージョンの必要なアベイラビリティーゾーンを決定します。 | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ja_jp/prescriptive-guidance/latest/patterns/use-consistent-availability-zones-in-vpcs-across-different-aws-accounts.html) | クラウドアーキテクト | 
| az-mapping.yaml ファイルをデプロイします。 | `az-mapping.yaml` ファイルを使用して、必要なすべての AWS アカウントに AWS CloudFormation スタックを作成します。`AZIds` パラメータには、先ほど作成したカンマ区切りリストを使用します。 <br />「[AWS CloudFormation StackSets](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)」または「[AWS Control Tower ソリューション](https://aws.amazon.com/solutions/implementations/customizations-for-aws-control-tower/)」のカスタマイズを使用することをお勧めします。 | クラウドアーキテクト | 

### VPC をアカウントにデプロイ
<a name="deploy-the-vpcs-in-your-accounts"></a>


| タスク | 説明 | 必要なスキル | 
| --- | --- | --- | 
| AWS CloudFormation テンプレートをカスタマイズします。 | AWS CloudFormation を使用してサブネットを作成する場合、以前に作成したパラメータストア値を使用するようにテンプレートをカスタマイズします。<br />サンプルテンプレートについては、GitHub「[マルチアカウントアベイラビリティーゾーンのマッピング](https://github.com/aws-samples/multi-account-az-mapping/)」リポジトリにある `vpc-example.yaml` ファイルを参照してください。 | クラウドアーキテクト | 
| VPC をデプロイします。 | カスタマイズした AWS CloudFormation テンプレートをアカウントにデプロイします。これにより、リージョン内の各 VPC は、サブネットに使用されるアベイラビリティーゾーンでゾーン整合性を保ちます。 | クラウドアーキテクト | 

## 関連リソース
<a name="use-consistent-availability-zones-in-vpcs-across-different-aws-accounts-resources"></a>
+ 「[AWS リソースのアベイラビリティーゾーン ID](https://docs.aws.amazon.com/ram/latest/userguide/working-with-az-ids.html)」(AWS Resource Access Manager のドキュメント)
+ 「[AWS:: EC2:: サブネット](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-ec2-subnet.html)」(AWS CloudFormation ドキュメント)