OSS: Object Storage Service
初次接触之控制台操作
-
开通
40g/年 9块钱 -
创建存储空间
存储空间(Bucket)
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。您可以设置和修改存储空间属性用来控制地域、访问权限、生命周期等,这些属性设置直接作用于该存储空间内所有对象,因此您可以通过灵活创建不同的存储空间来完成不同的管理功能。
同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
每个用户可以拥有多个存储空间。
存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。
存储空间内部的对象数目没有限制。
存储空间的命名规范如下:
只能包括小写字母、数字和短横线(-)。
必须以小写字母或者数字开头和结尾。
长度必须在3-63字节之间。
基本名词解释
没有子目录的一个空间,所有存储对象直接放在里面。
基本配置:
bucketName: damon4bucket
权限: 公共读
OSS外网域名: damon4bucket.oss-cn-shanghai.aliyuncs.com OSS内网域名:damon4bucket.oss-cn-shanghai-internal.aliyuncs.com
其他配置暂时不理
Paste_Image.png上传文件
您已经创建了存储空间,现在您可以上传任意类型文件到存储空间中。通过 OSS 控制台您可以上传小于500MB 的文件。如您要上传的文件大于500MB,请参阅 阿里云 OSS 开发人员指南 中的对应章节。
文件分享
创建后得到的文件地址如下:
http://damon4bucket.oss-cn-shanghai.aliyuncs.com/www.cr173.com001.jpg
可以绑定自定义域名,暂不理
删除对象文件和删除bucket
控制台操作都是傻瓜式操作,不作过多解释。
Paste_Image.png客户端一览
Paste_Image.png开发者指南
不是文件系统,所以注意文件名,如果重复那么就会被覆盖。
访问oss:
带身份验证的访问
- 使用控制台访问OSS:控制台中对用户隐藏了身份验证的细节,使用控制台访问OSS的用户无需关注细节。
- 使用SDK访问OSS:OSS提供了多种开发语言的SDK,SDK中实现了签名算法,只需要将AK信息作为参数输入即可。
- 根据API访问OSS:如果您想用自己喜欢的语言来封装调用RESTful API接口,您需要实现签名算法来计算签名。具体的签名算法可以参考API手册中的 在Header中包含签名 和 在URL中包含签名。
接下来需要使用nodejs的sdk接入,首先了解下访问控制
访问控制和AccessKey
访问控制入口在管理控制台右上角用户头像下的dropbox中
有三种访问控制
- AccessKey 完全访问权限
- RAM (Resource Access Management) 最佳实践
- STS (Security Token Service) 临时访问控制
因为公司之前的后端哥们使用了AK操作, 那么根据手头上的项目,我首先使用AccessKey来操作。
AccessKeyId: xxxxxxxxx... => length = 16
AccessKeySecret: xxxxxxxxxxxxxx..... => length = 30
请谨慎使用AK访问!
- 跨域访问
需求: 用户上传文件
oss地址 your_server地址
由于跨域限制,用户只能向your_server上传,然后通过your_server中转到oss
原理:
(http三次握手中建立)
用户访问请求头带有origin:your_server => 1
访问的目标服务器(oss服务器)返回头带有: Access-Control-Allow-Origin: your_server / * => 2
如果返回的结果是不能访问,那么浏览器就会拦截请求 => 3(握手成功或者失败)
使用跨域请求的时候需要关注浏览器是否开启了Cache功能。当运行在同一个浏览器上分别来源于www.a.com和www.b.com的两个页面都同时请求同一个跨域资源的时候,如果www.a.com的请求先到达服务器,服务器将资源带上Access-Control-Allow-Origin的Header为www.a.com返回给用户。这个时候www.b.com又发起了请求,浏览器会将Cache的上一次请求返回给用户,此时Header的内容和CORS的要求不匹配,就会导致后面的请求失败。
设置跨域资源共享
用户直接上传资源到oss,不用经过oss,但是必须通过STS给予临时访问权限,否则会有恶意上传的问题
先设置好跨域资源共享
使用sdk访问
当用户以个人身份向OSS发送请求时,其身份验证的实现如下:
1. 用户将发送的请求按照OSS指定的格式生成签名字符串。
2. 用户使用AccessKeySecret对签名字符串进行加密产生验证码。
3. OSS收到请求以后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码。
4. 如果计算出来的验证码和提供的一样即认为该请求是有效的。
否则,OSS将拒绝处理这次请求,并返回HTTP 403错误。
对于用户来说可以直接使用OSS提供的SDK,配合不同类型的AccessKey即可实现不同的身份验证。
基于OSS的移动开发
Paste_Image.png基本架构分为两种(以用户和OSS交互需要的认证方式分类)
- 基于RAM和TST的授权方案
- 基于AccessKey的URL凭证方案
AK方式的上传
1. 客户端向应用服务器发出上传文件到OSS的请求。
2. 应用服务器回复客户端,将上传凭证(签名URL或者表单)返回给客户端。
3. 客户端获取上传到OSS的授权(签名URL或者表单),调用OSS提供的移动端SDK上传或者直接表单上传。
4. 客户端成功上传数据到OSS。如果没有设置回调,则流程结束。如果设置了回调功能,OSS会调用相关的接口。
AK方式的下载
1. 客户端向应用服务器发出下载OSS文件的请求。
2. 应用服务器回复客户端,将签名URL返回给客户端。
3. 客户端获取下载OSS文件的授权(签名URL),调用OSS提供的移动端SDK下载。
4. 客户端成功从OSS下载文件。
最佳实践是通过RAM实现
实现文件上传
主要看第三方上传(就是客户端直接上传至OSS,不需要中间服务器)
可以使用OSS搭建静态网站,只要在bucket属性设置中的静态页面设置入口页面的文件名就可以了
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
本来想把文件上传做好的,但是回调的验证还是没有搞通过。明天再整理整理。
Paste_Image.png Paste_Image.png
网友评论