63

私は現在、着信リクエスターのパブリック IP アドレスをログに記録したい Node.js ラムダ関数を作成しています。API Gateway と Lambda の両方のドキュメントを 1 日中調べましたが、解決策が見つかりませんでした。

ラムダeventオブジェクトには、ユーザーの IP を抽出するために使用できる要求メタデータが含まれていますか?

4

5 に答える 5

64

HTTP API の更新

@Elijah のコメントを追加します。HTTP API の形式は次のようになります。

event['requestContext']['http']['sourceIp']

編集

より良い方法は、実際に確認することです

event['requestContext']['identity']['sourceIp']

同じオブジェクトから User-Agent を取得することもできます

event['requestContext']['identity']['userAgent']

以下のCesarのコメントを参照してください。ヘッダーは簡単に偽装され、ユーザーはX-Forwarded-For何にでも設定できます。私の知る限り、sourceIp上記はTCP接続から取得されます。

元の答え

2017 年 9 月の時点で、Lambda プロキシ統合を使用して API Gateway でメソッドを作成できます。これにより、次へのアクセスが可能になります。

events['headers']['X-Forwarded-For']

次のようになります1.1.1.1,214.25.52.1

最初の ip1.1.1.1は、ユーザーのパブリック IP アドレスです。

于 2017-09-03T08:45:35.040 に答える
51

$context.identity.sourceIp以下は、Lambda 関数でAPI Gateway を使用する簡単なデモです。

API マッピング テンプレート:

{
    "sourceIP" : "$context.identity.sourceIp"
}

ラムダ関数:

'use strict';
console.log('Loading function');
exports.handler = (event, context, callback) => {
    console.log('SourceIP =', event.identity.sourceIP);
    callback(null, event.identity.sourceIP);
};
于 2016-06-01T05:44:48.087 に答える
17

APIゲートウェイでは、それは値です

$context.identity.sourceIp

http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html#context-variable-reference.

マッピング テンプレートを介して Lambda に渡すことができます。

于 2015-10-11T21:06:37.327 に答える