我有一个AWS Lambda函数,它作为REST API公开。
当通过aws lambda控制台上的Test按钮调用它时,它可以工作。
当通过在线REST客户端调用它时,我收到403错误。它被创建为需要 - 无需身份验证(打开)。
我缺少什么配置?
答案 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响应。
希望有帮助。
答案 2 :(得分:1)
如果要从其他域访问CORS,必须首先确保在 AWS API网关中启用了CORS,因为API网关引发了403错误而不是lambda函数。您可以为方法或完整资源启用CORS。选择操作,然后选择启用CORS 。如果尚不存在,这会将OPTIONS方法添加到资源中。
在API网关上启用CORS将确保所有响应标头的Access-Control-Allow-Origin值都设置为“ *”(即允许所有来源,但您可以指定特定来源,例如http://localhost)。
始终确保您调用的是正确的网址。您可以从API网关的阶段部分或Lambda函数(如果您已将Lambda函数设置为集成端点)获取网址
您可以看到在方法和积分响应中设置的新标题。
答案 3 :(得分:0)
如果您使用的是AWS授权,则AWS将计算签名。
如果传递的get或post参数必须按字母顺序发送。
原因是因为当您传递添加的令牌计算签名UI或前端计算基础订单时,AWS会按照字母顺序重新计算签名以匹配签名。
尝试按字母顺序发送参数。
post = { 'id':23, '标签':'35353 }
答案 4 :(得分:0)
如果要将日志写入cloudwatch,请确保已配置CloudWatch日志角色ARN。可以通过API->设置进行访问。