7

我在为 AWS Cognito 设置凭证时遇到问题。

我在用例 4 上有来自AWS amazon-cognito-identity-js 的以下代码。

AWS.config.credentials = new AWS.CognitoIdentityCredentials({
            IdentityPoolId : '...', // your identity pool id here
            Logins : {
                // Change the key below according to the specific region your user pool is in.
                'cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>' : result.getIdToken().getJwtToken()
            }
        });

我检查了我发送的方法是否正确IdentityPoolId,但我在 accessKeyId 和 sessionToken 上未定义作为返回。LoginsCognitoIdentityCredentials

下面是我得到的。 CognitoIdentityCredentials {expired: true, expireTime: null, accessKeyId: undefined, sessionToken: undefined, params: Object…}

知道如何解决这个问题吗?

4

3 回答 3

1

分配new CognitoIdentityCredentitals()to的结果AWS.config.credentials实际上并没有获得凭据。它只是设置凭据提供程序。这就是为什么当您检查凭据时accessKeyId未定义并expired设置为 true 的原因。

如果您随后致电AWS.config.credentials.get()提供商,则会请求活动凭据。

但是,要指出的另一件事是,您不必调用AWS.config.credentials.get()即可使用服务,因为每个服务AWS.config.credentials.get()在设置时都会在后台调用。

AWS.config.credentials = new AWS.CognitoIdentityCredentials({ ... });
console.log(AWS.config.credentials.expired); // false

/**
 *  The dynamoDB service will call AWS.config.credentials.get()
 *  under the hood when it is being set up,
 *  so you can immediately start using services like this.
*/
const dynamoDB = new AWS.DynamoDB();
console.log(AWS.config.credentials.expired); // true
于 2020-09-11T09:42:10.447 回答
1

确保您已设置AWS.config.region

例如

AWS.config.region = 'us-east-1';
于 2018-08-18T17:29:50.570 回答
1

在此之后,您是否正在调用“AWS.config.credentials.get()”以确保凭证提供者请求凭证?

于 2017-05-13T22:03:04.440 回答