Amazon API Gateway IAM认证的示例与生成的JS SDK

Amazon API Gateway IAM authenticated example with generated JS SDK

本文关键字:SDK JS API Gateway IAM 认证 Amazon      更新时间:2023-09-26

我在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错误码。

我的问题是:是否有人成功地尝试使用生成的javascript SDK从亚马逊API网关与IAM认证?你能指出我哪里做错了吗?

谢谢。

我在AWS论坛上的几个人的帮助下解决了这个问题。看来API Gateway GET方法需要一个空的主体。默认情况下,如果您遵循生成的JS SDK附带的README示例,则在body中传递'undefined'或只是'{}'会导致不匹配的有效负载,从而导致计算错误的签名。

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

这应该是一个临时的锻炼,因为这可能会影响其他需要填充'body'的API网关方法。在我的例子中,只有GET方法。