我正在尝试使用 AWS secret 管理器,当我使用常规凭证时它工作正常。
但我想为此使用 SSO。当我没有 .aws/credentials
文件并且只有 .aws/config
文件时。
在 AWS 文档中我看到了这个函数:
var params = {
accessToken: 'STRING_VALUE', /* required */
accountId: 'STRING_VALUE', /* required */
roleName: 'STRING_VALUE' /* required */
};
sso.getRoleCredentials(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
但我不明白在哪里可以获得访问 token 、帐户 ID 和角色名称。
事实上,我在 .aws/config
文件中看到了一个帐户 ID 和角色名称,但我不明白如何将它们放入我的代码中(可能类似于函数 SharedIniFileCredentials
) 以及如何获取访问 token ?
此外,
我尝试添加此环境变量 AWS_SDK_LOAD_CONFIG=1
但我仍然收到此错误:
Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1
最佳答案
您可以使用 credential-provider-sso 执行此操作.该文档给出了完整的解释,但提供了一个简单的示例:
const { SecretsManager } = require('@aws-sdk/client-secrets-manager');
const { fromSSO } = require('@aws-sdk/credential-provider-sso');
const secretsManager = new SecretsManager({credentials: fromSSO()});
secretsManager.listSecrets({}, (err, data) => {
console.error(err);
console.info(data);
})
这将使用在 AWS_PROFILE
环境变量中配置的配置文件,或者您可以将 {'profile': 'profilename'}
传递给 fromSSO
函数。
https://stackoverflow.com/questions/64478701/