本文主要介绍如何基于STS Policy的使用规则在30分钟内搭建一个移动应用数据直传服务。直传指的是移动应用数据的上传和下载直接连接OSS,只有控制流连接自己的服务器。
背景信息
在移动互联的时代,手机App上传的数据越来越多。作为开发者,您可以利用OSS处理各种数据存储需求,从而更加专注于自己的应用逻辑。
基于OSS的移动应用数据直传服务具有以下优势:
- 数据安全:使用灵活的授权和鉴权方式进行数据的上传和下载,更加安全。
- 成本低廉:您不需要准备很多服务器。移动应用直接连接云存储OSS,只有控制流连接应用服务器。
- 高并发:支持海量用户并发访问。
- 弹性扩容:无限扩容的存储空间。
- 数据处理:和图片处理以及音视频转码搭配使用,方便灵活地进行数据处理。
流程介绍
移动应用直传服务的开发流程如下:

角色分析如下:
- Android/iOS 移动应用:即最终用户手机上的App,负责从应用服务器申请及使用STS凭证。
- OSS:即阿里云对象存储,负责处理移动应用的数据请求。
- RAM/STS:负责生成临时上传凭证,即Token。
- 应用服务器:即提供该Android/iOS应用的开发者开发的App后台服务,用于管理App上传和下载的Token,以及用户通过App上传数据的元信息。
实现步骤如下:
以下介绍应用服务器如何生成Token以及Android、iOS移动应用如何获取Token。
步骤1:开通STS服务
步骤2:配置应用服务器
步骤3:下载并安装移动应用
步骤4:体验移动应用直传服务
- 打开移动应用。
- 单击选择图片,选择需要上传的图片,并设置OSS文件名。
- 上传成功后,通过控制台查看上传结果。
核心代码解析
OSS初始化的代码解析如下:
- Android版本
// 推荐使用OSSAuthCredentialsProvider,Token过期后会自动刷新。 String stsServer = "应用服务器地址,例如https://example.com:8080" OSSCredentialProvider credentialProvider = new OSSAuthCredentialsProvider(stsServer); // 完成以下配置项。 ClientConfiguration conf = new ClientConfiguration(); conf.setConnectionTimeout(15 * 1000); // 连接超时时间,默认15秒。 conf.setSocketTimeout(15 * 1000); // Socket超时时间,默认15秒。 conf.setMaxConcurrentRequest(5); // 最大并发请求数,默认5个。 conf.setMaxErrorRetry(2); // 失败后最大重试次数,默认2次。 OSS oss = new OSSClient(getApplicationContext(), endpoint, credentialProvider, conf);
- iOS版本
OSSClient * client; ... // 推荐使用OSSAuthCredentialProvider,Token过期后会自动刷新。 id<OSSCredentialProvider> credential = [[OSSAuthCredentialProvider alloc] initWithAuthServerUrl:@"应用服务器地址,例如https://example.com:8080"]; client = [[OSSClient alloc] initWithEndpoint:endPoint credentialProvider:credential];