AWS Lambda函数REST API端点 - 403错误

时间:2015-10-13 17:38:02

标签: amazon-web-services aws-lambda

我有一个AWS Lambda函数,它作为REST API公开。

当通过aws lambda控制台上的Test按钮调用它时,它可以工作。

当通过在线REST客户端调用它时,我收到403错误。它被创建为需要 - 无需身份验证(打开)。

我缺少什么配置?

5 个答案:

答案 0 :(得分:12)

据说Lambda通过AWS API网关公开。 您在新的“无身份验证”API网关资源上获得403的一个原因是您尚未部署更改。

在API网关控制台中,点击Actions下拉列表,然后选择Deploy API

你应该好好去。

答案 1 :(得分:5)

也许您正在将请求发送到错误的端点。

通过向https://example.com/locate发送POST请求,我收到了403错误响应

但是,一旦我添加了阶段http://example.com/dev/locate并对该API进行了更改,它就可以正常工作,并返回200响应。

enter image description here

希望有帮助。

答案 2 :(得分:1)

如果要从其他域访问CORS,必须首先确保在 AWS API网关中启用了CORS,因为API网关引发了403错误而不是lambda函数。您可以为方法或完整资源启用CORS。选择操作,然后选择启用CORS 。如果尚不存在,这会将OPTIONS方法添加到资源中。

在API网关上启用CORS将确保所有响应标头的Access-Control-Allow-Origin值都设置为“ *”(即允许所有来源,但您可以指定特定来源,例如http://localhost)。

Enable CORS for method

始终确保您调用的是正确的网址。您可以从API网关的阶段部分或Lambda函数(如果您已将Lambda函数设置为集成端点)获取网址

API url -> API Gateway -> Stage

API Url -> Lambda function

您可以看到在方法和积分响应中设置的新标题。

enter image description here

答案 3 :(得分:0)

如果您使用的是AWS授权,则AWS将计算签名。

如果传递的get或post参数必须按字母顺序发送。

原因是因为当您传递添加的令牌计算签名UI或前端计算基础订单时,AWS会按照字母顺序重新计算签名以匹配签名。

尝试按字母顺序发送参数。

post = { 'id':23, '标签':'35353 }

答案 4 :(得分:0)

如果要将日志写入cloudwatch,请确保已配置CloudWatch日志角色ARN。可以通过API->设置进行访问。