美文网首页
学习使用阿里云OSS

学习使用阿里云OSS

作者: __damon__ | 来源:发表于2017-03-23 22:17 被阅读0次
    Paste_Image.png

    OSS: Object Storage Service

    初次接触之控制台操作

    操作教程地址

    1. 开通
      40g/年 9块钱

    2. 创建存储空间

    存储空间(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:

    带身份验证的访问

    1. 使用控制台访问OSS:控制台中对用户隐藏了身份验证的细节,使用控制台访问OSS的用户无需关注细节。
    2. 使用SDK访问OSS:OSS提供了多种开发语言的SDK,SDK中实现了签名算法,只需要将AK信息作为参数输入即可。
    3. 根据API访问OSS:如果您想用自己喜欢的语言来封装调用RESTful API接口,您需要实现签名算法来计算签名。具体的签名算法可以参考API手册中的 在Header中包含签名 和 在URL中包含签名。

    接下来需要使用nodejs的sdk接入,首先了解下访问控制

    访问控制和AccessKey

    访问控制入口在管理控制台右上角用户头像下的dropbox中
    有三种访问控制

    1. AccessKey 完全访问权限
    2. RAM (Resource Access Management) 最佳实践
    3. STS (Security Token Service) 临时访问控制

    因为公司之前的后端哥们使用了AK操作, 那么根据手头上的项目,我首先使用AccessKey来操作。

    AK申请地址

    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.comwww.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交互需要的认证方式分类)

    1. 基于RAM和TST的授权方案
    2. 基于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

    在线演示

    相关文章

      网友评论

          本文标题:学习使用阿里云OSS

          本文链接:https://www.haomeiwen.com/subject/jrntottx.html