[VPC Peering] 異なるAWSアカウントでのVPCピア接続を試してみた

2015.07.07

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

初めに

AWSチームの鈴木です。

Amazon VPCでは、ピア接続(VPC Peering)により、 同一リージョンで、異なるIP帯域のVPCを接続し、相互通信を行う事が可能です。

参考:Amazon VPC Peeringの技術的考察と留意点

またVPCピア接続は、異なるAWSアカウント間で実施する事も可能です。 この際、ピア接続先となるAWSアカウントでの承認手続きが必要となりますが、その承認を含む手順について紹介します。

想定環境

アカウント

アカウントID 0000111122223333
VPC ID vpc-aaaaaaa
VPC CIDR 192.168.16.0/20
セグメントA-1 192.168.20.0/24
セグメントA-2 192.168.21.0/24

アカウントB

アカウントID 4444555566667777
VPC ID vpc-bbbbbbb
VPC CIDR 172.23.0.0/16
セグメントB-1 172.23.252.0/24
セグメントB-2 172.23.253.0/24

構成図

vpc-peering-different-awsaccount-01

手順

アカウントA

VPCピアリング作成

  • AWSコンソールの「VPCダッシュボード」より、「ピアリング接続」を開きます

vpc-peering-different-awsaccount-02

  • 「VPCピア接続の作成」を実行します

vpc-peering-different-awsaccount-03 * 「ネームタグ」はVPCピア接続の任意の名称を付与します * 「ピア接続するローカル VPC」として、「192.168.16.0/20」を含むVPCを指定します * 「ピア接続する VPC」は、「別のアカウント」を指定します * 「アカウントID」は、ピア接続先のアカウントIDを入力します * 「VPC ID」は、ピア接続先のVPCIDを入力します * AWSの「アカウントID」は、AWSコンソール上で確認可能な数値です

vpc-peering-different-awsaccount-05

vpc-peering-different-awsaccount-04

  • 「ステータス」として「Pending Acceptance by ...」となったことを確認します

vpc-peering-different-awsaccount-06

アカウントB

VPCピアリングの承諾

  • アカウントBのAWSコンソールの「VPCダッシュボード」より、「ピアリング接続」を開きます

vpc-peering-different-awsaccount-07

  • 「ステータス」として「Pending Acceptance by」となっている設定をチェック、意図したピア接続元であることを確認し、「リクエストの承諾」を行います。

vpc-peering-different-awsaccount-08

vpc-peering-different-awsaccount-09

ルーティングテーブル

  • アカウントBのAWSコンソールの「VPCダッシュボード」より、「ルートテーブル」を開きます

vpc-peering-different-awsaccount-10

  • ピア接続対象のVPCに絞り込み、ピア接続対象のセグメントを含む「ルートテーブル」を選択します

vpc-peering-different-awsaccount-11

  • 「ルート」タブより、「別ルートの追加」を行い、VPCピアリング先のネットワーク(IP帯域)を入力、ターゲットは「pcx-」で始まるVPCピア接続を指定し、保存します

vpc-peering-different-awsaccount-12

セキュリティグループ設定

  • Outbound通信を「Any」許可、Inboundの通信を特定ネットワークのみ許可している場合、VPCピア接続先の「192.168.20.0/24,192.168.21.0/24」のネットワークを追加します。

vpc-peering-different-awsaccount-16

アカウントA

  • アカウントAもルーティング設定が必要です。

ルーティングテーブル

  • 「ルート」タブより、「別ルートの追加」を行い、VPCピアリング先のネットワーク(IP帯域)を入力、ターゲットは「pcx-」で始まるVPCピア接続を指定し、保存します

vpc-peering-different-awsaccount-15

まとめ

異なるAWSアカウントでのVPCピア接続、途中で承認手続きが発生しますが、同一アカウント内と同様の手順での設定が可能です。 開発ベンダが異なるシステム、連携部分をVPCピア接続する事により、密結合を避ける効果などが期待できます。

ただし、2015年7月現在のCloudFormation「VPCPeeringConnection」としてテンプレートに記述する事は可能ですが、異なるAWSアカウント間のピア接続には未対応となりますので、ご注意ください。

参考:公式ドキュメント AWS::EC2::VPCPeeringConnection

With AWS CloudFormation, you can create a peering connection only between VPCs in the same AWS account. You cannot create a peering connection with another AWS account.

VPCピア接続の注意

昨晩時間切れで記載出来なかった内容、及び本日メンバより指摘のあった事項について追記します。(7/8)

NW重複

CIDRブロックが一部でも重複する場合、VPCピア接続はできません。

リージョン

VPCピア接続は、同一リージョン間のみ設定可能です。

  • 2018年2月 異なるリージョン間のVPCピア接続が可能になりました。 https://dev.classmethod.jp/cloud/aws/inter-region-vpc-peering-available-tokyo/

上限緩和

VPCピア接続数、初期50に制限されています。 上限緩和によりピア接続の拡張は可能ですが、最大は125までとなります。 また上限緩和を実施した場合、ネットワーク性能への影響が出る場合があるとされているため、ネットワーク設計は計画的に実施してください。

MTU

VPCピア接続のMTUは1500となります。 ビックパケットを利用可能なEC2環境を、VPCピア接続経由で利用する場合ご注意ください。

プライベートDNS

Route53で利用出来る、Private Hosted Zone、2015年7月現在、VPCピアリング経由で利用する事ができません。 ELBやEC2にCNAMEを付与する場合、グローバルのHosted Zoneを利用してください。

  • 2016年8月 VPCピア接続経由でプライベートIPの名前解決が可能となりました。 https://dev.classmethod.jp/cloud/aws/resolving-private-ip-address-from-vpc-peering/

RDS、Redshift

Publicly Accessibleが「Yes」となった、RDS、RedshiftをVPCピア接続で利用する場合、利用制限があります。

料金

VPCピア接続に固定費用は発生しません。

ただし、VPC ピア接続を利用した通信は同一アベイラビリティーゾーンであっても、パブリックIPアドレスを利用した場合や、異なるアベイアビリティゾーン間のデータ転送と同じ料金(2015年7月現在$0.01/GB)が適用されます。TB単位のデータをVPCピア接続で転送する際にはご注意ください。

参考リンク