[英]ChainableTemporaryCredentials getPromise and Missing credentials in config, if using AWS_CONFIG_FILE
[英]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.