抖音小程序直传实践
抖音小程序直传OSS是指您在使用抖音小程序时,可以直接将内容(例如图片、视频等)上传至OSS,而不是先上传到小程序服务器再由服务器转发至OSS。通过抖音小程序直传的方式能够减轻服务器压力,提升上传速度和用户体验。
前提条件
准备工作
通过抖音小程序直传文件到OSS时,为确保上传请求的安全性,客户端不直接使用长期访问密钥,而是通过RAM用户扮演RAM角色的方式向STS服务发起请求获取临时访问凭证。
操作一:在访问控制创建RAM用户
首先,创建一个RAM用户,并获取对应的访问密钥,作为业务服务器的应用程序的长期身份凭证。
- 使用云账号或账号管理员登录RAM控制台。
- 在左侧导航栏,选择身份管理 > 用户。
- 单击创建用户。
- 输入登录名称和显示名称。
- 在访问方式区域下,选择使用永久 AccessKey 访问,然后单击确定。
RAM用户的AccessKey Secret只在创建时显示,后续不支持查看,请妥善保管。
- 单击操作下的复制,保存调用密钥(AccessKey ID和AccessKey Secret)。
操作二:在访问控制为RAM用户授予调用AssumeRole接口的权限
创建RAM用户后,需要授予RAM用户调用STS服务的AssumeRole接口的权限,使其可以通过扮演RAM角色来获取临时身份凭证。
- 在左侧导航栏,选择身份管理 > 用户。
- 在用户页面,找到目标RAM用户,然后单击RAM用户右侧的添加权限。
- 在新增授权页面,选择AliyunSTSAssumeRoleAccess系统策略。
授予RAM用户调用STS服务AssumeRole接口的固定权限是AliyunSTSAssumeRoleAccess,与后续获取临时访问凭证以及通过临时访问凭证发起OSS请求所需权限无关。
- 单击确认新增授权。
操作三:在访问控制创建RAM角色
为当前云账号创建一个RAM角色,并获取对应的角色的ARN(Aliyun Resource Name,阿里云资源名称),用于RAM用户之后进行扮演。
- 在左侧导航栏,选择身份管理 > 角色。
- 单击创建角色,可信实体类型选择云账号。
- 选择当前云账号,单击确定。
- 填写角色名称,单击确定。
- 在RAM角色管理页面,单击复制,保存角色的ARN。

操作四:在访问控制创建上传文件的权限策略
按照最小授权原则,为RAM角色创建一个自定义权限策略,限制只能向指定OSS的存储空间进行上传操作。
- 在左侧导航栏,选择权限管理 > 权限策略。
- 单击创建权限策略。
- 在创建权限策略页面,单击脚本编辑,将以下脚本中的
替换为准备工作中创建的Bucket名称web-direct-upload。 - 策略配置完成后,单击继续编辑基本信息。
- 在基本信息区域,填写策略名称,然后单击确定。
操作五:在访问控制为RAM角色授予权限
为RAM角色授予创建的自定义权限,以便该RAM角色被扮演时能获取所需的权限。
- 在左侧导航栏,选择身份管理 > 角色。
- 在角色页面,找到目标RAM角色,然后单击RAM角色右侧的新增授权。
- 在新增授权页面下,选择自定义策略,选择已创建的自定义权限策略。

- 单击确定。
方案部署
- 修改示例工程express-douyin.zip中的
getToken.js配置。 - 获取客户端签名信息。
- 体验抖音开发者工具直传文件到OSS。

