JavaScript sdk怎么使用sts访问oss
详细解答可以参考官方帮助文档OSS可以通过阿里云STS服务,临时进行授权访问。使用STS时请按以下步骤进行:
在官网控制台创建子账号,参考OSS STS。在官网控制台创建STS角色并赋予子账号扮演角色的权限,参考OSS STS。使用子账号的AccessKeyId/AccessKeySecret向STS申请临时token。使用临时token中的认证信息创建OSS的Client。使用OSS的Client访问OSS服务。
在使用STS访问OSS时,需要设置stsToken参数,如下面的例子所示:
let OSS = require('ali-oss');let STS = OSS.STS;let sts = new STS({ accessKeyId: '', accessKeySecret: ''});async function assumeRole () { try { let token = yield sts.assumeRole( '', '', '', ''); let client = new OSS({ region: '', accessKeyId: token.credentials.AccessKeyId, accessKeySecret: token.credentials.AccessKeySecret, stsToken: token.credentials.SecurityToken, bucket: '' }); } catch (e) { console.log(e); }}assumeRole();
在向STS申请临时token时,还可以指定自定义的STS Policy。这样申请的临时权限是所扮演角色的权限与Policy指定的权限的交集。下面的例子将通过指定STS Policy申请对my-bucket的只读权限,并指定临时token的过期时间为15分钟:
let OSS = require('ali-oss');let STS = OSS.STS;let sts = new STS({ accessKeyId: '', accessKeySecret: ''});let policy = { 'Statement': [ { 'Action': [ 'oss:Get*' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:my-bucket/*'] } ], 'Version': '1'};async function assumeRole () { try { let token = await sts.assumeRole( '', policy, 15 * 60, ''); let client = new OSS({ region: '', accessKeyId: token.credentials.AccessKeyId, accessKeySecret: token.credentials.AccessKeySecret, stsToken: token.credentials.SecurityToken, bucket: '' }); } catch (e) { console.log(e); }}assumeRole();
赞0
踩1