【问题标题】:AWS sdk get credentials using ssoAWS sdk 使用 sso 获取凭证
【发布时间】:2021-02-05 06:16:23
【问题描述】:

我正在尝试使用 AWS 机密管理器,当我使用常规凭证时,它可以正常工作。 但我想为此使用 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
});

但我不明白在哪里可以获得访问令牌、帐户 ID 和角色名称。 确实我看到.aws/config 文件中有一个帐户 ID 和角色名称,但我不明白如何将它们放入我的代码中(可能类似于函数SharedIniFileCredentials)以及如何获得访问令牌?

另外, 我试图添加这个环境变量AWS_SDK_LOAD_CONFIG=1,但我仍然收到这个错误:

Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1 

【问题讨论】:

    标签: node.js aws-sdk aws-sdk-js aws-sdk-nodejs


    【解决方案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 函数。

    【讨论】:

      猜你喜欢
      • 2023-04-07
      • 1970-01-01
      • 2019-11-21
      • 2021-05-12
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      • 2022-09-23
      • 1970-01-01
      相关资源
      最近更新 更多