为什么我来自身份池的临时 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)});
我仔细检查了 accessKey
和 secretKey
是否已设置。当我使用 apiClient
调用我的端点时,我从网关收到 unauthorized
响应。
我的问题:
- 有没有办法检查临时凭据(
accessKey
和 secretKey
)是否适用于适当的身份验证角色?
- 是否可以找出 API 网关拒绝这些凭据的原因(也许我可以登录到 CloudWatch)?
正如 Ninad 在评论中指出的那样,我忘记在会话中传递密钥。但是,我错过的一个关键步骤是我所访问的端点上的授权必须设置为 AWS_IAM
。我之前将其设置为 Cognito 并指向用户池,这是不正确的。
我有一个具有身份验证角色的身份池。该角色的其中一项政策是拥有对 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)});
我仔细检查了 accessKey
和 secretKey
是否已设置。当我使用 apiClient
调用我的端点时,我从网关收到 unauthorized
响应。
我的问题:
- 有没有办法检查临时凭据(
accessKey
和secretKey
)是否适用于适当的身份验证角色? - 是否可以找出 API 网关拒绝这些凭据的原因(也许我可以登录到 CloudWatch)?
正如 Ninad 在评论中指出的那样,我忘记在会话中传递密钥。但是,我错过的一个关键步骤是我所访问的端点上的授权必须设置为 AWS_IAM
。我之前将其设置为 Cognito 并指向用户池,这是不正确的。