[小ネタ]パブリックサブネットとプライベートサブネットを持つVPCのテンプレートを作ってみた
はじめに
データアナリティクス事業本部の藤川です。
AWS公式ページに、パブリックサブネットとプライベートサブネットを持つ VPC (NAT) - Amazon Virtual Private Cloudがあります。 が、図の紹介までで、Cloud Formationテンプレートは紹介されていません。 最近はサーバレスなのでVPCを意識しなくても構築できるケースが多くなりましたが、AWS環境からインターネットや別のVPCにアクセスするLambda(俗称、VPC Lambda)でテストする場合には、やはり必要です。
あると便利なので、筆者が普段検証用に使用しているVPC構築用のCloud Formationテンプレートをご紹介したいと思います。
概要
パブリックサブネットとプライベートサブネットを持つ VPC (NAT) - Amazon Virtual Private Cloudを参考に、次の図のようなVPC環境を構築します。
なお、VPC構築用のCloud Formationテンプレートファイルは、こちらにあります。
- NatSG
- Inbound rules
タイプ プロトコル ポート範囲 ソース すべてのトラフィック すべて すべて SecureSG SSH TCP 22 0.0.0.0/0 - Outbound rules
タイプ プロトコル ポート範囲 送信先 すべてのトラフィック すべて すべて 0.0.0.0/0
- Inbound rules
-
DmzSG
- Inbound rules
タイプ プロトコル ポート範囲 ソース HTTPS TCP 443 0.0.0.0/0 SSH TCP 22 NatSG -
Outbound rules
タイプ プロトコル ポート範囲 送信先 すべてのトラフィック すべて すべて 0.0.0.0/0
- Inbound rules
-
SecureSG
- Inbound rules
タイプ プロトコル ポート範囲 ソース HTTP TCP 80 DmzSG SSH TCP 22 NatSG -
Outbound rules
タイプ プロトコル ポート範囲 送信先 すべてのトラフィック すべて すべて 0.0.0.0/0
- Inbound rules
手順
キーペアを作成
- AWSマネジメントコンソールからキーペアを作成します。既存のキーペアでも構いません。
- キーペア名を控えておきます。
スタックを作成
テンプレートからスタックを作成
- AWSマネジメントコンソールからスタックを作成します。
-
または、次のAWS CLIコマンドでスタックを作成します。
ParameterValue
を控えておいたキーペア名に置換します。aws cloudformation create-stack --stack-name MyVpc --template-body file://myvpc.template \ --parameters ParameterKey='KeyName',ParameterValue='HOGEHOGE' \ --profile HOGEHOGE
スタック作成後の手動作業
CFn(Cloud Formation)テンプレートでMainRouteTable
を編集できないため、NATインスタンスIDを手動で登録します。
※参考:AWS CloudFormation を使い、メイン VPC ルートテーブルにルートを追加する
AWSマネジメントコンソール
を開きます。VPC
を開きます。- 作成したVPCの
VPC ID
リンクをクリックします。 メインルートテーブル
に表示されているルートテーブルID
リンクをクリックします。ルートテーブルID
リンクをクリックします。ルートを編集
ボタンをクリックします。ルートを追加(Add route)
ボタンをクリックします。0.0.0.0/0
を選択します。インスタンス(Instance)
を選択し、表示されるNATインスタンスID
を選択します。変更を保存
ボタンをクリックします。
NatInstanceを設定
- SCPコマンド等でキーペアファイルを
NatInstance
の~/.ssh
ディレクトリにアップロードします。 - sshクライアントで
NatInstance
のパブリックIPv4アドレス
にSSH接続します。 - キーペアファイルのパーミッションを変更します。
chmod 600 ~/.ssh/HOGEHOGE.pem
- セキュリティのため、
NatInstance
のパッケージを最新化しておきましょう。sudo yum -y update
スタックを削除
使い終わった場合、次の手順でスタックを削除できます。
- AWSマネジメントコンソールからスタックを削除します。
- または、次のAWS CLIコマンドでスタックを削除します。
aws cloudformation delete-stack --stack-name MyVpc --profile HOGEHOGE
さいごに
今回ご紹介したCloud Formationテンプレートは、NATインスタンス
を使用しています。
NATインスタンス用のAMIが提供されていますが、今後はAWSから更新版AMIが提供されなくなります。古いAMIを使用し続けることはセキュリティ上好ましくありません。
また、NATインスタンスに替えて、AWSからはNAT Gateway
の利用が推奨されています。NAT Gatewayを導入することで、スタック作成後の手動作業は不要になり、さらに簡単にVPC環境を構築できます。
いずれ、NAT Gatewayを導入したVPCを構築するCloud Formationテンプレートをご紹介したいと思います。