参考文档:
https://help.aliyun.com/document_detail/57114.htm?spm=a2c4g.11186623.2.8.789552f3X7WYAv#multiTask7745
首先,登录控制台,开通视频点播服务。
一:创建子账号并授权AliyunSTSAssumeRoleAccess
使用阿里云主账号登录阿里云控制台,选择 访问控制 如图:
点击用户,创建用户 如图:
子用户创建成功之后,选择创建的子用户,给子用户赋予AliyunSTSAssumeRoleAccess权限。
搜索sts,选择AliyunSTSAssumeRoleAccess
点击用户登录名称 如图:
点击 创建AccessKey
将该子用户的AccessKey ID 和 AccessKey Secret保存好,备用。
参考文档:https://help.aliyun.com/document_detail/175967.html
二:创建RAM角色并授权sts
找到添加的角色名称,添加权限。
搜索vod,添加AliyunVODFullAccess权限
在角色名称列表找到刚刚添加的角色,点击进入详情页面:
找到ARN 复制后面的值备用。
三:生成令牌和过期时间
参考文档:
https://help.aliyun.com/document_detail/121136.html?spm=a2c4g.11186623.6.904.eeba614dirJ406
代码调试可以通过openAPI进行【选择对应的开发语言就行编辑】
注意,因为主账号无法调用openAPI,所以,想要通过openAPI测试代码有效性,需要登录上面创建的子账号,然后进入openAPI界面调试。
以nodejs为例
先在本地创建一个node项目文件夹
(使用npm init命令来创建)
创建文件为index.js
参考文件:https://www.jianshu.com/p/dc83181ff598
src文件中就存在了index.js文件
使用npm install express 安装express框架
这时,项目中的package.json文件中已经存在了相关的依赖包
然后,我们通过express官网的示例代码,集成到自己本地的项目中。
参考网站:https://www.npmjs.com/package/express
将express的示例代码拷贝进index.js文件中。
创建sts.js文件,将阿里云访问控制中的nodejs示例代码放入sts.js文件中并加以修改:
sts.js文件如图:
const Core = require('@alicloud/pop-core');
const client = new Core({
accessKeyId: '<accessKeyId>',
accessKeySecret: '<accessKeySecret>',
endpoint: 'https://sts.cn-shanghai.aliyuncs.com',
apiVersion: '2015-04-01'
});
const params = {
"RoleArn": "<arn>",
"RoleSessionName": "<rolename>"
}
const requestOption = {
method: 'POST'
};
const request = function (callback) {
client.request('AssumeRole', params, requestOption).then((result) => {
// console.log(JSON.stringify(result));
// console.log("succ");
callback(result)
}, (ex) => {
// console.log("fail");
callback(ex)
})
}
module.exports = request
其中,accessKeyId 就是之前子用户创建access Key时 保留下来的AccessKey.csv文件中的参数,填写到对应位置即可。
endpoint 中的cn-shanghai需要注意核对一下跟视频点播的存储管理中的区域是否一致。
RoleArn 就是之前创建角色后 点击角色名称在详情里看到的ARN;
RoleSessionName 就是角色名称。
Index.js文件代码做下调整
目的:将sts.js文件引入index.js中并调用,并将sts.js的结果返回:
const express = require('express')
const app = express()
const request=require('./sts')
//console.log(request)
app.get('/sts', function (req, res) {
request(function (result) {
res.send(result)
})
})
app.listen(81)
//console.log("sts启动:81")
使用node命令启动index.js文件,命令窗口就会打印出对应的结果。
因为程序访问的是81端口,所以要保证服务器上的81端口是打开状态。
然后,我们在浏览器中访问 域名:81/sts 服务就会把对应的参数以json格式返回了。