添加自定义授权会出错:我们计算的请求签名与您提供的签名不匹配

时间:2016-04-01 14:40:32

标签: aws-lambda aws-api-gateway

我有时会遇到这个错误(并非总是如此)。我在API网关功能中创建资源和方法。然后我将它映射到Lambda函数。在那里测试它,一切正常。

现在我在方法中添加自定义授权功能。现在,如果我在那里测试,

  • 如果我不提供Authorization标头,它可以工作(因为它尚未部署。部署后,它将需要Auth标头)
  • 但是,如果我提供授权令牌,则会收到错误:
  

我们计算的请求签名与您的签名不符   提供。检查您的AWS Secret Access Key和签名方法。请教   有关详细信息的服务文档。\ n \ n Canonical String for   这个要求应该有   一直\ n' POST \ N / 2015年3月31日/功能/ ARN%3Aaws%3Alambda%3Aus-EAS

更多细节:删除了属于此方法的lambda函数。然后我重新创建了具有相同名称的函数。并注意到在部署API时删除了该方法。所以我重新创建了映射并将其映射到Lambda函数。从那时起,我就面临着这个问题。我确信如果我更改Lambda的名称,它可能会解决问题。但我认为它是AWS的一个错误,而不是我的最终目标。需要澄清我是否有任何错误?

1 个答案:

答案 0 :(得分:1)

看起来当前部署的API版本正在将Authorization标头从方法请求转发到集成请求(Lambda)。如果您正在尝试修复API的当前状态,那么我建议从方法请求中删除Authorization标头,这也将从集成请求中删除它。这应该可以解决Lambda签名错误。

如果您尝试在方法上使用自定义授权程序,则无需在方法请求中设置授权标头。您只需将授权者身份来源设置为' method.request.header.Authorization'