分布式文件系统 -- OSS云存储_oss路径长度有限制么-程序员宅基地

技术标签: OSS 云存储  分布式文件系统  学习  架构  云存储  学习笔记  OSS  

阿里云对象存储服务(Object Storage Service 简称OSS) 是阿里云提供的海量 安全 低成本 高可靠的云存储服务。

阿里云OSS云存储简介

什么是阿里云oss云存储

阿里云对象存储服务(Object Storage Service,简称 OSS),是阿里云提供的海量、安全、低成本、高可靠的云存储服务。其数据设计持久性不低于 99.9999999999%(12 个 9),服务设计可用性(或业务连续性)不低于 99.995%。

可以使用阿里云提供的 API、SDK 接口或者 OSS 迁移工具轻松地将海量数据移入或移出阿里云 OSS。数据存储到阿里云 OSS 以后,可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent Access)和归档存储(Archive)作为不经常访问数据的存储方式。

OSS 具有与平台无关的 RESTful API 接口,可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。

OSS与自建存储对比的优势

对比项 对象存储OSS 自建服务器存储
可靠性 OSS作为阿里巴巴全集团数据存储的核心基础设施,多年支撑双11业务高峰,历经高可用与高可靠的严苛考验。OSS的多重冗余架构设计,为数据持久存储提供可靠保障。同时,OSS基于高可用架构设计,消除单节故障,确保数据业务的持续性。服务设计可用性不低于99.995%。数据设计持久性不低于99.9999999999%(12个9)。规模自动扩展,不影响对外服务。数据自动多重冗余备份。 受限于硬件可靠性,易出问题,一旦出现磁盘坏道,容易出现不可逆转的数据丢失。人工数据恢复困难、耗时、耗力。
安全 提供企业级多层次安全防护,包括服务端加密、客户端加密、防盗链、IP黑白名单、细粒度权限管控、日志审计、WORM特性等。多用户资源隔离机制,支持异地容灾机制。获得多项合规认证,包括SEC和FINRA 等,满足企业数据安全与合规要求。 需要另外购买清洗和黑洞设备。需要单独实现安全机制。
成本 多线BGP骨干网络,无带宽限制,上行流量免费。无需运维人员与托管费用,0成本运维。 存储受硬盘容量限制,需人工扩容。单线或双线接入速度慢,有带宽限制,峰值时期需人工扩容。需专人运维,成本高。
智能存储 提供多种数据处理能力,如图片处理、视频截帧、文档预览、图片场景识别、人脸识别、SQL就地查询等,并无缝对接Hadoop生态、以及阿里云函数计算、EMR、DataLakeAnalytics、BatchCompute、MaxCompute、DBS等产品,满足企业数据分析与管理的需求。 需要额外采购,单独部署。

应用场景

  • 图片和音视频等应用的海量存储
    在这里插入图片描述

  • 网页或者移动应用的静态和动态资源分离
    在这里插入图片描述

  • 云端数据处理
    在这里插入图片描述

计量计费

阿里云对象存储 OSS 服务费用的各项组成部分及计费方式分为按量计费和包年包月两种。

  • 按量付费:按实际使用量*单价的方式计费,每小时统计前一小时的实际用量并从账户余额中扣除实际消费金额。例如当前时间是 9:30,结算的是 8:00-9:00 产生的费用 。
  • 包年包月:预先购买指定资源包,之后使用资源时,扣除相应的额度。一般情况下,包年包月比按量付费更加优惠。资源包目前仅提供标准(LRS)存储包、低频(LRS)存储包、归档(LRS)存储包、标准ZRS)存储包、低频(ZRS)存储包、下行流量包、 回源流量包、传输加速包,可购买地域请参见购买对象存储 OSS 资源包。

这个看一个实际的计费案例即可

OSS云存储基本概念

存储空间(Bucket)

存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。

  • 同一个存储空间的内部是扁平的,没有文件系统目录的概念,所有的对象都直接隶属于其对应的存储空间。
  • 每个用户可以拥有多个存储空间。
  • 存储空间的名称在 OSS 范围内必须是全局唯一的,一旦创建之后无法修改名称。
  • 存储空间内部的对象数目没有限制。

存储空间的命名规范如下:

  • 只能包括小写字母、数字和短横线(-)。
  • 必须以小写字母或者数字开头和结尾。
  • 长度必须在 3–63 字节之间。

对象/文件(Object)

对象是 OSS 存储数据的基本单元,也被称为 OSS 的文件。对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的 Key 来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。

对象的生命周期是从上传成功到被删除为止。在整个生命周期内,只有通过追加上传的 Object 可以继续通过追加上传写入数据,其他上传方式上传的 Object 内容无法编辑,您可以通过重复上传同名的对象来覆盖之前的对象。

