Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
24
Help us understand the problem. What is going on with this article?
@shim-hiko

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

More than 1 year has passed since last update.

「困ったら大体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なら問題なしです。

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

24
Help us understand the problem. What is going on with this article?
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
shim-hiko
業務、プライベート問わず実践した内容をまとめます。 PHP/JS/VB.net/VBA/Mysql/MariaDB/Oracle/AWS/Azure/GCP/Alibaba/Docker/k8s/宇宙は空にある

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
24
Help us understand the problem. What is going on with this article?