【发布时间】:2018-12-18 19:07:44
【问题描述】:
我使用无服务器开发了一个 AWS Lambda 代理,以便调用私有 API、处理其结果并返回它。
这很简单,尽管一旦在 HTTP 请求中设置了“X-Forwarded-For”,私有 API 就不会返回任何内容。
我还没有找到在 CloudFront、CloudFormation 或 API Gateway 中将此标头列入黑名单的方法。
我应该在哪里寻找?
作为参考,我使用的serverless.yml:
service: mylambda
provider:
name: aws
runtime: java8
memorySize: 1024
timeout: 240
package:
artifact: target/awslambda-1.0-SNAPSHOT.jar
functions:
leboncoinlist:
handler: com.example.awslambda.handler.HttpRequestHandler
events:
- http:
path: list
method: post
cors: true
【问题讨论】:
-
API Gateway 是使用 Lambda 代理还是 Lambda 集成?
-
哦对了,我忘了指定它是 Lambda 代理
-
使用 Lambda Proxy 意味着将整个消息(包括所有标头)直接传递给 Lambda。您必须将 Lambda 与正文映射集成以阻止此标头被传入。我认为您可能以错误的方式解决问题。与其试图阻止头文件被传入,不如检查你的 lambda 代码,找出为什么额外的头文件导致它失败,然后修复它。
-
我实际上是在使用 Apache 的 HTTP 客户端从我的 Lambda 调用不是我的 HTTP 端点。麻烦的是,亚马逊在这个拨出电话上附加了不需要的标头,我无法在我的 lambda 代码中控制它。
-
对不起,我误解了你的问题,虽然现在我更困惑了。您是说通过 API Gateway 端点附加到传入 API 请求的 x-forward-for 值正在传递给您从 lambda 调用的私有 API?如果是这样,这仍然是您在 Lambda 中的代码的问题。
标签: aws-lambda amazon-cloudfront serverless-framework aws-serverless