3

我按照官方文档在 Amazon API Gateway 上创建了示例 GET 和 POST API。我已经为这些 API 生成了 JS SDK,我用它来从托管在 S3 上的客户端 JS 文件调用这些 API。无需任何“授权类型”即可完美运行。

现在,当我将 GET 方法的“授权类型”设置为“IAM”时,我需要传递 IAM 凭证才能使其工作。尽管传递了我的 AWS 账户的根凭证,但我在响应标头中得到了这个:

x-amzn-ErrorType:InvalidSignatureException:http://internal.amazon.com/coral/com.amazon.coral.service/

最后它返回一个403错误代码。

我的问题是:有没有人成功地尝试使用从 Amazon API Gateway 生成的 JavaScript 开发工具包和 IAM 身份验证?你能指出我可能出错的地方吗?

谢谢。

4

1 回答 1

3

在 AWS 论坛上的少数人的帮助下,我能够解决这个问题。API Gateway GET 方法似乎需要一个空的主体。默认情况下,如果您遵循生成的 JS SDK 附带的 README 示例,则将主体内的“未定义”或仅“{}”传递给 GET 会导致不匹配的有效负载,这会导致计算的签名不正确。

到目前为止,我只是通过硬编码在 /lib/apiGatewayCore/sigV4Client.js 中做了一个小调整body = ''

这应该是一个临时锻炼,因为这可能会影响您需要填充“body”的其他 API Gateway 方法。就我而言,我只有 GET 方法。

于 2015-07-30T10:21:24.170 回答