実現したいこと
アカウントAにあるEC2から、アカウントBにあるRDSに対して、VPCピアリングを通して接続したい

※EC2やRDSは既に構築されている前提で、VPCピアリングの方法について解説します。
VPCピアリングとは
VPCピアリングは、VPC間(別アカウント/別リージョンも可)を接続することで、別VPCのリソースに対してルーティングを可能にする機能のことです。VPC間でインターネットを経由した通信を行いたくない(行えない)場合、この機能が良いかもしれないです!
ただし、VPCピアリングにはいくつか条件があります。
特にVPCのCIDRが重複する場合にはピアリングできないので注意です!
1.VPCピアリング接続の設定
VPC > [ピアリング接続]を選択します!
VPCリクエスタはVPCピアリングの接続元、今回だとアカウントAのピアリングさせたいVPCのIDを入力します。
ピアリング接続先のVPCは[別のアカウント]を選択します。
アカウントIDを入力します。今回の場合はリージョンが同じなので[このリージョン]を選択しました。
VPC ID(アクセプタ)にはピアリング先のVPCのIDを入力します。
上記でピアリング接続が作成されているはずです。
この時点ではステータスは[承諾の保留中]となっていると思います。
ステータスを利用可能にするためにはピアリング先、つまりアカウントBでピアリング接続を承認する必要があります!
アカウントBへログインします。
VPC > [ピアリング接続]を選択します。
ピアリング接続が作成されていて、ステータスが[承認の保留中]となっていると思います。
[アクション]から[リクエストを承諾]を選択します。
これでピアリング接続の作成は終わりです!
但し、これだけだとまだVPC間で通信することはできないので、ルートテーブルの設定を少し変更します。
2.ルーティングの設定
※アカウントAとアカウントBそれぞれで下記を行います。
VPC > [ルートテーブル] > [ルートの編集]を選択します。
ターゲットは[ピアリング接続]を選択し、先程作成したピアリング接続のIDを設定します。
送信先は、送信先となるVPCのCIDRを指定します。
アカウントAでルーティングの編集している場合は、アカウントBのVPCのCIDRを指定し、アカウントBでルーティングの編集をしている場合は、アカウントAのVPCのCIDRを指定します。
これでVPCのルートテーブル設定は終わりです。
しかし、アカウントBのセキュリティグループでアカウントAからの通信は許可されていないのでまだ通信ができません。
3.セキュリティグループの設定
アカウントBのRDSのVPCのセキュリティグループの設定を変更します。
具体的には、インバウンドルールを追加します。
ソースには①アカウントAのEC2インスタンスにアタッチしたセキュリティグループを指定する or ②アカウントAのEC2があるVPCのCIDRを指定します。
どちらでも可能とは思いますが、、、セキュリティグループを指定することで指定したインスタンスのみ通信を許可することができるようになるので、CIDRを指定するよりセキュリティグループを指定する方が良いと思います。
4.確認
アカウントAのEC2インスタンスで、mysqlコマンドを叩きアカウントBのRDSへ接続できるか確認します。
おわりに
別アカウントのRDSへVPCピアリングを使って接続することができました。
同一リージョン間でのVPCピアリング、異なるアカウントの異なるリージョン間でのVPCピアリングなどなど、、、、ピアリング接続のユースケースはありそうですが、ベースとなる部分は上記の内容と変わらないかなと感じています。
最近はAWSで色々と作業することが増えてきたので、知見はどんどんアウトプットしていきます!
まだまだ経験は浅いのでベストプラクティスとか、こうした方が良いなど、あれば何でもコメントで教えていただけると幸いです!

