Amazon web services AWS Api网关-Http集成客户端IP

Amazon web services AWS Api网关-Http集成客户端IP,amazon-web-services,aws-api-gateway,Amazon Web Services,Aws Api Gateway,我使用AWSAPI网关作为RESTAPI应用程序的http代理。 问题是,我似乎找不到一种方法来获取客户端ip地址,或者从api网关将其传递给我的应用程序。 我看到的唯一方法是使用lambda函数,但我不能使用它,因为它必须是http集成 还有其他方法吗?只需配置请求负载映射。您需要的是$context.identity.sourceIp。根据文件: $context.identity.sourceIp 向API发出请求的TCP连接的源IP地址 网关 示例文档可在上找到。您可以在集成响应的映射模

我使用AWSAPI网关作为RESTAPI应用程序的http代理。 问题是,我似乎找不到一种方法来获取客户端ip地址,或者从api网关将其传递给我的应用程序。 我看到的唯一方法是使用lambda函数,但我不能使用它,因为它必须是http集成


还有其他方法吗?

只需配置请求负载映射。您需要的是$context.identity.sourceIp。根据文件:

$context.identity.sourceIp

向API发出请求的TCP连接的源IP地址 网关


示例文档可在

上找到。您可以在集成响应的映射模板中执行此操作。调用$context.identity.sourceIp以获取sourceIp

如果您已经在使用映射模板,那么您可以在任何方便的地方添加它。如果您当前没有使用映射模板,只需要将sourceIp添加到传入的json请求正文中,请添加如下映射模板:

#set($allParams = $input.path('$'))
#set($discard=$allParams.put('sourceIp', $context.identity.sourceIp))
$input.json('$'))
如果您使用的是集成,则客户端IP在请求中可用(不需要模板映射)。按照上面链接中的代码示例,在“event”JSON对象中挖掘:

requestContext -> identity -> sourceIp

如果您正在使用API网关的HTTP API(2019年12月),请注意集成中的高级设置不足。您可以在1.0和2.0之间进行选择

以Kotlin代码为例,对于1.0,您可以从
APIGatewayProxyRequestEvent
检索源IP,如下所示

event.requestContext.identity.sourceIp
event.requestContext.http.sourceIp
对于2.0,您可以从
APIGatewayV2HTTPEvent
检索源IP,如下所示

event.requestContext.identity.sourceIp
event.requestContext.http.sourceIp

我决定使用映射模板将其添加到我的身体中。有没有一种方法可以简单地将属性添加到主体中?有关使用映射模板将sourceIp添加到主体中的示例,请参阅