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

标签 javascript amazon-web-services aws-lambda aws-api-gateway amazon-iam

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

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

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

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

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

谢谢。

最佳答案

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

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

这应该是一个临时练习,因为这可能会影响您的其他需要填充“主体”的 API 网关方法。就我而言,我只有 GET 方法。

关于javascript - 使用生成的 JS SDK 的 Amazon API Gateway IAM 身份验证示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31664874/

相关文章:

javascript - 地铁 ui css tile 元素选择不起作用

amazon-web-services - CloudWatch Logs 代理的到期日期是多少?

go - 如何使用AWS Lambda函数获取URL参数?

amazon-web-services - Api网关从step函数获取输出结果?

amazon-web-services - 使用 CloudFormation 更新 AWS Lambda 函数

javascript - select2 为每个选项手动设置选项属性

javascript - 咕噜声 "reference error"和 "task not found"

amazon-web-services - 如何使用 blue/green-deployment 在代码管道中获取构建的 docker 镜像到部署步骤

amazon-web-services - 创建只允许 s3 的 AWS 访问 key

javascript - 为什么刷新 Firefox 不反射(reflect) javascript 代码更改?