簡體   English   中英

如何僅使用 Cognito 身份池獲取憑據?

[英]How to get the credentials using only Cognito Identity pool?

我希望通過 Cognito 身份池獲取臨時 AWS 憑證。 然后該憑證應訪問 AWS Transcribe 服務。

我創建了一個身份池並檢查了未經身份驗證的用戶的選項,這樣我在調用CognitoIdentityCredentials時就不必提供令牌。

然后我在未經身份驗證的角色( Cognito_TestIdentityPoolUnauth_Role-New )中附加了轉錄服務的權限。

但是當我調用CognitoIdentityCredentials時,我沒有得到憑據。

這是我的代碼:-

    const AWS = require('aws-sdk');
    AWS.config.region = 'us-east-1';

    // Configure the credentials provider to use your identity pool
    AWS.config.credentials = new AWS.CognitoIdentityCredentials({
        identityPoolId: 'your_pool_id',
    });

    let accessKeyId, secretAccessKey, sessionToken;
    // Make the call to obtain credentials
    AWS.config.credentials.get(function(){
      // Credentials will be available when this function is called.
      accessKeyId = AWS.config.credentials.accessKeyId;
      secretAccessKey = AWS.config.credentials.secretAccessKey;
      sessionToken = AWS.config.credentials.sessionToken;
      console.log('data', accessKeyId, secretAccessKey, sessionToken);
    });
    

acessKeyIdsecretAccessKeysessionToken未定義的。 我在這里想念什么?

所以回答我自己的問題。 SDK 中的最新憑證不知何故未更新。 我也在同一個 function 中使用 S3 服務,並且該服務的信譽不同。 這是對我有用的更新代碼。 這是幫助我的線程

    const creds = new AWS.CognitoIdentityCredentials({
      IdentityPoolId: 'identity_pool_id',
    })

    AWS.config.update({
      region: 'us-east-1',
      credentials: creds,
    });

    AWS.config.credentials.get(function () {
      // Credentials will be available when this function is called.
      const accessKeyId = AWS.config.credentials.accessKeyId;
      const secretAccessKey = AWS.config.credentials.secretAccessKey;
      const sessionToken = AWS.config.credentials.sessionToken;
      console.log(accessKeyId, secretAccessKey, sessionToken);
    });

PS:- 使用節點 v14。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM