
はじめに

センパイ!固定IP経由で外部サービスと通信するLambdaを作りたいと相談があったんですが
この場合Lambdaを置けるVPCを作ればいいんですかね?
それならVPC lambdaを作ってNatGateway(EIP付与)経由で通信をさせるのがいいよ

決済サービスなど外部サービスとの通信を行う機能を作る際に、
接続元IPを制限してるので固定IPを使ってアクセスしてください(&グローバルIP事前に教えてください)と言われることありますよね。
そんなときに、よくあるのがVPC lambdaをつくって固定IP(EIP)を振ったNatGateway経由で外部サービスと通信させるというもの。
構成図で見ると以下のような感じです。
※Lambda以外を作成します

この記事でやること
そこで今回はAWSのマネジメントコンソール上から、Lambdaが固定IP経由で外部サービスと通信できるようなVPCの作成方法を紹介します。
今回はLambdaは作りませんのでご了承ください。
※EIPは期間によって課金がされます。他のリソースも含め使用されないときはすぐ削除する等各自でご対応をお願いします。
VPCの作成
VPCコンソールに移動して「VPCを作成」をクリックしましょう。

作成するリソースでは「VPCなど」を選択しましょう。
これはlambdaを配置するprivate-subnet、EIPを付与するNatGatewayをpublic-subnetに配置する上でそれぞれのサブネットも一緒にまとめて作れるためです。(いつの間にこんな便利な作成機能ができたんだ、、、)
名前タグは分かりやすい名前にしておくといいと思います(ここではvpc-lambda-eip
としています)
プレビューが分かりやすくていいですね

その他には以下を変更してます。
・アベイラビリティゾーン(AZ)の数は2個 ※実運用を想定してマルチAZとしてます
・NATゲートウェイは「1AZ内」を選択
・VPCエンドポイントは「なし」 ※今回特にS3との通信は想定していないため
・追加のタグに「キー」environment
で「値」vpc-lambda-test
を追加 ※今回作成したリソースが不要になった際にタグ検索で一括削除できるように任意のキー、値を設定しておくことをお勧めします
その他はデフォルトでいいと思います。
設定が完了したら「VPCを作成」をクリックします。

VPCワークフローの作成が完了したら「VPCを表示」をクリック

VPCが作成されたのが確認できました。

固定IP(ElP)もEC2コンソールから作成を確認できました。

まとめ
VPC LambdaをCloudFormationで生成しようと思ったら数百行は書くことになりそうなものが、マネジメントコンソールからだと10分程度で作れてしまいました。
以前はこんなにスムーズじゃなかった気もするので、AWSの日々のアップデートに感謝ですね。
また今回はVPCのみの作成ということでなんだか物足りなさもありますが、少しでも参考になれば幸いです。
今回の記事に関連して、手動で作成したEIPありのVPC(今回つくったものたち)をCFnスタック管理にするという記事も近々書こうと思います。ちょうどCloudFormationでIacジェネレーターなるものが出て使いやすかったので。