阿里云OpenAPI 使用credentials这个sdk获取权限的问题?
使用credentials这个sdk的时候,我们需要利用在账号A的ecs的ram role去assume在另一个账号B的ram role来访问账号B的服务,这里整个过程是什么样的?我们代码是nodejs,是需要先用ecs_ram_role这个type获取到临时的accesskeyid跟key secret,然后再用ram_role_arn这个type去获取权限吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
先用ecs_ram_role这个type获取到临时的accesskeyid跟key secret和security token,然后再用ram_role_arn这个type去获取权限,下面是示例的sample code
async function main() {
    // 使用RamRoleArn初始化Credentials Client。
    const credentialsConfig = new Config({
      // 凭证类型。
        type: 'ecs_ram_role',
      // 选填,该ECS角色的角色名称,不填会自动获取,但是建议加上以减少请求次数
        roleName: 'roleName',
    })
    let credentialClient = new Credential(credentialsConfig);
    const config = new credentials_1.Config({
        // 凭证类型。
        type: 'ram_role_arn',
        accessKeyId: credentialClient.getAccessKeyId(),
        accessKeySecret: credentialClient.getAccessKeySecret(),
        securityToken: credentialClient.getSecurityToken(),
        // 要扮演的RAM角色ARN,示例值:acs:ram::123456789012:role/adminrole
        roleArn: 'acs:ram::123456789012:role/adminrole',
        roleSessionExpiration: 3600,
    });
    let client = new credentials_1.default(config);
    console.log(await client.getAccessKeyId());
}
```
--此回答整理自钉群“OpenAPI 开发者门户 - 值班服务群2群”