一、OSS基本概念
阿里云对象存储服务(Object Storage Service,OSS)——阿里云提供的云存储服务。
- 可以通过调用API,上传和下载数据,还可以通过WEB控制台对数据进行简单管理。
- OSS适合存放任意类型文件,适合各种网络、开发企业及开发者使用。
二、OSS应用场景
1、图片和音视频等应用的海量存储
2、网页或者移动应用的静态和动态资源分离
3、云端数据处理
三、OSS付费
阿里云OSS采用两种计费方式:
包年包月(预付费)——先购买资源包,后使用资源。已使用的OSS资源超过购买资源包规格的部分按量付费。
三种资源包类型:
- 存储包:为存储量提供的指定规格资源包。
- 外网流出流量包:为外网流出流量提供的指定规格资源包
- CDN回源流量包:为阿里云CDN回源流量提供的指定规格资源包
资源包注意事项:
- 资源包可选择支付后立即生效或指定日期生效
- 资源包在生效期内,先扣除已购买的资源包内的额度,超出部分每小时按量付费。
- 没有使用的资源包,可通过工单退款。
- 不同地域的资源包不通用
- 存储包和外网流出包不支持叠加购买,支持升级和续费操作;CDN回源流量包支持叠加购买
- 周期内可以升配,无法降配。周期结束可以在续费时选择升/降配。
- 续费时,可指定生效时间、购买时长、资源包规格
- 欠费24小时内充值,不会停止服务;欠费超24小时,服务自动停止,占用存储空间继续扣费;欠费超15天,存储空间回收,数据清理且不可恢复。
按量付费(后付费)——先使用后付费的计费模式。在阿里云账户先充值,系统每小时统计前一小时的实际用量并进行结算,从账户余额扣除消费金额。
- OSS 计量项 ——存储量、流量、请求次数、数据处理。
- 存储量计费——每小时存储容量(GB)*对应存储类型的小时单价
- 流量——仅公网流量产生费用,不同类型流量费用有差异。包括外网流入/流出流量、内网流出/流出流量、CDN回源流量、跨区域复制流量
- 计费——每小时累计外网流出流量*每GB单价
- 请求次数计费——每万次请求的单价*每小时实际请求次数/10000
- OSS OPEN API调用——按请求次数计费,每小时请求次数不足1万次不计费
- 图片处理计费——图片小于10TB免费,10TB以上:图片文件大小*每GB图片处理单价
- 视频截帧计费 ——截帧数*截帧单价
四、OSS的使用
阿里云OSS将数据文件以对象(object)的形式上传到存储空间(bucket)中。
存储空间(bucket)——用来存储对象(Object)的容器,所有对象必须隶属于某个存储空间。
- 存储空间命名——必须符合命名规范;在阿里云OSS现有存储空间名称中必须具有唯一性;创建后不支持修改名称。
- 所属地域——订购后不支持更换地域(Region);需选择与ECS相同的地域,才能通过ECS内网访问OSS;bucket下属所有object都存储在对应数据中心
- 读写权限:1.公共读写——任何人都可以对该存储空间文件进行读写操作,产生的费用由存储空间创建者承担;2.公共读——仅创建者可以对文件进行写操作,任何人均能对存储空间内文件进行读操作;3.私有——仅创建者可以对存储空间文件进行读写操作,其他人无法访问。
- 删除存储空间——存储文件全部清空才能删除存储空间。
- 存储空间属性——设置和修改属性,可控制地域、访问权限、生命周期等,属性作用于空间内所有对象。可以通过创建多个存储空间完成区分配置。
对象(object)——OSS存储数据的基本单元,也称OSS的文件。
- 对象由元信息(Object Meta)、用户数据(Data)、文件名(key)组成。
- 对象由存储空间内部唯一的Key来标识
- 元信息是一个键值对,表示对象的一些属性:最后修改时间、大小等,还存储一些自定义的信息。
- 任意文件类型都可上传到存储空间;OSS**控制台可上传500MB以内的文件,分片上传最大支持48.8TB的对象,其他**方式最大支持上传5GB。
- 对象生命周期——上传成功到被删除为止
- 对象信息不可变更,上传同名对象会覆盖原对象,无法修改文件部分内容
- 追加上传——可不断在object尾部追加写入数据
对象强一致性——操作要么成功要么失败,不会存在有中间状态的Object。OSS 保证用户一旦上传完成之后读到的 Object 是完整的,OSS 不会返回给用户一个部分上传成功的 Object。
文件特性——OSS是一个分布式对象存储服务,用户根据object名称(key)唯一获取object内容。
OSS支持海量用户并发访问,海量数据处理能力,优先存储海量非结构化数据。
重命名目录非常消耗资源,OSS尽量避免类似操作。
文件上传
- 简单上传——用户使用OSS API中的Put Object方法上传单个Object。适合一次HTTP请求交互可完成的上传,小于5G。
- 表单上传——用户使用OSS API中的Post Object请求来完成Object的上传。适合嵌入HTML网页上传Object。
- 追加上传——Object后面直接追加内容,适用于视频监控、视频直播,数据实时不断产生。
- 授权第三方上传——(1)URL签名,在请求的URL中带有OSS AccessKeyId和Signature,用户直接使用URL进行上传。(2)临时访问凭证,通过阿里云SecurityTokenService实现授权。
- RTMP推流上传——RTMP协议推送H264编码的视频流+AAC编码的音频流到OSS。推送到OSS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。
- 分片上传——将文件分成多个数据块分别上传,上传完成后调用OSS接口将这些Part组合成一个object。
适用于以下场景:
- 恶劣网络环境,对上传失败的情况,可实现断点续传。
- 断点续传,中途暂停,可从完成的Part位置续传。
- 加速上传,并行上传多个part以加快上传。
- 流式上传,在文件大小不确定情况下上传,用于常用于视频监控
上传回调——上传文件完成时可以回调(Callback)给应用服务器。
文件下载
- 简单下载——下载已经上传的文件(Object),使用HTTP的GET请求来完成。Object 无 匿名签名读权限,需要拥有对应AccessKey对GET请求签名来访问;Object 有匿名签名读权限,所有用户直接使用GET请求进行访问。
- 断点续传下载——从Object指定的位置开始下载的功能,在下载很大的Object时,可以分多次下载。
- 授权第三方下载——1)在URL中加入签名信息,把该URL转给第三方实现授权访问。2)OSS通过STS (Security Token Service) 提供了临时凭证给第三方用户,第三方用户以在请求头部中带签名的方式去访问Object。这种授权方式适合移动场景的下载。