对象的命名规范如下:

  • 使用 UTF-8 编码。
  • 长度必须在 1–1023 字节之间。
  • 不能以正斜线(/)或者反斜线(\)开头。

Region(地域)

Region 表示 OSS 的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的 Region 访问速度更快。

Region 是在创建 Bucket 的时候指定的,一旦指定之后就不允许更改。该 Bucket 下所有的 Object 都存储在对应的数据中心,目前不支持 Object 级别的 Region 设置。

Endpoint(访问域名)

Endpoint 表示 OSS 对外服务的访问域名。OSS 以 HTTP RESTful API 的形式对外提供服务,当访问不同的 Region 的时候,需要不同的域名。通过内网和外网访问同一个 Region 所需要的 Endpoint 也是不同的。例如杭州 Region 的外网 Endpoint 是 oss-cn-hangzhou.aliyuncs.com,内网 Endpoint 是 osscn-hangzhou-internal.aliyuncs.com。

AccessKey(访问密钥)

AccessKey(简称 AK)指的是访问身份验证中用到的 AccessKeyId 和 AccessKeySecret。OSS 通过使用 AccessKeyId 和 AccessKeySecret 对称加密的方法来验证某个请求的发送者身份。AccessKeyId 用于标识用户;AccessKeySecret 是用户用于加密签名字符串和 OSS 用来验证签名字符串的密钥,必须保密。对于 OSS 来说,AccessKey 的来源有:

  • Bucket 的拥有者申请的 AccessKey。

  • 被 Bucket 的拥有者通过 RAM 授权给第三方请求者的 AccessKey。

  • 被 Bucket 的拥有者通过 STS 授权给第三方请求者的 AccessKey。

      注意: 可以登录阿里云官网-“用户中心” -“我的帐户” -“安全认证” 获取 Access Key ID 和 Access Key Secret,
      一个阿里云帐号可以生成 5 对 Access Key ID 和 Access Key Secret。
      并支持启用/禁 用设置。
    

Service

OSS 提供给用户的虚拟存储空间,在这个虚拟空间中,每个用户可拥有一个 到多个 Bucket。

OSS功能详解

基本功能

使用阿里云管理控制台来完成 OSS 基本操作的流程如下:
在这里插入图片描述

  1. 开通OSS服务器

    1. 前提条件
      在使用阿里云 OSS 服务之前,请确保您已经注册了阿里云账号并完成实名认证。如果您还没有创建阿里云账号,系统会在您开通 OSS 时提示您注册账号。
    2. 操作步骤
      1. 登录阿里云官网。
      2. 将鼠标移至产品,单击对象存储 OSS,打开 OSS 产品详情页面。
      3. 在 OSS 产品详情页,单击立即开通。
        在这里插入图片描述
        开通服务后,在 OSS 产品详情页单击管理控制台直接进入 OSS 管理控制台界面。
        您也可以单击位于官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单击左侧的对象存储 OSS 菜单进入 OSS 管理控制台界面。
        在这里插入图片描述
  2. 创建存储空间

    1. 登录OSS管理控制台。
    2. 单击Bucket列表,之后单击创建Bucket。
      您也可以单击概览,之后单击右侧的创建Bucket。
    3. 在创建Bucket页面配置Bucket参数。
      在这里插入图片描述
  3. 上传文件

    1. 登录OSS管理控制台。
    2. 单击Bucket列表,之后单击目标Bucket名称。
    3. 单击文件管理 > 上传文件。
    4. 在上传文件页面,设置上传文件的参数。
    5. 在上传任务页面等待任务完成,之后关闭对话框。
  4. 下载文件

    1. 登录OSS管理控制台。
    2. 进入目标Bucket。
      单击Bucket列表,之后单击目标Bucket名称。
    3. 单击文件管理页签,您可以进行以下操作
  5. 删除文件

    1. 登录OSS管理控制台。
    2. 进入目标Bucket。
      单击Bucket列表,之后单击目标Bucket名称。
    3. 选择一个或多个文件,选择批量操作 > 删除。
      您也可以选择目标文件右侧的更多 > 删除来删除单个文件。
    4. 在删除文件对话框中,单击确定。
  6. 删除存储空间

    1. 进入OSS管理控制台界面。
    2. 进入目标Bucket,找到删除Bucket按钮。
      单击基础设置页签,找到Bucket管理区域。
    3. 单击删除Bucket。
    4. 在弹出的对话框中,单击确定。

Object外链地址的构成规则

如果一个bucket设置成公开读权限,意味着允许其他用户来访问属于你的object。你的object的外链地址构成规则如下:

