🙆‍♀️

EC2 + VPCピアリングでcurlしてみる

lightkun2022/12/15に公開

背景

ドキュメントを読んでいるだけではなく実際に手を動かしてやってみないと身につかないと思い、VPCピアリングを今まで使ったがなかったので触ってみました。

最終的には以下のような構成になり、シドニーリージョンのEC2にApacheをインストールしてシンガポールリージョンのEC2からcurlで疎通できるかを確認してみました。

VPCピアリングについて

VPCピアリングを使うと、異なる2つのVPCがまるで1つのネットワーク上にあるかのように通信できるようになります。異なるAWSアカウント、異なるリージョン間でも利用可能です(裏側でどうやってんのかがすごく気になる)。作成自体は無料、ただしデータ転送料金はかかります。

https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/what-is-vpc-peering.html

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/vpc-peering.html

特記する注意点としては、通信するVPCでCIDRが重複するとダメぽいです。

https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/vpc-peering-basics.html

PrivateLinkとの違い

「VPCピアリングとPrivateLinkって何が違うねん」と思い調べてみました。

https://docs.aws.amazon.com/ja_jp/whitepapers/latest/aws-vpc-connectivity-options/aws-privatelink.html

VPCピアリングは双方向の通信が可能にするもので、PrivateLinkはあるVPCから別のVPCへ通信を行うための一方向の通信を行うもののようです。またPrivateLinkはCIDRは重複しても通信できます。

VPCピアリング接続する

以下を参考にやってみます。

https://docs.aws.amazon.com/ja_jp/vpc/latest/peering/working-with-vpc-peering.html

準備

以下のリソースを準備します。

シンガポールリージョン

  • VPC
    • 10.0.0.0/16
  • Public subnet
    • 10.0.128.0/24
  • EC2のセキュリティグループ
    • 80番ポート
      • シドニーリージョンのPublic subnetの172.0.0.0/20を許可
    • 22番ポート
      • 自分の今利用しているIPを許可
  • EC2
    • AmazonLinux2
    • t2.micro
    • Public subnetに配置
    • sshするためのキーペアを発行
    • 上記のセキュリティグループを設定

シドニーリージョン

  • VPC
    • 172.0.0.0/16
  • Public subnet
    • 172.0.0.0/20
    • みすって/20にしただけで/24でもOK
  • EC2のセキュリティグループ
    • 80番ポート
      • シンガポールリージョンのPublic subnetの10.0.128.0/24を許可
    • 22番ポート
      • 自分の今利用しているIPを許可
  • EC2
    • AmazonLinux2
    • t2.micro
    • Public subnetに配置
    • sshするためのキーペアを発行
    • 上記のセキュリティグループを設定

VPCピアリングを作成

シンガポールリージョンでも良いのですが、シドニーリージョンでVPCピアリングを作成します。

ピアリングしたいVPCを選択します。

ステータスが保留中のままです。もう一方のシンガポールリージョンで設定を行う必要があります(そりゃ、勝手に接続されても困るしねぇ)。

承諾

シンガポールリージョン側を見てみると、先程シドニーリージョンで作成したVPCピアリングがあるので承諾をします。

シドニーリージョン側に戻るとステータスが「アクティブ」になっていることを確認できます。

ルートテーブルの更新

Public subnetのルートテーブルを編集して、作成したVPCピアリングを選択します。

シンガポールリージョン

送信先はシドニーリージョンのVPCのCIDRブロックである172.0.0.0/16にします。

シドニーリージョン

送信先はシンガポールリージョンのVPCのCIDRブロックである10.0.0.0/16にします。

セキュリティグループの更新

今回は既にEC2のセキュリティグループで設定済みなので、新たに設定する必要はないです。

curlしてみる

シドニーリージョンのEC2にsshで入ってApacheをインストール・起動します。

# sshで入っておく
$ sudo yum update
$ sudo yum install httpd
$ sudo systemctl start httpd
$ curl localhost
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
...
		<title>Test Page for the Apache HTTP Server</title>
...

次にシンガポールリージョンからこのApacheのTest Pageを見れるかをやってみます。
シンガポールリージョンのEC2にsshで入って、シドニーリージョンのEC2のプライベートIPをコピペしてcurlしてみます。

# sshで入っておく
$ curl [シドニーリージョンのEC2のプライベートIP]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" 
...
		<title>Test Page for the Apache HTTP Server</title>

通信できていそうですね!ひっかかったところも特にありませんでした。

株式会社ゆめみ

みんな知ってるあのサービスも、ゆめみが一緒に作ってます。スマホアプリ/Webサービスの企画・UX/UI設計、開発運用の内製化支援。Swift,Kotlin,Rust,Go,Flutter,ML,React,AWS等エンジニア・クリエイターの会社です。Twitterで情報配信中

Discussion

ログインするとコメントできます