許可されたIPアドレスからの呼び出しのみを受け入れる企業バックエンドのAPIにアクセスする必要があります。
現在、モバイルクライアントは、いくつかの変換を実行するAWS Lambda関数を呼び出してから、承認されたパブリックIPアドレスが割り当てられているEC2インスタンスで別のサービスを呼び出しています。この2番目のサービスは、企業バックエンドへの最後の呼び出しを実行して、データをラムダに返し、次にクライアントに返します。
これは正常に機能していますが、回避したいアーキテクチャに不必要な複雑さが加わります。
EC2でこの余分なサービスが発生しないように、パブリックIPをラムダ関数に割り当てることは可能ですか?
ありがとう、
GA
簡単な解決策は次のとおりです。
NATインスタンスまたはNATゲートウェイをElasticIPアドレスで作成する
NATデバイスをデフォルトルートとして使用するプライベートVPCサブネットを作成します
そのプライベートサブネットに関連付けられたLambda関数をVPCにデプロイします。
作成された各Lambdaコンテナは、そのプライベートサブネット上にエラスティックネットワークインターフェイス(ENI)を持ちます。つまり、NATデバイスがデフォルトゲートウェイになります。つまり、NAT =デバイスのEIPは、インターネットにバインドされている内部発信接続の送信元IPアドレスになります。
ラムダ関数コード自体を変更する必要はありません。
上記は公式の解決策です。
また、現在のテクノロジーでは、Lambda関数をVPC内に配置すると、新しいElastic Network Interface(ENI)を割り当てる必要があるときはいつでも、コールドスタート時間に影響を与えることに注意してください。
Lambda関数がVPC内で実行するように設定されている場合、追加のENI起動ペナルティが発生します。
メソッドリクエストヘッダーから「source_ip」または「X-Forwarded-For」を取得できます。そして、イベントに変換してから、ラムダ関数で処理します。