簡體   English   中英

aws sdk for nodejs - 從 ChainableTemporaryCredentials object 獲取憑證

[英]aws sdk for nodejs - getting credentials from ChainableTemporaryCredentials object

我正在嘗試使用 AWS nodejs sdk ChainableTemporaryCredentials class獲取客戶 AWS 帳戶的臨時憑證。 這是我的代碼片段:

  
const credentials = new ChainableTemporaryCredentials({
  params: {
    RoleArn: "arn:aws:iam::123456789:role/Test-Customer-Role"
  },
  masterCredentials: new ChainableTemporaryCredentials({
    params: {
      RoleArn: "arn:aws:iam::123456789:role/Test-Automation-Role"
    }
  })
});

console.log("Credentials ", credentials.accessKeyId)   //it prints undefined

const client = new S3({ credentials });

s3.listBuckets(function(err, data) {
  if (err) console.log(err, err.stack);
  else     console.log(data);           // successful response with s3 buckets list is printed
});

我的要求是從上面的credentials object 獲取 sts 臨時 accessKeyId、secretAccessKey 和 sessionToken 變量,並將它們傳遞給另一個 nodejs 模塊以進行進一步的 AWS 操作。 但是,對於憑據 object 的所有 accessKeyId、secretAccessKey 和 sessionToken 屬性,我得到undefined的值。

我知道憑據 object 正在獲取正確的值,因為我能夠使用這些憑據列出 s3 存儲桶。

如何獲取由 ChainableTemporaryCredentials class 生成的臨時憑證?

謝謝。

或者您可以這樣做而無需使用 Promise 手動換行。

async function getAWSCredentials() {
  const credentials = new ChainableTemporaryCredentials({
    params: {
      RoleArn: "arn:aws:iam::123456789:role/Test-Customer-Role",
    },
    masterCredentials: new ChainableTemporaryCredentials({
      params: {
        RoleArn: "arn:aws:iam::123456789:role/Test-Automation-Role",
      },
    }),
  });

  return credentials.getPromise();
}

我通過像這樣將憑證代碼包裝在 Promise 中來使其工作。

let credentials
AWS.config.credentials = new ChainableTemporaryCredentials({
  params: {
    RoleArn: "arn:aws:iam::123456789:role/Test-Customer-Role"
  },
  masterCredentials: new ChainableTemporaryCredentials({
    params: {
      RoleArn: "arn:aws:iam::123456789:role/Test-Automation-Role"
    }
  })
});

        let promise = new Promise((resolve, reject) => {
          config.getCredentials(async (err) => {
            if (err) {
              console.error("Unable to load aws credentials", err.message);
              reject(err);
            } else {
              credentials = {
                accessKeyId: config.credentials.accessKeyId,
                secretAccessKey: config.credentials.secretAccessKey,
                sessionToken: config.credentials.sessionToken,
              };
              resolve(credentials);
            }
          });
        });

        credentials = await promise;
        console.log("Credentials ", credentials);

暫無
暫無

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

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