node.js - AWS sdk 使用 sso 获取凭证

我正在尝试使用 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/

相关文章:

authentication - Telegram 登录小部件因禁用跨站点 cookie 而损坏

git - 无法推送到 bitbucket 403 "authentication failed"

reactjs - Stripe 参数_invalid_integer

java - 微服务之间的通信和使用 REST 的内聚

java - 修改 tomcat 上静态 Assets 的 header cookie 并使用 ap

matlab - 由凸包创建的曲面上点值的插值

python - 如何为带有输入的代码编写单元测试 (Python)

reactjs - React craco tailwind postcss 集成

python-3.x - 一个FITS文件的坐标转换问题

html - 输入类型 "email"在:focus state时变为 "text"