YuXuan
发布于 2020-09-09 / 12 阅读
0

OSS功能详解

基本功能

使用阿里云管理控制台来完成 OSS 基本操作的流程如下:
image.png

  1. 开通OSS服务器
    前提条件
    在使用阿里云 OSS 服务之前,请确保您已经注册了阿里云账号并完成实名认证。如果您还没有创建阿
    里云账号,系统会在您开通 OSS 时提示您注册账号
    操作步骤
    1)登录阿里云官网
    2)将鼠标移至产品,单击对象存储 OSS,打开 OSS 产品详情页面。
    3)在OSS 产品详情页,单击立即开通。
    image.png
    1)开通服务后,在 OSS 产品详情页单击管理控制台直接进入 OSS 管理控制台界面。
    您也可以单击位于官网首页右上方菜单栏的控制台,进入阿里云管理控制台首页,然后单击左侧的对象存储 OSS 菜单进入 OSS 管理控制台界面。
    image.png
    image.png
  2. 创建存储空间
    1)登录OSS管理控制台
    2)单击Bucket列表,之后单击创建Bucket。
    您也可以单击概览,之后单击右侧的创建Bucket。
    3)在创建Bucket页面配置Bucket参数。
    image.png
  3. 上传文件
    1)登录OSS管理控制台
    2)单击Bucket列表,之后单击目标Bucket名称。
    3)单击文件管理 > 上传文件。
    4)在上传文件页面,设置上传文件的参数。
    5)在上传任务页面等待任务完成,之后关闭对话框。
    image.png
  4. 下载文件
    1)登录OSS管理控制台
    2)进入目标Bucket。
    单击Bucket列表,之后单击目标Bucket名称。
    3)单击文件管理页签,您可以进行以下操作:
    image.png
  5. 删除文件
    1)登录OSS管理控制台
    2)进入目标Bucket。
    单击Bucket列表,之后单击目标Bucket名称。
    3)选择一个或多个文件,选择批量操作 > 删除。
    您也可以选择目标文件右侧删除来删除单个文件。
    4)在删除文件对话框中,单击确定。
    image.png
    image.png
  6. 删除存储空间
  7. 进入OSS管理控制台界面
  8. 进入目标Bucket,找到删除Bucket按钮。
    单击基础设置页签,找到Bucket管理区域。3. 单击删除Bucket。
  9. 在弹出的对话框中,单击确定。
    image.png
    image.png

Object外链地址的构成规则

如果一个bucket设置成公开读权限,意味着允许其他用户来访问属于你的object。你的object的外链地址构成规则如下:
http://<你的bucket名字>.<数据库中心服务域名>/<你的object名字>
构成规则的示意图如下:
image.png
假设 oss-example 这个 bucket 在青岛数据中心,这个 object 的外链 URL 为:
http://oss-example.oss-cn-qingdao.aliyuncs.com/aliyun-logo.png
用户可以直接该URL链接放入HTML中使用:

<img src="http://oss-example.oss-cn-qingdao.aliyuncs.com/aliyun-logo.png"/>

OSS 的短域名(oss.aliyuncs.com)作为 OSS 杭州数据中心的另一个域名仍然可以使用,但只能处理 bucket 属于杭州数据中心的请求。 为了统一起见,本 文接下来章节的例子中, 都将以 oss-cnhangzhou 域名为例。 请用户根据自己 bucket 所属的数据中心自行替换请求所访问的 Host。
注意:在使用 OSS 时,请一直使用 OSS 服务域名,而不要使用固定的 IP 地址。

OSS防盗链

OSS 是按使用收费的服务, 为了防止用户在 OSS 上的数据被其他人盗链, OSS 支持基于 HTTP header 中表头字段 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 应用场景例子:

访问日志记录(Server_Access_Logging)

OSS为用户提供自动保存访问日志记录功能。Bucket的拥有者可以通过OSS控制台(http://oss.aliyun.com)日志管理,为其所拥有的bucket开启访问日志记录功能。当一个bucket(源Bucket,Source Bucket)开启访问日志记录功能后,OSS自动将访问这个bucket的请求日志,以小时为单位,按照固定的命名规则,生成一个Object写入用户指定的bucket(目标Bucket,Target Bucket)。
存储访问日志记录的object命名规则:
-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 IP119.140.142.11请求发起的IP地址(Proxy代理或用户防火墙可能会屏蔽该字段)
Reserved-保留字段
Time[02/May/2012:00:00:04+0800]OSS收到请求的时间
Request-URI“GET /aliyun-logo.png HTTP/1.1“用户请求的URI(包括query-string)
HTTP Status200OSS返回的HTTP状态码
SentBytes5576用户从OSS下载的流量
RequestTime(ms)71完成本次请求的时间(毫秒)
Referrerhttp://oss.aliyun.com请求的HTTP Referrer
User-Agentcurl/7.15.5HTTP的User-Agent头
HostNameoss-example.oss.aliyuncs.com请求访问域名
Request ID505B01695037C2AF032593A4用于唯一标示该请求的UUID
LoggingFlagtrue是否开启了访问日志功能
Requester Aliyun ID1657136103983691请求者的阿里云ID;匿名访问为“-”
OperationGetObject请求类型
Bucketoss-example请求访问的Bucket名字
Key/aliyun-logo.png用户请求的Key
ObjectSize5576Object大小
Server Cost Time (ms)17OSS服务器处理本次请求所花的时间(毫秒)
Error CodeNoSuchBucketOSS返回的错误码
UserID1657136103983691Bucket拥有者ID
Delta DataSize280Bucket大小的变化量;若没有变化为“-”

细节分析:

  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处理工具时考虑兼容性的问题。