Help us understand the problem. What is going on with this article?

【AWS/Lambda】lambdaに固定IPをつける/VPCに所属させる

「困ったら大体lambda(とS3)」「lambda イズ 仙道」、AWSの基本ですね()
ただ彼は基本的に固定IPを持ちません。仙道同様、気まぐれです。
今回はそんな彼に固定IPを付与する方法をまとめます。
また、結果としてVPC&サブネットへ所属させる方法にもなります。

どんな時に役立つか

例えば

  • 申請式で特定IPからのアクセスしか認められないサービスとの連携
  • インスタンス内で動くIP制限付きサイトの死活監視
  • プライベートサブネット内のインスタンスと通信

※インスタンスそのものの監視はcloudwatchでどうぞ

構成図

以下の形です。
lambdaから外へ.png

手順

手順的には大まかに以下の形です。
1. lambdaをVPC内のプライベートサブネットに設置
2. lambdaのロールにvpc、eniに関する権限を追加
3. パブリックサブネットにNATゲートウェイを設置
4. プライベートサブネットのルートテーブルを編集

順番に見ていきましょう。
VPC内にプライベートサブネット(インターネットゲートウェイを持たない)、パブリックサブネットが一つずつある前提です。

1. lambdaをVPC内のプライベートサブネットに設置

lambda関数の作成時、デフォルトでは非VPCとなっています。
普段はこれで問題ないですが、今回は既存のVPC、プライベートサブネット、セキュリティグループを設定して下さい。
lambda_ネットワーク設定.png

ちなみにパブリックサブネットに設置するとVPC内はいけますが、外に出られません。
公式より

2. lambdaのロールにvpc、eniに関する権限を追加

lambda関数作成時に指定したロールにVPCアクセス、eni作成、削除の権限が必要になります。
「IAM -> ロール」より当該ロールを選択し、AWSLambdaVPCAccessExecutionRole、AWSLambdaENIManagementAccessをアタッチしてください。
IAM_ポリシーアタッチ.png

3. パブリックサブネットにNATゲートウェイを設置

「VPC -> NATゲートウェイ」よりNATゲートウェイを作成します。
サブネットにパブリックサブネットを指定する点に注意してください。
NATゲートウェイの作成.png

4. プライベートサブネットのルートテーブルを編集

最後の手順です。
「VPC -> ルートテーブル」よりプライベートサブネットに紐づくルートテーブルを選択し、ルートテーブルの編集より、以下のように送信先に0.0.0.0/0ターゲットに3.で作成したNATゲートウェイを指定したルートを追加してください。
ルートの編集.png
これにより、lambda関数から外に出る際に、パブリックサブネット内のNATゲートウェイを経由する形となります。

ちなみにサブネットを作成した直後は、サブネットのルートテーブルにVPCのものが紐づいているので、間違ってそちらを編集しないように気をつけてください。

おしまい

あとはlambda関数内で外部アクセスするコードを記述、検証してOKなら問題なしです。

なにか抜けや間違いなどありましたらご指摘いただけると幸いです。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした