amazon-web-services - 如何从 .configuration 文件加载配置文件并根据角色 arn 承担角色?
问题描述
我正在测试@aws-sdk 版本 3,我正在尝试从我的配置文件中加载配置文件(工作正常),然后承担一个角色。这是我无法弄清楚如何做到这一点的地方。在 aws-sdk 第 2 版中,我确实喜欢这样
AWS.config.credentials = new AWS.TemporaryCredentials({
RoleArn: 'arn:aws:iam::XXX:role/XXX',
}, new AWS.SharedIniFileCredentials({ profile: 'myprofile' }));
}
如何使用新的 sdk 做同样的事情?要传递个人资料名称,我会这样做
const { SSM } = require('@aws-sdk/client-ssm-node');
const ssm = new SSM({
profile: 'myprofile'
});
我已经安装了 @aws-sdk/credential-provider-node 和 @aws-sdk/credential-provider-ini 但没有成功弄清楚如何像我想要的那样传递凭据,这里的文档https://www。 npmjs.com/package/@aws-sdk/credential-provider-node并没有告诉我太多。那么,我该怎么做呢?
解决方案
原来我看错了nuget包。承担角色是一种方法。
const { SSM } = require('@aws-sdk/client-ssm-node');
const { STSClient, AssumeRoleCommand } = require('@aws-sdk/client-sts-node');
const sTS = new STSClient({ profile: 'myProfile' });
const params = {
RoleArn: 'arn:aws:iam::XXX:role/XXX',
RoleSessionName: 'tempUser',
};
const assumeRoleCommand = new AssumeRoleCommand(params);
let assumedRole = null;
try {
assumedRole = await sTS.send(assumeRoleCommand);
} catch (error) {
console.log(error);
}
const ssm = new SSM({
profile: 'myProfile',
credentials: {
accessKeyId: assumedRole.Credentials.AccessKeyId,
secretAccessKey: assumedRole.Credentials.SecretAccessKey,
expiration: assumedRole.Credentials.Expiration,
sessionToken: assumedRole.Credentials.SessionToken,
},
});
推荐阅读
- ajax - 400 错误时无法获取数据。在颤振中
- monitoring - 如何在 Apache Superset 中监控 API 调用
- spring - 在此 ResultSet Postgresql Spring Data JPA 中找不到列名
- c - 恢复位域截断地址
- css - 在 Bootstrap 3 中的两个 div.row 之间添加边距
- python - discord.py 更改 on_member_join 上文本通道的权限
- java - 每当我尝试在调试模式下运行应用程序(在物理设备和虚拟设备上)时,android studio 都会显示此错误
- javascript - 我想更改文本区域中显示的值文本中的颜色。如图所示
- html - 如何从提交的 html 表单中检索值并将其存储在 mongoose 模式中的嵌套文档中
- laravel - 如何在 laravel 8 中使用 slug 而不是 id