http:// <你的bucket名字>.<数据库中心服务域名>/<你的object名字>

构成规则的示意图如下:
在这里插入图片描述

注意:在使用 OSS 时,请一直使用 OSS 服务域名,而不要使用固定的 IP 地址。

OSS防盗链

OSS 是按使用收费的服务, 为了防止用户在 OSS 上的数据被其他人盗链, OSS 支持基于 HTTPheader 中表头字段 referer 的防盗链方法。通过 OSS 的控制台–权限管理–防盗链,可以对一个 bucket设置 referer 字段的白名单和是否允许 referer 字段为空的请求访问。

例如, 对于一个名为 ossexample 的 bucket,设置其 referer 白名单为 http://www.aliyun.com。则所有 referer 为 http://www.aliyun.com 的请求才能访问 oss-example 这个 bucket 中的 Object。

细节分析:

  1. 用户只有通过 URL 签名或者匿名访问 Object 时,才会做防盗链验证。请求 的 Header 中有
    “Authorization”字段的,不会做防盗链验证。
  2. 一个 bucket 可以支持多个 referer 参数,这些参数之间由“,”号分隔。oss控制台配置时 使用换行
  3. Referer 参数支持通配符“*”和“?”。
  4. 用户可以设置是否允许 referer 字段为空的请求访问。
  5. 白名单为空时,不会检查 referer 字段是否为空(不然所有的请求都会被拒绝)。
  6. 白名单不为空,且设置了不允许 referer 字段为空的规则;则只有 referer 属于 白名单的请求被允许,其他请求(包括 referer 为空的请求)会被拒绝。
  7. 如果白名单不为空,但设置了允许 referer 字段为空的规则;则 referer 为空的 请求和符合白名单的请求会被允许;其他请求都会被拒绝。
  8. Bucket 的三种权限(private, public-read, public-read-write)都会检查 referer 字段。

自定义域名绑定(CNAME)

