現在、Node.jsラムダ関数を作成しています。この関数では、着信リクエスターのパブリックIPアドレスを記録します。 API GatewayとLambdaの両方のドキュメントを1日中探してきましたが、解決策が見つかりませんでした。
Lambda event
オブジェクトには、ユーザーのIPを抽出するために使用できるリクエストメタデータが含まれていますか?
APIゲートウェイの$context.identity.sourceIp
のLambda関数。
APIマッピングテンプレート:
{
"sourceIP" : "$context.identity.sourceIp"
}
ラムダ関数:
'use strict';
console.log('Loading function');
exports.handler = (event, context, callback) => {
console.log('SourceIP =', event.sourceIP);
callback(null, event.sourceIP);
};
編集
より良い方法は、実際に確認することです
event['requestContext']['identity']['sourceIp']
同じオブジェクトからUser-Agentを取得することもできます
event['requestContext']['identity']['userAgent']
以下のセザールのコメントを参照してください。ヘッダーは簡単に偽装され、ユーザーはX-Forwarded-For
を任意に設定できます。上記のsourceIp
は、TCP=接続から取得されます。
元の回答
2017年9月の時点で、Lambdaプロキシ統合を使用してAPI Gatewayでメソッドを作成できます。これにより、
events['headers']['X-Forwarded-For']
1.1.1.1,214.25.52.1
のようになります
最初のIP 1.1.1.1
は、ユーザーのパブリックIPアドレスです。
API Gatewayでは、それは値です
$context.identity.sourceIp
マッピングテンプレートを介してLambdaに渡すことができます。