EC2 + VPCピアリングでcurlしてみる
背景
ドキュメントを読んでいるだけではなく実際に手を動かしてやってみないと身につかないと思い、VPCピアリングを今まで使ったがなかったので触ってみました。
最終的には以下のような構成になり、シドニーリージョンのEC2にApacheをインストールしてシンガポールリージョンのEC2からcurlで疎通できるかを確認してみました。
VPCピアリングについて
VPCピアリングを使うと、異なる2つのVPCがまるで1つのネットワーク上にあるかのように通信できるようになります。異なるAWSアカウント、異なるリージョン間でも利用可能です(裏側でどうやってんのかがすごく気になる)。作成自体は無料、ただしデータ転送料金はかかります。
特記する注意点としては、通信するVPCでCIDRが重複するとダメぽいです。
PrivateLinkとの違い
「VPCピアリングとPrivateLinkって何が違うねん」と思い調べてみました。
VPCピアリングは双方向の通信が可能にするもので、PrivateLinkはあるVPCから別のVPCへ通信を行うための一方向の通信を行うもののようです。またPrivateLinkはCIDRは重複しても通信できます。
VPCピアリング接続する
以下を参考にやってみます。
準備
以下のリソースを準備します。
シンガポールリージョン
- VPC
- 10.0.0.0/16
- Public subnet
- 10.0.128.0/24
- EC2のセキュリティグループ
- 80番ポート
- シドニーリージョンのPublic subnetの
172.0.0.0/20
を許可
- シドニーリージョンのPublic subnetの
- 22番ポート
- 自分の今利用しているIPを許可
- 80番ポート
- 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
を許可
- シンガポールリージョンのPublic subnetの
- 22番ポート
- 自分の今利用しているIPを許可
- 80番ポート
- 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>
通信できていそうですね!ひっかかったところも特にありませんでした。
Discussion