web-dev-qa-db-ja.com

AWSのLambda関数にパブリックIPを割り当てることは可能ですか?

許可されたIPアドレスからの呼び出しのみを受け入れる企業バックエンドのAPIにアクセスする必要があります。

現在、モバイルクライアントは、いくつかの変換を実行するAWS Lambda関数を呼び出してから、承認されたパブリックIPアドレスが割り当てられているEC2インスタンスで別のサービスを呼び出しています。この2番目のサービスは、企業バックエンドへの最後の呼び出しを実行して、データをラムダに返し、次にクライアントに返します。

これは正常に機能していますが、回避したいアーキテクチャに不必要な複雑さが加わります。

EC2でこの余分なサービスが発生しないように、パブリックIPをラムダ関数に割り当てることは可能ですか?

ありがとう、

GA

9
G A

簡単な解決策は次のとおりです。

  • NATインスタンスまたはNATゲートウェイをElasticIPアドレスで作成する

  • NATデバイスをデフォルトルートとして使用するプライベートVPCサブネットを作成します

  • そのプライベートサブネットに関連付けられたLambda関数をVPCにデプロイします。

作成された各Lambdaコンテナは、そのプライベートサブネット上にエラスティックネットワークインターフェイス(ENI)を持ちます。つまり、NATデバイスがデフォルトゲートウェイになります。つまり、NAT =デバイスのEIPは、インターネットにバインドされている内部発信接続の送信元IPアドレスになります。

ラムダ関数コード自体を変更する必要はありません。

上記は公式の解決策です。

また、現在のテクノロジーでは、Lambda関数をVPC内に配置すると、新しいElastic Network Interface(ENI)を割り当てる必要があるときはいつでも、コールドスタート時間に影響を与えることに注意してください。

Lambda関数がVPC内で実行するように設定されている場合、追加のENI起動ペナルティが発生します。

https://docs.aws.Amazon.com/lambda/latest/dg/vpc.html

10

メソッドリクエストヘッダーから「source_ip」または「X-Forwarded-For」を取得できます。そして、イベントに変換してから、ラムダ関数で処理します。

0
XC.