似乎无法调用通过CloudFront发行版启用了AWS_IAM保护的REST API。
这里是如何重现此内容:
现在使用经过身份验证的用户(我使用Cognito UserPool用户并通过aws-amplify进行呼叫)>
我得到的错误是:
{“ message”:“我们计算出的请求签名与您提供的签名不匹配。请检查您的AWS Secret Access密钥和签名方法。有关详细信息,请参阅服务文档。”}
我简直不敢相信AWS不支持自定义域后面的受AWS_IAM保护的端点,因为这必须是一个非常常见的用例。
因此,您能为我提供实现此目的的详细列表吗?
谢谢
似乎无法调用通过CloudFront分发启用了AWS_IAM保护的REST API。重现此内容的方法如下:使用API Gateway创建REST API保护...
我怀疑这是不可能的,有两个原因。
如果为API设置了自定义域,API网关现在将使用该自定义域作为主机来生成签名。
CloudFront不支持IAM身份验证以匹配分配的呼叫。正如其他人所强调的那样,SigV4依赖于主机标头,并且在访问您的域时无法计算签名(没有做一些棘手的事情,例如在客户端对API网关域进行硬编码,然后使用该标头对SigV4进行硬编码)。但是,您可以使用Lambda @ Edge函数将IAM从分发版本添加到API。
尝试转到您的api网关控制台并执行以下操作:
在APIGW中创建一个自定义域,如www.example.com,并将该域映射到特定的API,但不要将www.example.com解析为APIGW的域