云计算系列之阿里云OSS云存储实战解析
阿里云对象存储服务(Object Storage Service),简称 OSS,是阿里云提供的海量、安全、低成本、高可靠的云存储服务。OSS 具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
内容导读
- 阿里云对象存储OSS简介
- 阿里云OSS基本操作
- 阿里云OSS的API与SDK介绍
- 阿里云OSS静态网站托管
- 云存储OSS案例解析
一、阿里云对象存储OSS简介
1、什么是阿里云OSS
阿里云对象存储服务(Object Storage Service),简称 OSS,是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低于 99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995%。
OSS 具有与平台无关的 RESTful API 接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
可以使用阿里云提供的 API、SDK 接口或者 OSS 迁移工具轻松地将海量数据移入或移出阿里云 OSS。
数据存储到阿里云 OSS 以后,可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式。
2、相关概念
存储类型(Storage Class)
OSS 提供标准、低频访问、归档三种存储类型,全面覆盖从热到冷的各种数据存储场景。
存储空间(Bucket)
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。
对象/文件(Object)
对象是 OSS 存储数据的基本单元,也被称为 OSS 的文件。对象由元信息(Object Meta)、用户数据(Data)和文件名(Key)组成。
地域(Region)
地域表示 OSS 的数据中心所在物理位置。您可以根据费用、请求来源等选择合适的地域创建 Bucket。
访问域名(Endpoint)
Endpoint 表示 OSS 对外服务的访问域名。OSS 以 HTTP RESTful API 的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。
访问密钥(AccessKey)
AccessKey(简称 AK)指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。OSS 通过使用 AccessKeyId 和 AccessKeySecret 对称加密的方法来验证某个请求的发送者身份。AccessKeyId 用于标识用户;AccessKeySecret 是用户用于加密签名字符串和 OSS 用来验证签名字符串的密钥,必须保密。
3、相关服务
图片处理(IMG):对存储在 OSS 上的图片进行格式转换、缩放、裁剪、旋转、添加水印等各种操作。
云服务器(ECS):提供简单高效、处理能力可弹性伸缩的云端计算服务。
内容分发网络(CDN):将 OSS 资源缓存到各区域的边缘节点,利用边缘节点缓存的数据,提升同一个文件,被边缘节点客户大量重复下载的体验。
E-MapReduce:构建于 ECS 上的大数据处理的系统解决方案,基于开源的 Apache Hadoop 和 Apache Spark,方便您分析和处理自己的数据。
媒体处理:将存储于 OSS 的音视频转码成适合在 PC、TV 以及移动终端上播放的格式。并基于海量数据深度学习,对音视频的内容、文字、语音、场景多模态分析,实现智能审核、内容理解、智能编辑。
4、管理OSS
通过 OSS 控制台管理 OSS
OSS 提供了 Web 服务页面,您可以登录 OSS 管理控制台,管理您的 OSS。
通过 API 或 SDK 管理 OSS
OSS 提供 RESTful API 和各种语言的 SDK 开发包,方便您快速进行二次开发。
通过工具管理 OSS
OSS 提供各类型的管理工具,您可以通过工具管理您的 OSS。
二、阿里云OSS基本操作
1、OSS基本操作的流程
2、开通OSS服务
(1)前提条件
在使用阿里云 OSS 服务之前,请确保您已经注册了阿里云账号并完成实名认证。如果您还没有创建阿里云账号,系统会在您开通 OSS 时提示您注册账号。
(2)操作步骤
登录阿里云官网。
将鼠标移至产品,单击对象存储 OSS,打开 OSS 产品详情页面。
在 OSS 产品详情页,单击立即开通。
开通服务后,在 OSS 产品详情页单击管理控制台直接进入 OSS 管理控制台界面。
也可以单击位于官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单击左侧的对象存储 OSS 菜单进入 OSS 管理控制台界面。
3、创建存储空间
开通阿里云OSS服务后,我们首先要创建存储空间(Bucket)来存储文件。
(1)三种方式创建存储空间
使用OSS管理控制台(进入管理控制台按提示完成操作)
使用命令行工具ossutil
使用API/SDK
(2)OSS提供多种语言的API/SDK包,方便您快速进行二次开发
API接口:PutBucket
Java SDK:创建存储空间
Python SDK:创建存储空间
PHP SDK:创建存储空间
Go SDK:创建存储空间
C SDK:创建存储空间
三、阿里云OSS的API与SDK介绍
1、OSS API参考
主要介绍接口的请求语法、相关参数含义以及请求和返回示例
关于Service操作之GetService:
对服务地址做Get请求可以返回请求者拥有的所有存储空间(Bucket),其中正斜线(/)表示根目录。
请求语法
GET / HTTP/1.1
Host: oss.example.com
Date: GMT Date
Authorization: SignatureValue
请求示例:
GET / HTTP/1.1
Date: Thu, 15 May 2014 11:18:32 GMT
Host: oss-cn-hangzhou.aliyuncs.com
Authorization: OSS nxj7dtlhcyl5hpvnhi:COS3OQkfQPnKmYZTEHYv2******
关于PutBucket:
PutBucket接口用于创建存储空间(Bucket)。
此接口不支持匿名访问。
同一阿里云账号在同一地域(Region)内最多可创建100个Bucket。
每个地域都有对应的访问域名(Endpoint)。
请求语法
PUT / HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
x-oss-acl: Permission
Authorization: SignatureValue
<?xml version="1.0" encoding="UTF-8"?>
<CreateBucketConfiguration>
<StorageClass>Standard</StorageClass>
</CreateBucketConfiguration>
关于Object操作之PutObject接口:
用于上传文件(Object)。
请求语法:
PUT /ObjectName HTTP/1.1
Content-Length:ContentLength
Content-Type: ContentType
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Date: GMT Date
Authorization: SignatureValue
简单上传的请求示例:
PUT /test.txt HTTP/1.1
Host: test.oss-cn-zhangjiakou.aliyuncs.com
User-Agent: aliyun-sdk-python/2.6.0(Windows/7/AMD64;3.7.0)
Accept: */*
Connection: keep-alive
Content-Type: text/plain
date: Tue, 04 Dec 2018 15:56:37 GMT
authorization: OSS qn6qrrqxo2oawuk53otfjbyc:kZoYNv66bsmc10+dcGKw5x2P****
Transfer-Encoding: chunked
关于LiveChannel:
可以使用RTMP协议将音视频数据上传到OSS,转储为指定格式的音视频文件。上传前需要先创建一个LiveChannel,以获取对应的推流地址。
通过RTMP协议上传音视频数据目前有以下限制:
只能使用RTMP推流的方式,不支持拉流。
必须包含视频流,且视频流格式为H264。
音频流是可选的,并且只支持AAC格式,其他格式的音频流会被丢弃。
转储只支持HLS协议。
一个LiveChannel同时只能有一个客户端向其推流。
2、OSS SDK参考
使用OSS SDK之前,需要:
了解并开通阿里云OSS服务、创建AccessKey
四、阿里云OSS静态网站托管
1、静态网站托管说明
(1)通过OSS API的PutBucketWebsite接口将自己的存储空间配置成静态网站托管模式,并通过存储空间绑定的自定义域名访问该静态网站。
静态网站
是指所有的网页都由静态内容构成,包括客户端执行的脚本,例如JavaScript。OSS不支持涉及到需要服 务器端处理的内容,例如PHP、JSP、ASP.NET等。
(2)细节分析
将一个Bucket设置成静态网站托管模式时:
索引页面是必须指定的,错误页面是可选的。
若未开通子目录首页,需保证根目录下有默认首页和默认404页对应的文件,且文件可读。
若开通子目录首页,需保证根目录和子目录下有默认首页文件,根目录下有默认404页文件,且文件可读。
说明:默认首页仅可以设置一个,若需要使用子目录首页,则子目录下的首页文件需要与根目录下的首页文件名称相同,但内容可以不同。
将一个 Bucket 设置成静态网站托管模式后:
对静态网站域名的匿名访问,OSS将返回索引页面;对静态网站根域名的签名访问,OSS 将返回GetBucket结果。
访问不存在的Object时,OSS会返回给用户设定的默认404页对应的文件,对此返回的流量和请求将会计费。
2、托管操作方式
五、云存储OSS案例解析
1、Web端上传数据至OSS
每个 OSS 的用户都会用到上传服务。Web 端常见的上传方法是用户在浏览器或 APP 端上传文件到应用服务器,应用服务器再把文件上传到 OSS。具体流程如下图所示。
与数据直传到 OSS 相比,以上方法有三个缺点:
上传慢:用户数据需先上传到应用服务器,之后再上传到OSS。
扩展性差:如果后续用户多了,应用服务器会成为瓶颈。
费用高:需要准备多台应用服务器。由于OSS上传流量是免费的,如果数据直传到OSS,不通过应用服务器,那么将能省下几台应用服务器。
2、Web端直传数据到OSS
目前通过 Web 前端技术上传文件到 OSS,有三种技术方案:
(1) 利用OSS Browser.js SDK 将文件上传到 OSS
该方案通过OSS Browser.js SDK直传数据到 OSS。在网络条件不好的状况下可以通过断点续传的方式上传大文件。
(2) 使用表单上传方式,将文件上传到 OSS
利用 OSS 提供的 PostObject 接口,使用表单上传方式将文件上传到 OSS。该方案兼容大部分浏览器,但在网络状况不好的时候,如果单个文件上传失败,只能重试上传。
(3) 通过小程序上传文件到 OSS
通过小程序,如微信小程序、支付宝小程序等,利用 OSS 提供的 PostObject 接口来实现表单上传。
更多精彩内容请关注本站!!!
更多推荐
所有评论(0)