为什么我来自身份池的临时 AWS 凭证未经授权?

Why are my temporary AWS credentials from an Identity Pool unauthorized?

我有一个具有身份验证角色的身份池。该角色的其中一项政策是拥有对 API 网关端点的完全调用访问权限。当我使用 AWS.config.credentials.get() 创建临时凭证时,我会像这样创建 API 网关客户端的实例。

AWS.config.region = 'us-east-1';
var newClientCredentials = {
                accessKey: accessKey,
                secretKey: secretKey
            };

apiClient = apigClientFactory.newClient(newClientCredentials);
apiClient.myendpointPost({}, postRequest, requestParams).then(function(result) {console.log(result)});

我仔细检查了 accessKeysecretKey 是否已设置。当我使用 apiClient 调用我的端点时,我从网关收到 unauthorized 响应。

我的问题:

正如 Ninad 在评论中指出的那样,我忘记在会话中传递密钥。但是,我错过的一个关键步骤是我所访问的端点上的授权必须设置为 AWS_IAM。我之前将其设置为 Cognito 并指向用户池,这是不正确的。