我在他们的官方文档之后在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 SDK和IAM身份验证?你能说出我可能出错的地方吗?
谢谢 .
1 回答
我能够在AWS论坛上的几个人的帮助下解决这个问题 . 似乎API Gateway GET方法需要一个空体 . 默认情况下,如果您遵循生成的JS SDK附带的README示例,则将正文中的“undefined”或“{}”传递给GET会导致不匹配的有效负载,从而导致计算出错误的签名 .
截至目前,我只是通过硬编码
body = ''
在/lib/apiGatewayCore/sigV4Client.js中进行了一些小调整 .这应该是临时锻炼,因为这可能会影响您需要填充“正文”的其他API网关方法 . 就我而言,我只有GET方法 .