AWS Lambda 函数 API 端点 - 403 和 415 错误

Posted

技术标签:

【中文标题】AWS Lambda 函数 API 端点 - 403 和 415 错误【英文标题】:AWS Lambda function API end point - 403 and 415 error 【发布时间】:2019-05-29 10:09:43 【问题描述】:

我已经设置了一个 AWS Lambda 函数,并尝试从前端进行访问。它在浏览器中运行良好,并返回我期望的响应。当我尝试从localhost 访问它时,我得到一个 403。我尝试按照here 和here 概述的步骤进行操作(没有像一些评论者提到的那样吹走我的整个 API),但无济于事。我在所有更改后重新部署。启用 CORS 后,我不再收到 403,而是收到 415。不确定下一步该怎么做,因为 Cloudwatch 日志中没有任何内容。

更多细节:我正在使用 Lambda:

我有一个 GET 方法(启用 CORS 后出现“选项”):

当我点击“启用 CORS”时会发生以下情况:

因为它在屏幕截图中被截断,这里是完整的标题列表:'Content-Type,X-Amz-Date,Authorization,X-Api-Key,X-Amz-Security-Token'

这是我的方法响应:

这是我在前端调用 lambda 的方式:

sendVerificationCode() 
    let data = 
      paramOne: x,
      paramTwo: 'string',
      paramThree: 'string'
    

    return this.get('ajax').request('https://something.execute-api.us-east-1.amazonaws.com/beta/', 
      host: 'https://something.execute-api.us-east-1.amazonaws.com',
      method: 'GET',
      data: data
    ).then((response) => 
      console.log('response', response)
    );
  

这是我遇到的错误。第一个错误,在我启用 CORS 之前:

在我启用 CORS 之后:

【问题讨论】:

API Gateway CORS: no 'Access-Control-Allow-Origin' header的可能重复 Hii kira 我认为在您应该使用 lambda 代理并手动发送 cors 标头之前已经问过这个问题,就像接受的答案中提到的那样 您好!你能解释一下为什么我应该使用 Lambda 代理而不是 Lambda 吗?一定有办法用 Lambda 做到这一点。 我这样说是因为我自己在没有 lambda 代理的情况下尝试了很多,经过很多努力我失败并切换到 lambda 代理,其他人也发生了同样的事情 【参考方案1】:

CORS 对 API 网关有点挑剔,您是否尝试过在根目录和方法上都启用它?这以前对我有用。您也可以尝试为您的 api 网关项目下载 javascript SDK 并使用它来访问路由,因为它为您设置了所有正确的设置。

【讨论】:

感谢您的提示!由于某种原因,在根上禁用的选项被禁用。

以上是关于AWS Lambda 函数 API 端点 - 403 和 415 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 GET 请求将参数传递给 AWS Lambda 函数?

从 API Gateway 获取 terraform 中 AWS lambda 的端点

AWS Lambda 网关 API 给出错误消息

如何在AWS Lambda函数中进行外部api调用

AWS Lambda 和 API Gateway 响应集成问题

在 SQS 消息触发的 Lambda 上跟踪 AWS API Gateway request_id