OSS 支持用户将自定义的域名绑定在属于自己的 bucket 上面,这个操作必 须通过 OSS 控制台(http://oss.aliyun.com) -“Bucket 属性 传输管理 ” -“绑定域名”页面 配置来实现。按照中国《互联网管理条例》的要求,所有需要开通这项功能的用 户,必须提供阿里云备案号,域名持有者身份证等有效资料,经由阿里云审批通 过后才可以使用。在开通 CNAME 功能后, OSS 将自动处理对该域名的访问请求。

CNAME 应用场景例子:

  • 用户 A 拥有一个域名为 abc.com 的网站;这个网站的所有图片存储在 img.abc.com 这个子域名下;
  • 为了应对日益增长的图片流量压力, 用户 A 在 OSS 上创建了一个名为 abc-img 的 bucket, 并将所有图片存在 OSS 上;
  • 通 过 OSS 控 制 台 , 提 交 将 img.abc.com CNAME 成 abc-img.oss-cnhangzhou.aliyuncs.com 的申请,并提供相应的材料
  • 通过阿里云审核后,在自己的域名服务器上,添加一条 CNAME 规则(https://dns.console.aliyun.com/?spm=a2c4g.11186623.2.12.70c759cbsvcLcR#/dns/domainList), 将 img.abc.com 映
    射成 abc-img.oss-cn-hangzhou.aliyuncs.com,这样所有对 img.abc.com 的访问都将变成访问abc-img 这个 bucket。例如:一个对 http://img.abc.com/logo.png 的 访 问 , 实 际 上 访 问 的 是 http://abc-img.oss-cn-hangzhou.aliyuncs.com/logo.png

访问日志记录(Server_Access_Logging)

OSS为用户提供自动保存访问日志记录功能。Bucket的拥有者可以通过OSS控制台(http://oss.aliyun.com)日志管理,为其所拥有的bucket开启访问日志记录功能。当一个bucket(源Bucket,Source Bucket)开启访问日志记录功能后,OSS自动将访问这个bucket的请求日志,以小时为单位,按照固定的命名规则,生成一个Object写入用户指定的bucket(目标Bucket,Target Bucket)。

存储访问日志记录的object命名规则:

<TargetPrefix><SourceBucket>-YYYY-mm-DD-HH-MM-SS-UniqueString

命名规则中,TargetPrefix由用户指定;YYYY, mm, DD, HH, MM和SS分别是该Object被创建时的阿拉伯数字的年,月,日,小时,分钟和秒(注意位数);UniqueString为OSS系统生成的字符串。一个实际的用于存储OSS访问日志的Object名称例子如下:

MyLog-oss-example-2012-09-10-04-00-00-0000

上例中,“MyLog-”是用户指定的Object前缀;“oss-example”是源bucket的名称;“2012-09-10-04-00-00”是该Object被创建时的北京时间;“0000” 是OSS系统生成的字符串。

LOG文件格式(从左至右,以空格分隔):

名 称 例 子 含 义
Remote IP 119.140.142.11 请求发起的IP地址(Proxy代理或用户防火墙可能会屏蔽该字段)
Reserved - 保留字段
Reserved - 保留字段
Time [02/May/2012:00:00:04+0800] OSS收到请求的时间
Request-URI “GET /aliyun-logo.png HTTP/1.1“ 用户请求的URI(包括query-string)
HTTP Status 200 OSS返回的HTTP状态码
SentBytes 5576 用户从OSS下载的流量
RequestTime(ms) 71 完成本次请求的时间(毫秒)
Referrer http://oss.aliyun.com 请求的HTTP Referrer
User-Agent curl/7.15.5 HTTP的User-Agent头
HostName oss-example.oss.aliyuncs.com 请求访问域名
Request ID 505B01695037C2AF032593A4 用于唯一标示该请求的UUID
LoggingFlag true 是否开启了访问日志功能
Reserved - 保留字段
Requester Aliyun ID 1657136103983691 请求者的阿里云ID;匿名访问为“-”
Operation GetObject 请求类型
Bucket oss-example 请求访问的Bucket名字
Key /aliyun-logo.png 用户请求的Key
ObjectSize 5576 Object大小
Server CostTime (ms) 17 OSS服务器处理本次请求所花的时间(毫秒)
Error Code NoSuchBucket OSS返回的错误码
UserID 1657136103983691 Bucket拥有者ID
Delta DataSize 280 Bucket大小的变化量;若没有变化为“-”

细节分析

  1. 源Bucket和目标Bucket必须属于同一个用户。

  2. “TargetPrefix”表示存储访问日志记录的object名字前缀,可以为空。

  3. 源bucket和目标bucket可以是同一个Bucket,也可以是不同的Bucket;用户也可以将多个的源bucket的LOG都保存在同一个目标bucket内(建议指定不同的TargetPrefix)。

  4. OSS以小时为单位生成bucket访问的Log文件,但并不表示这个小时的所有请求都记录在这个小时的LOG文件内,也有可能出现在上一个或者下一个LOG文件中。

  5. OSS生成的Log文件命名规则中的“UniqueString”仅仅是OSS为其生成的UUID,用于唯一标识该文件。

  6. OSS生成一个bucket访问的Log文件,算作一次PUT操作,并记录其占用的空间,但不会记录产生的流量。LOG生成后,用户可以按照普通的Object来操作这些LOG文件。

  7. OSS会忽略掉所有以“x-”开头的query-string参数,但这个query-string会被记录在访问LOG中。如果你想从海量的访问日志中,标示一个特殊的请求,可以在URL中添加一个“x-”开头的query-string参数。
    如下:

    http://oss-example.oss.aliyuncs.com/aliyun-logo.png 
    http://oss-example.oss.aliyuncs.com/aliyun-logo.png?x-user=admin
    

    OSS处理上面两个请求,结果是一样的。但是在访问LOG中,你可以通过搜索“x-user=admin”,很方便地定位 出经过标记的这个请求。

  8. OSS的LOG中的任何一个字段,都可能出现“-”,用于表示未知数据或对于当前请求该字段无效。

  9. 根据需求,OSS的LOG格式将来会在尾部添加一些字段,请开发者开发Log处理工具时考虑兼容性的问题。

OSS云存储的权限控制

权限控制方式

针对存放在 Bucket 的 Object 的访问,OSS 提供了多种权限控制方式,包括 ACL、RAM Policy 和Bucket Policy。

  • ACL:OSS 为权限控制提供访问控制列表(ACL)。ACL是基于资源的授权策略,可授予 Bucket和 Object 访问权限。 可以在创建 Bucket 或上传 Object 时设置 ACL,也可以在创建 Bucket或上传Object 后的任意时间内修改 ACL。
  • RAM Policy:RAM (Resource Access Management)是阿里云提供的资源访问控制服务。RAM Policy 是基于用户的授权策略。
  • Bucket Policy:Bucket Policy 是基于资源的授权策略。相比于 RAM Policy,Bucket Policy 操作简单,支持在控制台直接进行图形化配置。

ACL

Bucket ACL
  1. Bucket ACL 介绍
    Bucket ACL是 Bucket 级别的权限访问控制。

    目前有三种访问权限:public-read-write,publicread 和 private,含义如下

    权限值 中文名称 权限对访问者的限制
    publicreadwrite 公共读写 任何人(包括匿名访问)都可以对该 Bucket 中的 Object 进行读/写/删除操作;所有这些操作产生的费用由该 Bucket 的 Owner 承担,请慎用该权限。
    publicread 公共读,私有写 只有该 Bucket 的 Owner 或者授权对象可以对存放在其中的 Object 进行写/删除操作;任何人(包括匿名访问)可以对 Object 进行读操作。
    private 私有读写 只有该 Bucket 的 Owner 或者授权对象可以对存放在其中的 Object 进行读/写/删除操作;其他人在未经授权的情况下无法访问该 Bucket 内 的 Object。
  2. 操作方式

    操作方式 特点
    控制台 Web应用程序,直观易用
    图形化工具ossbrowser 图形化工具,易操作
    Java SDK 丰富、完整的各类语言SDK demo
Object ACL
  1. Object ACL 介绍
    Object ACL是Object 级别的权限访问控制。

    目前有四种访问权限:private、public-read、publicread-write、default。
    PutObjectACL 操作通过 Put 请求中的 x-oss-object-acl 头来设置,这个操作只有 Bucket Owner 有权限执行。

    Object ACL 的四种访问权限含义如下:

    权限值 中文名称 权限对访问者的限制
    publicreadwrite 公共读写 该 ACL 表明某个 Object 是公共读写资源,即所有用户拥有对该 Object的读写权限。
    publicread 公共读,私有写 该 ACL 表明某个 Object 是公共读资源,即非 Object Owner 只有该Object 的读权限,而 Object Owner 拥有该 Object的读写权限。
    private 私有读写 该 ACL 表明某个 Object 是私有资源,即只有该 Object 的 Owner 拥有该 Object 的读写权限,其他的用户没有权限操作该 Object。
    default 默认权限 该 ACL 表明某个 Object 是遵循 Bucket 读写权限的资源,即 Bucket 是什么权限,Object 就是什么权限。

操作方式和上面类似 参考官方文档即可

RAM Policy

RAM(Resource Access Management)是阿里云提供的资源访问控制服务,RAM Policy是基于用户的授权策略。使用RAM,您可以创建、管理RAM用户,并可以控制这些RAM用户对资源的操作权限。当您的企业存在多用户协同操作资源时,使用RAM可以让您避免与其他用户共享云账号密钥,按需为用户分配最小权限,管理更加方便,权限更加明确,信息更加安全。
在这里插入图片描述
注意

  • 如果您选择使用RAM Policy,建议您通过官方工具RAM策略编辑器快速生成所需的RAM Policy。
  • RAM Policy操作比较复杂,强烈推荐您使用简单易用的图形化配置方式Bucket Policy

Bucket Policy

Bucket Policy是基于资源的授权策略。相比于RAM Policy,Bucket Policy支持在控制台直接进行图形化配置操作,并且Bucket拥有者直接可以进行访问授权。

Bucket Policy常见的应用场景如下:

  • 向其他账号的RAM用户授权访问。
    您可以授予其他账号的RAM用户访问您的OSS资源的权限。
  • 向匿名用户授予带特定IP条件限制的访问权限。
    某些场景下,您需要向匿名用户授予带IP限制的访问策略。例如,企业内部的机密文档,只允许在企业内部访问,不允许在其他区域访问。由于企业内部人员较多,如果针对每个人配置RAMPolicy,工作量非常大。此时,您可以基于Bucket Policy设置带IP限制的访问策略,从而高效方便地进行授权。

Bucket Policy的配置方法和教程视频请参见使用Bucket Policy授权其他用户访问OSS资源

OSS存储开放接口规范和错误响应

开放接口规范

开发者在发送请求给 OSS 时,既可以使用 带签名认证的请求,也可以使用匿名访问。OSS提供的相关API接口如下:

  1. 关于Service操作

    API 描述
    getService (listBuckets) 返回请求者拥有的所有Bucket
  2. 关于Bucket的操作

    API 描述
    createBucket 创建Bucket
    putBucketACL 设置Bucket访问权限
    putBucketLogging 开启Bucket日志
    putBucketWebsite 设置Bucket为静态网站托管模式
    putBucketReferer 设置Bucket的防盗链规则
    putBucketLifecycle 设置Bucket中Object的生命周期规则
    getBucket(ListObject) 列出Bucket中所有Object的信息
    getBucketAcl 获得Bucket访问权限
    getBucketLocation 获得Bucket所属的数据中心位置信息
    getBucketInfo 获取Bucket信息
    getBucketLogging 查看Bucket的访问日志配置情况
    getBucketWebsite 查看Bucket的静态网站托管状态
    getBucketReferer 查看Bucket的防盗链规则
    getBucketLifecycle 查看Bucket中Object的生命周期规则
    deleteBucket 删除Bucket
    deleteBucketLogging 关闭Bucket访问日志记录功能
    deleteBucketWebsite 关闭Bucket的静态网站托管模式
    deleteBucketLifecycle 删除Bucket中Object的生命周期规则
    putBucketEncryption 配置Bucket的加密规则
    getBucketEncryption 获取Bucket的加密规则
    deleteBucketEncryption 删除Bucket的加密规则
  3. 关于Object的操作

    API 描述
    putObject 上传Object
    copyObject 拷贝一个Object成另外一个Object
    getObject 获取Object
    appendObject 在Object尾追加上传数据
    deleteObject 删除Object
    deleteMultipleObjects 删除多个Object
    headObject 只返回某个Object的meta信息,不返回文件内容
    getObjectMeta 返回Object的基本meta信息,包括该Object的ETag、Size(文件大小)、LastModified,不返回文件内容
    postObject 使用Post上传Object
    putObjectACL 设置ObjectACL
    getObjectACL 获取ObjectACL信息
    callback 上传回调
    putSymlink 创建软链接
    getSymlink 获取软链接
    restoreObject 解冻文件
    selectObject 用SQL语法查询Object内容
    putObjectTagging 设置或更新对象标签
    getObjectTagging 获取对象标签信息
    deleteObjectTagging 删除指定的对象标签
  4. 关于Multipart Upload的操作

    API 描述
    InitiateMultipartUpload 初始化MultipartUpload事件
    uploadPart 分块上传文件
    uploadPartCopy 分块复制上传文件
    completeMultipartUpload 完成整个文件的MultipartUpload上传
    abortMultipartUpload 取消MultipartUpload事件
    listMultipartUploads 罗列出所有执行中的MultipartUpload事件
    listParts 罗列出指定UploadID所属的所有已经上传成功Part
  5. 跨域资源共享(CORS)

    API 描述
    putBucketcors 在指定Bucket设定一个CORS的规则
    getBucketcors 获取指定的Bucket目前的CORS规则
    deleteBucketcors 关闭指定Bucket对应的CORS功能并清空所有规则
    optionObject 跨域访问preflight请求
  6. 关于Live Channel的操作

    API 描述
    putLiveChannelStatus 切换LiveChannel的状态
    putLiveChannel 创建LiveChannel
    getVodPlaylist 获取播放列表
    postVodPlaylist 生成播放列表
    get LiveChannelStat 获取LiveChannel的推流状态信息
    getLiveChannelInfo 获取LiveChannel的配置信息
    getLiveChannelHistory 获取LiveChannel的推流记录
    listLiveChannel 列举LiveChannel
    deleteLiveChannel 删除LiveChanne

OSS云存储错误响应

当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。

  1. OSS的错误响应格式
    当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。
    错误响应的消息体例子:

    <?xml version="1.0" ?> 
    <Error xmlns=”http://doc.oss.aliyuncs.com”>
    	<Code> AccessDenied </Code> 
    	<Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> 
    	<RequestId>1D842BC5425544BB </RequestId> 
    	<HostId> oss.aliyuncs.com </HostId> 
    </Error>
    

    所有错误的消息体中都包括以下几个元素:

    • Code:OSS返回给用户的错误码。
    • Message:OSS给出的详细错误信息。
    • RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。
    • HostId:用于标识访问的OSS集群(目前统一为oss.aliyuncs.com)
  2. OSS的错误码

    错误码 描述 HTTP状态码
    AccessDenied 拒绝访问 403
    BucketAlreadyExists Bucket已经存在 409
    BucketNotEmpty Bucket不为空 409
    EntityTooLarge 实体过大 400
    EntityTooSmall 实体过小 400
    FileGroupTooLarge 文件组过大 400
    FilePartNotExist 文件Part不存在 400
    FilePartStale 文件Part过时 400
    InvalidArgument 参数格式错误 400
    InvalidAccessKeyId Access Key ID不存在 403
    InvalidBucketName 无效的Bucket名字 400
    InvalidDigest 无效的摘要 400
    InvalidObjectName 无效的Object名字 400
    InvalidPart 无效的Part 400
    InvalidPartOrder 无效的part顺序 400
    InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400
    InternalError OSS内部发生错误 500
    MalformedXML XML格式非法 400
    MethodNotAllowed 不支持的方法 405
    MissingArgument 缺少参数 411
    MissingContentLength 缺少内容长度 411
    NoSuchBucket Bucket不存在 404
    NoSuchKey 文件不存在 404
    NoSuchUpload Multipart Upload ID不存在 404
    NotImplemented 无法处理的方法 501
    PreconditionFailed 预处理错误 412
    RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403
    RequestTimeout 请求超时 400
    SignatureDoesNotMatch 签名错误 403
    TooManyBuckets 用户的Bucket数目超过限制 400

OSS参数不支持的操作

如果在OSS合法的操作中,添加了OSS不支持的请求头参数(例如在PUT的时候,加入If-ModifiedSince参数),OSS会返回501 Not Implemented错误

错误请求示例:

PUT /my-image.jpg HTTP/1.1 
Host:oss-example. oss.aliyuncs.com
Date: Wed, 28 May 2011 22:32:00 GMT 
If-Modified-Since: Wed, 06 Apr 2011 10:02:46 GMT

返回示例:

501 Not Implemented 
x-oss-request-id: 77E534EBF90372BE 
Content-Type: application/xml 
Transfer-Encoding: chunked 
Date: Thu, 28 Apr 2011 08:03:07 GMT 
Connection: close Server: AliyunOSS 

<?xml version="1.0" ?> 
<Error xmlns=”http://doc.oss.aliyuncs.com”> 
	<Code> NotImplemented </Code> 
	<Message> A header you provided implies functionality that is not implemented. </Message> 
	<Header> If-Modified-Since </Header> 
	<RequestId>77E534EBF90372BE </RequestId> 
	<HostId> oss.aliyuncs.com </HostId> 
</Error>

OSS不支持的操作

如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。

abc / HTTP/1.1 
Host:oss-example.oss.aliyuncs.com 
Date: date 
Authorization: signatureValue

返回示例:

x-oss-request-id: 2403382433A2EDA8 
Allow: GET, DELETE, HEAD, PUT 
Content-Type: application/xml 
Transfer-Encoding: chunked 
Date: Thu, 31 Mar 2011 10:01:52 GMT 
Server: AliyunOSS 

<?xml version="1.0" ?> 
<Error xmlns=”http://doc.oss.aliyuncs.com”> 
	<Code> MethodNotAllowed </Code>
	<Message> The specified method is not allowed against this resource. </Message> 
	<ResourceType> BUCKET </ResourceType> 
	<Method> abc </Method> 
	<RequestId>2403382433A2EDA8 </RequestId> 
	<HostId> oss.aliyuncs.com </HostId> 
</Error>

Java代码开发就直接参考官网提供的DEMO吧。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/lyy629yyt/article/details/124133647

智能推荐

软件测试流程包括哪些内容?测试方法有哪些?_测试过程管理中包含哪些过程-程序员宅基地

文章浏览阅读2.9k次,点赞8次,收藏14次。测试主要做什么?这完全都体现在测试流程中,同时测试流程是面试问题中出现频率最高的,这不仅是因为测试流程很重要,而是在面试过程中这短短的半小时到一个小时的时间,通过测试流程就可以判断出应聘者是否合适,故在测试流程中包含了测试工作的核心内容,例如需求分析,测试用例的设计,测试执行,缺陷等重要的过程。..._测试过程管理中包含哪些过程

政府数字化政务的人工智能与机器学习应用:如何提高政府工作效率-程序员宅基地

文章浏览阅读870次,点赞16次,收藏19次。1.背景介绍政府数字化政务是指政府利用数字技术、互联网、大数据、人工智能等新技术手段,对政府政务进行数字化改革,提高政府工作效率,提升政府服务质量的过程。随着人工智能(AI)和机器学习(ML)技术的快速发展,政府数字化政务中的人工智能与机器学习应用也逐渐成为政府改革的重要内容。政府数字化政务的人工智能与机器学习应用涉及多个领域,包括政策决策、政府服务、公共安全、社会治理等。在这些领域,人工...

ssm+mysql+微信小程序考研刷题平台_mysql刷题软件-程序员宅基地

文章浏览阅读219次,点赞2次,收藏4次。系统主要的用户为用户、管理员,他们的具体权限如下:用户:用户登录后可以对管理员上传的学习视频进行学习。用户可以选择题型进行练习。用户选择小程序提供的考研科目进行相关训练。用户可以进行水平测试,并且查看相关成绩用户可以进行错题集的整理管理员:管理员登录后可管理个人基本信息管理员登录后可管理个人基本信息管理员可以上传、发布考研的相关例题及其分析,并对题型进行管理管理员可以进行查看、搜索考研题目及错题情况。_mysql刷题软件

根据java代码描绘uml类图_Myeclipse8.5下JAVA代码导成UML类图-程序员宅基地

文章浏览阅读1.4k次。myelipse里有UML1和UML2两种方式,UML2功能更强大,但是两者生成过程差别不大1.建立Test工程,如下图,uml包存放uml类图package com.zz.domain;public class User {private int id;private String name;public int getId() {return id;}public void setId(int..._根据以下java代码画出类图

Flume自定义拦截器-程序员宅基地

文章浏览阅读174次。需求:一个topic包含很多个表信息,需要自动根据json字符串中的字段来写入到hive不同的表对应的路径中。发送到Kafka中的数据原本最外层原本没有pkDay和project,只有data和name。因为担心data里面会空值,所以根同事商量,让他们在最外层添加了project和pkDay字段。pkDay字段用于表的自动分区,proejct和name合起来用于自动拼接hive表的名称为 ..._flume拦截器自定义开发 kafka

java同时输入不同类型数据,Java Spring中同时访问多种不同数据库-程序员宅基地

文章浏览阅读380次。原标题:Java Spring中同时访问多种不同数据库 多样的工作要求,可以使用不同的工作方法,只要能获得结果,就不会徒劳。开发企业应用时我们常常遇到要同时访问多种不同数据库的问题,有时是必须把数据归档到某种数据仓库中,有时是要把数据变更推送到第三方数据库中。使用Spring框架时,使用单一数据库是非常容易的,但如果要同时访问多个数据库的话事件就变得复杂多了。本文以在Spring框架下开发一个Sp..._根据输入的不同连接不同的数据库

随便推点

EFT试验复位案例分析_eft电路图-程序员宅基地

文章浏览阅读3.6k次,点赞9次,收藏25次。本案例描述了晶振屏蔽以及开关电源变压器屏蔽对系统稳定工作的影响, 硬件设计时应考虑。_eft电路图

MR21更改价格_mr21 对于物料 zba89121 存在一个当前或未来标准价格-程序员宅基地

文章浏览阅读1.1k次。对于物料价格的更改,可以采取不同的手段:首先,我们来介绍MR21的方式。 需要说明的是,如果要对某一产品进行价格修改,必须满足的前提条件是: ■ 1、必须对价格生效的物料期间与对应会计期间进行开启; ■ 2、该产品在该物料期间未发生物料移动。执行MR21,例如更改物料1180051689的价格为20000元,系统提示“对于物料1180051689 存在一个当前或未来标准价格”,这是因为已经对该..._mr21 对于物料 zba89121 存在一个当前或未来标准价格

联想启天m420刷bios_联想启天M420台式机怎么装win7系统(完美解决usb)-程序员宅基地

文章浏览阅读7.4k次,点赞3次,收藏13次。[文章导读]联想启天M420是一款商用台式电脑,预装的是win10系统,用户还是喜欢win7系统,该台式机采用的intel 8代i5 8500CPU,在安装安装win7时有很多问题,在安装win7时要在BIOS中“关闭安全启动”和“开启兼容模式”,并且安装过程中usb不能使用,要采用联想win7新机型安装,且默认采用的uefi+gpt模式,要改成legacy+mbr引导,那么联想启天M420台式电..._启天m420刷bios

冗余数据一致性,到底如何保证?-程序员宅基地

文章浏览阅读2.7k次,点赞2次,收藏9次。一,为什么要冗余数据互联网数据量很大的业务场景,往往数据库需要进行水平切分来降低单库数据量。水平切分会有一个patition key,通过patition key的查询能..._保证冗余性

java 打包插件-程序员宅基地

文章浏览阅读88次。是时候闭环Java应用了 原创 2016-08-16 张开涛 你曾经因为部署/上线而痛苦吗?你曾经因为要去运维那改配置而烦恼吗?在我接触过的一些部署/上线方式中,曾碰到过以下一些问题:1、程序代码和依赖都是人工上传到服务器,不是通过工具进行部署和发布;2、目录结构没有规范,jar启动时通过-classpath任意指定;3、fat jar,把程序代码、配置文件和依赖jar都打包到一个jar中,改配置..._那么需要把上面的defaultjavatyperesolver类打包到插件中

VS2015,Microsoft Visual Studio 2005,SourceInsight4.0使用经验,Visual AssistX番茄助手的安装与基本使用9_番茄助手颜色-程序员宅基地

文章浏览阅读909次。1.得下载一个番茄插件,按alt+g才可以有函数跳转功能。2.不安装番茄插件,按F12也可以有跳转功能。3.进公司的VS工程是D:\sync\build\win路径,.sln才是打开工程的方式,一个是VS2005打开的,一个是VS2013打开的。4.公司库里的线程接口,在CmThreadManager.h 里,这个里面是我们的线程库,可以直接拿来用。CreateUserTaskThre..._番茄助手颜色

推荐文章

热门文章

相关标签