使用生成的 JS SDK 的 Amazon API Gateway IAM 身份验证示例

Amazon API Gateway IAM authenticated example with generated JS SDK

我在 Amazon API 网关上创建了示例 GET 和 POST APIs,遵循他们的官方文档。我已经为这些 APIs 生成了 JS SDK,我用它从 S3 上托管的 client-side JS 文件调用这些 APIs。无需任何 'Authorization Type'.

即可完美运行

现在,当我将 GET 方法的 'Authorization Type' 设置为 'IAM' 时,我需要传递 IAM 凭据才能使其正常工作。尽管传递了我的 AWS 账户的根凭证,但我在响应中得到了这个 headers:

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

最后它 returns 一个 403 错误代码。

我的问题是:有没有人成功地尝试使用来自 Amazon API 网关的生成的 javascript SDK 和 IAM 身份验证?你能指出我可能哪里出错了吗?

谢谢。

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

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

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