{{ item.label }}
自然语言处理
本文列举了对象存储MOS产品动态和对应的参考文档。
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
Bucket Policy | 支持通过图形化界面以及策略语法的方式配置Bucket Policy。 | 2021-04-16 | 全部 | 通过Bucket Policy 授权用户访问指定资源 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
敏感数据保护 |
MOS敏感数据保护是一款识别、分类、
分级和保护存储空间(Bucket)中 敏感数据的原生服务,可满足数据安 全、个人信息保护等相关法规的合规要求。 |
2021-03-25 |
华东1(杭州)、
华东2(上海)、 华北2(北京)、 华南1(深圳)、 华北3(张家口)、 华北5(呼和浩特)、 中国(香港)地域 |
敏感数据保护 |
多个地域不同Bucket之间的数据同步 |
当您希望在不同地域保存
某个Bucket中数据的精确副 本时,可对该Bucket配置多 条跨区域复制规则。 |
2021-03-12 | 全部 | 跨区域复制介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
批量导出URL列表 |
您可以批量导出多个文件URL,
用于分享给第三方供其下载或预览。 |
2021-01-18 | 全部 | 分享文件 |
MOS高防 |
您可以使用MOS高防保护
您的Bucket,使其在遭受 大流量攻击时仍能提 供正常的访问服务。 |
2021-01-07 |
华东1(杭州)、
华东2(上海)、 华北1(青岛)、 华北2(北京)、 华南1(深圳) |
MOS高防 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
镜像回源新增回 源私有Bucket功能 |
回源的目标文件是同账号
下其他Bucket中的私有文 件时,可通过回源私有 Bucket功能正确获取到目标文件。 |
2020-12-17 | 全部 | 设置回源规则 |
ZIP包解压新增保留压缩文件名为路径目录功能 |
您可以将ZIP文件
解压成子目录存放 在目标目录中,以区 分不同的压缩文件。 |
2020-12-01 |
除华南2(河源)、
华南3(广州)、 西南1(成都)、 华北6(乌兰察布)、 中国(香港)、 马来西亚(吉隆坡)、 阿联酋(迪拜)、 英国(伦敦) 以外地域 |
设置ZIP包解压规则 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS加速器功能 |
MOS加速器用于缓存MOS中的热
点文件,并提供高性能、 高吞吐量的数据访问服务 。适用于基因训练、 机器学习、数据湖、大 数据计算等需要大量带 宽,且数据重复读的场景。 |
2020-11-19 | 华东2(上海) | 配置MOS加速器 |
服务器端加密支持SM4加密算法 |
服务器端加密新增国
密SM4加密算法, 您可以灵活选择 AES256和SM4加 密算法加密您的文件。 |
2020-11-01 | 全部 | 设置服务器端加密 |
跨区域复制支持复制加密的对象 |
跨区域复制支
持复制使用K MS托管密钥加密 (SSE-KMS)、 MOS完全托管加密 (SSE-MOS)方式加密的对象。 |
2020-11-01 | 全部 | 设置跨区域复制 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
控制台删除文件夹新增任务列表 | 删除文件夹时可 通过任务列表查看任务 进度,可随时中断正在进行的删除任务。 | 2020-09-28 | 全部 | 删除目录 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
跨区域复制支持对象标签 |
当源和目标Bucket均
开启版本控制功能, 且“数据同步策略”为“ 增/改同步”时,MOS支 持将指定标签的对象 同步到目标Bucket。 |
2020-08-28 |
源地域为华东1(杭州),目标地域
为除华东1(杭州)以外的任意地域 源地域为澳大利亚(悉尼),目标 地域为除中国内地和澳大利亚(悉尼)以外的任意地域 |
设置跨区域复制 |
跨区域复制支持传输加速 |
跨区域复制时,
支持通过传输加速 功能加速文件传输。 |
2020-08-28 |
中国内地与
非中国内地之 间进行跨区域复制时 |
设置跨区域复制 |
冷归档存储 |
新增冷归档存储类型,
适合需要超长时间存放 的极冷数据。数据最小 存储单元为64 KB, 最小存储周期为180 天,存储费用低于归档存储。 |
2020-08-01(邀测) |
华北1(青岛)、华北2(北京)
、华北3(张家口)、华东1(杭州) 、华东2(上海)、华南1(深圳) 、西南1(成都)、 中国香港、澳大利亚(悉尼)、 新加坡、美国(硅谷)、德国 (法兰克福)、马来西亚(吉隆坡)、 印度尼西亚(雅加达)、印度 (孟买)、阿联酋(迪拜) |
冷归档存储(Cold Archive) |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
传输加速功能新增非中国内地加速域名 |
传输加速功能新增非中国
内地加速域名: MOS-accelerate-overseas. moduyuncs.com,仅在中 国香港及海外各地域Bucket 绑定未备案的域名做CNAME 指向时使用。其他场景建议 使用全球加速域名。 |
2020-07-28 | 除中国内地以外所有地域 | 绑定传输加速域名 |
MOS控制台新增恢复和批量删除历史版本功能 |
开启版本控制后,
MOS控制台支持恢复 指定历史版本Object 及批量删除历史版本操作。 |
2020-07-24 | 全部 | 版本控制 |
镜像回源新增透传正斜线(/)到源站 |
当请求的源站
文件的文件名以 正斜线(/)开头时, 透传正斜线到源站。 |
2020-07-20 |
美国(硅谷)
、美国(弗吉尼亚) 、华东1(杭州) |
概述 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
CDN缓存自动刷新支持针对指定操作进行刷新 |
CDN缓存自动刷新
可指定刷新缓存的 操作,当Object因 指定操作更新后自动 刷新CDN缓存,例如 PutObject、DeleteObject等。 |
2020-06-05 | 全部 | 绑定CDN加速域名 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
镜像回源新增MD5校验和替换前缀操作 |
MD5校验:当返回的response
中含有Content-MD5时,MOS 检查回源文件的MD5值是否与 Content-MD5值匹配,匹配则 保存文件至MOS,不匹配则丢弃。 替换或截取前缀:MOS在向源站 请求时,将文件名前缀的内容 替换为指定前缀。 |
2020-05-22 | 全部 | 概述 |
MOS控制台支持拖拽上传保留文件夹操作 |
通过MOS控制台拖
拽上传时,会保留文 件夹的所有子文件夹。 |
2020-05-22 | 全部 | 上传文件 |
标准存储类型的服务可用性变更 |
标准存储类型服务可用性变更为:
标准存储-同城冗余(ZRS)提供99.995%服务可用性。 标准存储-本地冗余(LRS)提供99.99%服务可用性。 |
2020-05-01 | 全部 | 存储类型介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
存储空间清单 |
您可以使用对象存储MOS的
清单功能列举存储空间(Bucket) 内指定文件(Object), 以获取Object的数量、大小、 存储类型、加密状态等属性信息。 相对于ListObject接口, 在海量Object的列举场景中, 建议您优先使用清单功能。、 |
2020-04-30 | 全部 | 存储空间清单 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
Bucket Policy支持授权临时用户 | Bucket Policy支持对临时用户进行访问授权。 | 2020-03-13 | 全部 | 通过Bucket Policy授权用户访问指定资源 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
Bucket创建数量提升至100个 |
同一摩杜云账号在同一
地域内可创建的Bucket 总数提升至100个。 |
2019-12-13 | 全部 | 使用限制 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
版本控制 |
开启存储空间(Bucket)版本控制功能后,
针对数据的覆盖和删除操作将会以 历史版本的形式保存下来。您在错误覆 盖或者删除Object后,能够将Bucket中 存储的Object恢复至任意时刻的历史版本。 |
2019-11-15 | 全部 | 版本控制介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
图片预览功能变更 |
对于2019年9月23日后创建的Bucket,
使用MOS访问域名从浏览器访问图片类型文件时, 会以附件形式下载。如果您希望直接 预览图片,需要使用自定义域名访问 MOS。2019年9月23日0点之前已创建 的Bucket不在影响范围内。 |
2019-09-23 | 全部 |
MOS升级公告
绑定自定义域名 |
传输加速 |
MOS利用全球分布的云机房,将全球
各地用户对您存储空间(Bucket)的 访问,经过智能路由解析至就近的接入点, 使用优化后的网络及协议来访问您Bucket 所在的数据中心。传输加速功能让您的客户 可以更快速的访问您的MOS,提升客户体验。 |
2019-09-10 | 全部 | 传输加速 |
同城冗余存储 |
MOS采用多可用区(AZ)机制,
将用户的数据分散存放在同一地域 (Region)的3个可用区。 当某个可用区不可用时,仍然能 够保障数据的正常访问。MOS同城 冗余存储能够提供99.9999999999% (12个9)的数据设计可靠性以及 99.995%的服务可用性。 |
2019-09-09(正式商业化) |
华南 1(深圳)、
华北 2(北京)、 华东1(杭州)、 华东 2(上海)、 新加坡 |
同城冗余存储 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
存储空间标签 |
您可以通过存储空间(Bucket)
的标签功能, 对Bucket进行分 类管理,如列举带有指定标签的 Bucket、对拥有指定标签的 Bucket设置访问权限等。 |
2019-08-29 | 全部 | 存储空间标签 |
对象标签 |
MOS支持使用对象标签
(Object Tagging) 对存储的对象(Object) 进行分类,您可以针对同 标签的Object设置生命 周期规则、访问权限等。 |
2019-08-29 | 全部 | 对象标签 |
单链接限速 |
MOS支持在上传、下
载、拷贝文件时进 行流量控制,以保 证您其他应用的网络带宽。 |
2019-08-17 | 全部 | 单链接限速 |
跨区域复制支持中国香港及海外区域 | 跨区域复制支持中国香港及海外区域。 | 2019-08-15 | 除阿联酋(迪拜)外所有地域 | 跨区域复制介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
服务器端加密 |
MOS支持在服务器端对上传
的数据进行加密(Server-Side Encryption):上传数据时, MOS对收到的用户数据进行加密, 然后再将得到的加密数据持久化保存下来; 下载数据时,MOS自动对保 存的加密数据进行解密并把 原始数据返回给用户,并在 返回的HTTP请求Header中, 声明该数据进行了服务器端加密。 |
2019-06-18 | 全部 | 设置服务器端加密 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
ZIP包解压 |
在MOS控制台配置规则
后,即可触发函数计算 将上传到MOS的压缩包 自动解压到指定目录。 |
2019-01-28 |
除华南2(河源)、
西南1(成都)、 马来西亚(吉隆坡)、 阿联酋(迪拜)、 英国(伦敦) 外所有地域 |
设置ZIP包解压规则 |
图片及文档的智能处理与分析 |
MOS与智能媒体管理
(IMM)深度结合, 支持文档预览、 文档格式转换、 人脸识别、图片分析、 二维码识别等丰富的 数据分析处理操作。 |
2019-01-24 |
华北2(北京)、
华东1(杭州)、 华东2(上海)、 华南1(深圳)、 华北3(张家口)、 新加坡 |
快速开始 |
Bucket Policy |
Bucket Policy是基
于资源的授权策略。 Bucket Policy支持 在控制台直接进行 图形化配置操作, 并且Bucket拥有者 可以直接进行访问授权。 |
2019-01-21 | 全部 | 通过Bucket Policy授权用户访问指定资源 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
实时日志查询 |
实时日志查询功能将MOS
与日志服务相结合, 允许您在MOS控制台直 接查询MOS访问日志, 帮助您完成MOS访问的 操作审计、访问统计、 异常事件回溯和问题定位等工作。 |
2018-12-26 | 全部 | 实时日志查询 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
指定或修改Object存储类型 |
上传Object时,可按需指定
Object为标准存储类型、 低频访问存储类型或归档 存储类型,且实时生效。 通过CopyObject操作实 现Object存储类型在标准、 低频、归档之间任意转换。 且存储类型的转换时效性 从天级别提升到秒级别。 |
2018-11-10 | 全部 |
存储类型介绍
存储类型转换 CopyObject |
Terraform |
MOS发布Terraform
Module,可版本化 管理基础设施资源。 您可通过代码来创建 Bucket、管理Object等。 |
2018-11-07 | 全部 |
Terraform简介
使用Terraform 管理MOS |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
KMS密钥的服务端加密 |
使用MOS服务
端加密的KMS 加密方式, 实现Object 级别加密方式。 |
2018-10-20 | 全部 |
服务器端加密
|
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS Select |
MOS Select允许您
使用简单的SQL语句 从MOS的单个文件中 选取所需要的数据, 从而减少从MOS传输 的数据量,提升您获取数据的效率。 |
2018-09-28 | 全部 |
选取内容(MOS Select)
SelectObject |
合规保留策略 |
MOS支持设置
Bucket级别的WORM 策略,允许您以不可 删除、不可篡改的方 式保存和使用数据。 |
2018-09-28 | 全部 |
合规保留策略
设置合规保留策略 |
同城冗余存储 |
MOS采用多可用区(AZ)机制,
将用户的数据分散存放在同一 地域(Region)的3个可用区。 当某个可用区不可用时, 仍然能够保障数据的正常访问。 MOS同城冗余存储能够提供99. 9999999999%(12个9)的数 据设计可靠性以及99.995%的服务设计可用性。 |
2018-09-28(公测) |
华南 1(深圳)、
华北 2(北京)、 华东1(杭州)、 华东 2(上海)、 新加坡 |
同城冗余存储 |
请求者付费模式 |
请求者付费模式
是指由请求者支付 读取存储空间(Bucket) 内数据时产生的流量费用 和请求费用,而Bucket拥有 者仅支付存储费用。 |
2018-09-27 | 全部 | 请求者付费模式 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
使用KMS托管密 钥进行加解密(SSE-KMS) |
MOS服务端KMS加密,
支持您指定1个CMK ID密钥,以实现BYOK特性。 |
2018-08-14 | 全部 | 服务器端加密 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
Python SDK支持客户端加密 |
使用客户端加密SDK,
在本地进行数据加密, 并将加密后的数据上传 到MOS。在这种场景下, 您需要管理加密过程以及加密密钥。 |
2018-06-05 | 全部 |
客户端加密SDK介绍
客户端加密 |
标准存储单价下调 |
标准存储(Standard)
单价中国内地区域统一 降为0.12元/GB/月,降幅18.9%。 |
2018-06-02 | 中国内地区域 | 对象存储MOS价格概览 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS与DataLakeAnalytics深度结合 |
使用客户端加密SDK,
在本地进行数据加密, 并将加密后的数据上传 到MOS。在这种场景下, 您需要管理加密过程以及加密密钥。 |
2018-05-31 | 全部 | 快速分析MOS数据 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS Browser.js SDK、Node.js. SDK支持断点续传上传 |
断点续传上传将要上
传的文件分成若干个 分片(Part)分别上传, 所有分片都上传完成后, 将所有分片合并成完整的 文件,完成整个文件的上传。 |
2018-03-07 | 全部 |
Node.js. SDK:
分片上传
Browser.js SDK: 分片上传 |
证书托管 |
您可以在MOS上托
管自定义域名证书, 并使用HTTPS访问此自定义域名。 |
2018-03-05 | 全部 |
绑定自定义域名
证书托管 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS iOS SDK支持SWIFT调用 |
支持使用SWIFT框架
开发移动应用的客户 调用MOS iOS SDK。 |
2018-01-18 | 全部 | MMOSwiftDemo |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
iOS SDK 2.8 、 Android
SDK 2.5版本支持CRC64数据校验 |
开启CRC64校验后,对于上传、
下载文件时将检查实际接收数 据计算得出的CRC64是否等同 于原始数据的CRC64,从而保 障传输数据的完整性。 |
2017-12-21 | 全部 |
Android SDK:
数据安全性
iOS SDK: 数据安全性 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
数据迁移工具MOSimport | MOSimport是摩杜云MOS 提供的一款将数据迁移至 MOS存储空间(Bucket)的工具。 | 2017-10-23 | 全部 |
单机部署
分布式部署 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
跨区域复制 |
跨区域复制是在不同MOS
地域之间自动、异步复制 文件,将源存储空间中文件 的改动(新建、覆盖、删除操作) 同步到目标存储空间中。 |
2017-09-15 | 中国内地、美东、美西 | 设置跨区域复制 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
归档存储单价下调 |
归档存储(Archive)
单价下调45%,最短存 储周期调整到60天。 |
2017-07-21 | 中国内地、美东、美西 |
概述
RestoreObject |
新版控制台正式上线 |
优化页面布局、导航系统。
提升概览页信息的聚合能力。 升级Bucket、Object的配置管理。 |
2017-07-01 | 中国内地、美东、美西 | 使用摩杜云账号登录MOS管理控制台 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
命令行工具MOSutil |
MOSutil是以命令行
方式管理MOS数据的工具, 提供方便、简洁、丰富的Bu cket和Object管理命令, 支持Windows、Linux、 Mac平台。 |
2017-04-26 | 全部 | MOSutil介绍 |
Bucket创建数量提升至30个 | 同一摩杜云账号在 同一地域内创建的Bucket总数不能超过30个。 | 2017-04-24 | 全部 |
使用限制
PutBucket |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
iOS SDK 2.6.0 |
iOS SDK 2.6.0全面支持
苹果App Store的最新HTTPS请求访问规范。 |
2016-12-16 | 全部 | 安装iOS SDK |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
管理碎片 |
通过设置生命周期
管理规则来定时清理不需要的碎片。 |
2016-03-10 | 全部 | 管理碎片 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
Ruby SDK | Ruby SDK正式上线。 | 2015-11-26 | 全部 | 安装Ruby SDK |
图片处理 | Bucket默认开启图片处理功能。 | 2015-11-10 | 全部 | 图片处理操作方式 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
追加上传 |
使用MOS API中的AppendObject方
法在已上传的Appendable Obje ct类型文件后面直接追加内容。 |
2015-07-18 | 全部 | 追加上传 |
上传文件支持回调应用服务器 | MOS允许您搭建一个基于MOS的移动应用数据直传服务并设置上传回调。 | 2015-07-08 | 全部 | 快速搭建移动应用上传回调服务 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
MOS接入RAM服务 |
MOS接入RAM(访问控制),
支持主子账号授权以及临时授权方式。 |
2015-04-26 | 全部 |
RAM Policy概述
使用STS临时访问凭证访问MOS |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
生命周期 |
您可以通过MOS的PutBucketLifecycle接口
设置生命周期规则(Lifecycle), 自动删除过期的对象(Object)和碎 片或将到期的Object转储为低频或 归档存储类型,从而节省存储费用。 |
2014-10-20 | 全部 | 生命周期规则介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
跨域资源共享(CORS) |
跨域资源共享(CrMOS-Origin
Resource Sharing),简称 CORS,是HTML5提供的标准 跨域解决方案,MOS支持CORS 标准来实现跨域访问。 |
2014-03-15 | 全部 | 设置跨域资源共享 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
表单上传 |
表单上传是指使用
MOS API中的PostOb ject请求来完成Object 的上传,上传的Object不能超过5GB。 |
2014-02-12 | 全部 | 表单上传 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
服务器端加密 |
MOS支持在服务器端对上传的数据进行
加密编码(Server-Side Encryption) 。上传数据时,MOS对收到的用户数据进 行加密编码,然后再将得到的加密数据 持久化保存下来;下载数据时, MOS自动对保存的加密数据进行解密 并把原始数据返回给用户,并在返回的HTT P请求Header中,声明该数据进行了服务器端加密。 |
2012-11-4 | 全部 | 服务器端加密 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
CNAME |
当您希望通过自定义域名
访问这些文件,需要将自 定义域名绑定到文件所在 的存储空间,并添加CNAME 记录指向存储空间对应的外网域名。 |
2012-09-04 | 全部 | 绑定自定义域名 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
日志存储 |
访问MOS的过程中会产生大量的
访问日志。日志存储功能,可将 MOS的访问日志以小时为单位, 按照固定的命名规则,生成一 个Object写入您指定的 Bucket。 |
2012-08-09 | 全部 | 日志转存 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
静态网站托管 |
您可以通过MOS
API的PutBucketW ebsite接口将自己 的存储空间配置成静态 网站托管模式,并通过 存储空间域名访问该静态网站。 |
2012-06-20 | 全部 | 静态网站托管介绍 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
分片上传 |
MOS提供的分片上传(Multipart Upload)
和断点续传功能, 可以将要上传的文件分成多 个数据块(MOS里又称之为Part) 来分别上传,上传完成之后再 调用MOS的接口将这些Part组 合成一个Object来达到断点续传的效果。 |
2012-03-29 | 全部 | 分片上传和断点续传 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
拷贝文件 |
拷贝文件是指在
不改变文件内容的 情况下,将某个存储 空间(Bucket)内的一 些文件(Object)复制到 另外一个 Bucket 中。 |
2011-12-16 | 全部 | 拷贝文件 |
防盗链 |
防盗链是指调用
MOS API的PutBucket Referer接口设置Referer, 用以防止他人盗用MOS数据。 |
2011-12-16 | 全部 | 防盗链 |
HTTP header |
您可以通过设置文
件HTTP头来自定义HTTP 请求的策略,例如缓存 策略、文件强制下载策略等。 |
2011-12-16 | 全部 | 设置文件HTTP头 |
功能名称 | 功能概述 | 发布时间 | 发布地域 | 相关文档 |
---|---|---|---|---|
对象存储MOS正式发布 | 摩杜云对象存储MOS正式商用。 | 2011-10-22 | 全部 | 什么是对象存储MOS |
摩杜云对象存储MOS(Moduyun Object Storage
)具有丰富的安全防护能力,支持服务器端加密、客户端加密、防盗链白名单、细粒度权限管控、日志审计、合规保留策略(WORM)等特性。MOS为您的云端数据安全进行全方位的保驾护航,并满足您企业数据的安全与合规要求。
MOS是目前中国国内唯一通过Cohasset Associates审计认证的云服务,可满足严格的电子记录保留要求,例如SEC Rule
17a-4(f)、FINRA
4511、CFTC
1.31等合规要求。此外,MOS已获得以下合规认证:
ISO9001、ISO20000、ISO22301、ISO27001、ISO27017、ISO27018、ISO29151、ISO27701
BS10012
CSA STAR
PCI DSS
C5
MTCS
GxP
TPN
可信云服务认证
SOC 1/2/3 报告
本文对于MOS的安全能力做一个全面的介绍,包含以下内容:
访问控制 | MOS提供读写权限ACL、授权策略、防盗链白名单等功能,实现存储资源访问的控制和管理。 |
数据加密 | MOS提供服务器端加密和客户端加密,并支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。 |
监控审计 | MOS提供访问日志的存储和查询功能,可满足您对企业数据的监控审计需求。 |
数据容灾 | MOS提供同城冗余存储和跨区域复制特性,实现同地域和跨地域级别的机房容灾能力。 |
数据保留合规 | MOS支持WORM(Write once read many)特性, 允许用户以“不可删除、不可篡改”方式保存和使用 数据,符合美国证券交易委员会(SEC)和金融业监管局(FINRA)的合规要求。 |
其他特性 | MOS提供版本控制功能,防止数据的误删除和覆盖。如果您的 MOS Bucket遭受攻击或者分享了非法内容,MOS会自动将 该Bucket切入沙箱,防止影响您其他Bucket的服务。 |
摩杜云对象存储MOS提供读写权限ACL、授权策略、防盗链白名单等功能,实现存储资源访问的控制和管理。
MOS为权限控制提供访问控制列表(ACL)。ACL是授予Bucket和Object访问权限的访问策略。
您可以在创建存储空间(Bucket)或上传对象(Object)时配置ACL,也可以在创建Bucket或上传Object后的任意时间内修改ACL。
Bucket ACL
Bucket ACL是Bucket级别的权限访问控制。目前有三种访问权限,含义如下:
权限值 | 中文名称 | 权限对访问者的限制 |
---|---|---|
public-read-write | 公共读写 |
任何人(包括匿名访问)都可以
对该Bucket中的Object进行读、 写、删除操作;所有这些操作产 生的费用由该Bucket的Owner承担,请慎用该权限。 |
public-read | 公共读 |
只有该Bucket的Owner或
者授权对象可以对存放在 其中的Object进行写、删 除操作;任何人(包括匿名访问) 可以对Object进行读操作。 |
private | private |
只有该Bucket的Owner或者
授权对象可以对存放在其中 的Object进行读、写、删除操作; 其他人在未经授权的情况下无法 访问该Bucket内的Object。 |
Object ACL
Object ACL是Object级别的权限访问控制。目前有四种访问权限,含义如下:
权限值 | 中文名称 | 权限对访问者的限制 |
---|---|---|
public-read-write | 公共读写 | 所有用户拥有对该Object的读写权限。 |
public-read | 公共读 | 非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限。 |
private | 私有 | 只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object。 |
default | 继承Bucket | Object遵循Bucket的读写权限,即Bucket是什么权限,Object就是什么权限。 |
说明 Object的读写权限默认为继承Bucket。Object的权限大于Bucket权限。 例如,设置了Object的权限是public-read,则无论Bucket是什么权限,该Object都可以被身份验证访问和匿名访问。
更多信息,请参见MOS开发指南中的读写权限ACL。
RAM(Resource Access Management)是摩杜云提供的资源访问控制服务,RAM Policy是基于用户的授权策略。通过设置RAM
Policy,您可以集中管理您的用户(例如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限,例如限制您的用户只拥有对某个Bucket里的某些对象的读权限。
RAM
Policy为JSON格式,您可以通过其中的Statement描述授权语义,每条语义包含对Action、Effect、Resource和Condition的描述。您可以根据业务场景设置多条语义,实现灵活的授权策略。详情请参见MOS开发指南中的RAM
Policy概述。
相对于RAM提供的长效控制机制,STS(Security Token
Service)提供的是一种临时访问授权。通过STS可以返回临时的AccessKey和Token,这些信息可以直接发给临时用户用来访问MOS。一般来说,从STS获取的权限会受到更加严格的限制,并且拥有时间限制,因此这些信息泄露之后对于系统的影响也很小。
MOS可以通过摩杜云STS进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。更多信息请参见MOS开发指南中的STS临时授权访问MOS。
Bucket Policy是基于资源的授权策略。相比于RAM Policy,Bucket
Policy支持在控制台直接进行图形化配置操作,并且Bucket拥有者直接可以进行访问授权。
使用Bucket
Policy,您可以授予其他账号的RAM用户访问您的MOS资源的权限,也可以向匿名用户授予带特定IP条件限制的访问权限。详情请参见添加Bucket授权策略(Bucket
Policy)。
对象存储MOS是按使用量收费的服务。为了减少您存储于MOS的数据被其他人盗链而产生额外费用,MOS支持设置基于HTTP和HTTPS
header中表头字段Referer的防盗链方法。
您可以设置防盗链白名单,仅允许指定的域名访问MOS资源,或者仅允许HTTP或HTTPS
header中包含Referer字段的请求才能访问MOS资源。对于公共读或公共读写的Bucket,防盗链白名单可以有效防止盗链,保护您的合法权益。详情请参见MOS开发指南中的防盗链。
对象存储MOS提供服务器端加密和客户端加密, 并支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。
MOS支持在服务器端对上传的数据进行加密(Server-Side
Encryption)。上传数据时,MOS对收到的用户数据进行加密,然后再将得到的加密数据持久化保存下来;下载数据时,MOS自动对保存的加密数据进行解密并把原始数据返回给用户,并在返回的HTTP请求Header中,声明该数据进行了服务器端加密。
MOS通过服务器端加密机制,提供静态数据保护。适合于对于文件存储有高安全性或者合规性要求的应用场景。例如,深度学习样本文件的存储、在线协作类文档数据的存储。针对不同的应用场景,MOS有以下两种服务器端加密方式:
使用KMS托管密钥进行加解密(SSE-KMS)
上传文件时,可以使用默认KMS(Key Management Service)托管的CMK(Customer Master
Key)或者指定的CMK
ID进行加解密操作。这种场景适合于大量的数据加解密。数据无需通过网络发送到KMS服务端进行加解密,是一种低成本的加解密方式。
KMS是摩杜云提供的一款安全、易用的管理类服务。用户无需花费大量成本来保护密钥的保密性、完整性和可用性。借助密钥管理服务,用户可以安全、便捷的使用密钥,专注于开发加解密功能场景。用户可以通过KMS控制台中查看和管理KMS密钥。
除了采用AES-256加密算法外,KMS负责保管用户主密钥CMK(对数据密钥进行加密的密钥),以及生成数据加密的密钥,通过信封加密机制,进一步防止未经授权的数据访问。CMK可通过使用MOS默认托管的KMS密钥的方式或者通过BYOK的方式生成,其中使用的BYOK材料可以由摩杜云提供,也可以由用户自主提供。
SSE-KMS服务器端加密的逻辑示意图如下。
使用MOS完全托管加密(SSE-MOS)
基于MOS完全托管的加密方式,是Object的一种属性。MOS服务器端加密使用行业标准的强加密算法AES-256(即256位高级加密标准)加密每个对象,并为每个对象使用不同的密钥进行加密。作为额外的保护,它使用定期轮转的主密钥对加密密钥本身进行加密。该方式适合于批量数据的加解密。
该加密方式下,数据加密密钥的生成和管理由MOS负责。您可以将Bucket默认的服务器端加密方式设置为AES-256,也可以在上传Object或修改Object的元信息时,在请求中携带X-MOS-server-side-encryption并指定其值为AES256,即可实现该Object的服务器端加密存储。
更多信息请参见MOS开发指南中的 服务器端加密。
客户端加密是指将文件(Object)发送到对象存储MOS之前在本地进行加密。使用客户端加密功能时,您需要对主密钥的完整性和正确性负责。在对加密数据进行复制或者迁移时,您需要对加密元信息的完整性和正确性负责。
使用客户端加密时,会为每个Object生成一个随机数据加密密钥,用该随机数据加密密钥明文对Object的数据进行对称加密。主密钥用于生成随机的数据加密密钥,加密后的内容会当作Object的元信息保存在服务端。解密时先用主密钥将加密后的随机密钥解密出来,再用解密出来的随机数据加密密钥明文解密Object的数据。主密钥只参与客户端本地计算,不会在网络上进行传输或保存在服务端,以保证主密钥的数据安全。
对于主密钥的使用,目前支持以下两种方式:
使用KMS托管用户主密钥
当使用KMS托管用户主密钥用于客户端数据加密时,无需向MOS加密客户端提供任何加密密钥,只需要在上传对象时指定KMS用户主密钥ID(也就是CMK
ID)。具体工作原理如下图所示。
使用用户自主管理密钥
使用用户自主管理密钥时,需要您自主生成并保管加密密钥。当本地客户端加密Object时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下图所示。
更多信息请参见MOS开发指南中的 客户端加密。
MOS支持通过HTTP或HTTPS的方式访问。您也可以在Bucket Policy中设 置仅允许通过HTTPS(TLS)来访问MOS资源,实现更加安全的数据传输。安全传输层协议(TLS) 用于在两个通信应用程序之间提供保密性和数据完整性。详情请参见使用Bucket Policy授权其他用户访问MOS资源。
对象存储MOS提供访问日志的存储和查询功能,并支持Bucket操作日志透明化,满足您对企业数据的监控审计需求。
访问对象存储MOS的过程中会产生大量的访问日志, 您可以通过日志转存功能将这些日志按照固定命名规则, 以小时为单位生成日志文件写入您指定的Bucket。 对于已存储的日志,您可以通过摩杜云日志服务 或搭建Spark集群等方式进行分析。更多信息,请参见日志转存。
通过与日志服务SLS相结合,MOS还支持实时日志查询功能。 您可以在MOS控制台直接查询MOS访问日志,完成MOS访问的操作审计、访问统计、 异常事件回溯和问题定位等工作。实时日志查询功能能够有效 提升您的工作效率,并帮助您基于数据进行决策。更多信息,请参见实时日志查询。
摩杜云操作审计(ActionTrail)提供平台操作日志(Inner-ActionTrail) 近实时投递到日志服务,进行相关分析审计服务。 ActionTrail可以近实时地记录并存储摩杜云MOS平台操作日志,并基于日志服务, 输出查询分析、报表、报警、下游计算对接与投递等能力, 满足您平台操作日志相关的分析与审计需求。更多信息,请参见平台操作日志简介。
MOS监控服务为您提供系统基本运行状态、性能以及计量等方面的监控数据指标, 并且提供自定义报警服务,帮助您跟踪请求、 分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。更多信息,请参见监控服务。
您在MOS上存储的数据可能包括一些敏感信息, 例如个人隐私信息、密码、密钥、敏感图片等。 如果您希望更好的针对敏感数据进行识别、分类、 分级和保护,可以将MOS与敏感数据保护SDDP结合使用。 SDDP可在您完成数据源识别授权后,从您的海量数据 中快速发现和定位敏感数据,对敏感数据分类分级并统一展示,同时追踪敏感数据的使用情况, 并根据预先定义的安全策略,对数据进行保护和审计, 以便您随时了解数据资产的安全状态。更多信息,请参见敏感数据安全防护方案。
MOS提供同城冗余存储和跨区域复制特性,实现同地域和跨地域级别的机房容灾能力。
MOS采用多可用区(AZ)机制,将用户的数据分散存放在同一地域(Region)的三个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。MOS同城冗余存储提供99.9999999999%(12个9)的数据设计持久性以及99.995%的服务可用性。
MOS的同城冗余存储能够提供机房级容灾能力。当断网、断电或者发生灾难事件导致某个机房不可用时,仍然能够确保继续提供强一致性的服务能力,整个故障切换过程用户无感知,业务不中断、数据不丢失,可以满足关键业务系统对于“恢复时间目标(RTO)”以及“恢复点目标(RPO)”等于0的强需求。
目前MOS的同城冗余存储支持标准存储类型、低频访问存储类型。这两种存储类型的各项对比指标详情如下:
对比指标 | 标准存储类型 | 低频访问存储类型 |
---|---|---|
数据设计持久性 | 99.9999999999%(12个9) | 99.9999999999%(12个9) |
服务可用性 | 99.995% | 无 |
服务设计可用性 | 无 | 99.995% |
对象最小计量大小 | 按照对象实际大小计算 | 64 KB |
最短存储时间 | 无最短存储时间要求 | 30天 |
数据取回费用 | 无 | 按实际获取的数据收取,单位GB |
数据访问 | 实时访问,毫秒延迟 | 实时访问,毫秒延迟 |
图片处理 | 支持 | 支持 |
更多信息请参见MOS开发指南中的 同城冗余存储。
跨区域复制(CrMOS-Region
Replication)是跨不同MOS数据中心(地域)的存储空间(Bucket)自动、异步(近实时)复制对象(Object),它会将Object的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。
跨区域复制可满足您的以下业务需求:
合规性要求:虽然MOS默认对每个存储的对象在物理盘上有多份副本,但合规性要求所规定的数据需要跨一定距离保存一份副本。通过跨区域复制,可以在远距离的MOS数据中心之间复制数据以满足这些合规性要求。
最大限度减少延迟:客户处于两个地理位置。为了最大限度缩短访问对象时的延迟,可以在地理位置与用户较近的MOS数据中心中维护对象副本。
数据备份与容灾:您对数据的安全性和可用性有极高的要求,对所有写入的数据,都希望在另一个数据中心显式地维护一份副本,以备发生特大灾难,如地震、海啸等导致一个MOS数据中心损毁时,还能启用另一个MOS数据中心的备份数据。
数据复制:由于业务原因,需要将数据从MOS的一个数据中心迁移到另一个数据中心。
操作原因:您在两个不同数据中心拥有分析同一组对象的计算集群,可以选择在两个不同区域中维护对象副本。
跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。目标Bucket中的对象是源Bucket中对象的精确副本,它们具有相同的对象名、版本信息、元数据以及内容,例如创建时间、拥有者、用户定义的元数据、Object
ACL、对象内容等。支持复制未加密的对象和使用SSE-KMS、SSE-MOS方式进行服务器端加密的对象。
更多信息请参见MOS开发指南中的
跨区域复制介绍。
MOS支持WORM(Write once read
many)特性,允许用户以“不可删除、不可篡改”方式保存和使用数据,符合美国证券交易委员会(SEC)和金融业监管局(FINRA)的合规要求。
MOS是目前中国国内唯一通过Cohasset Associates审计认证的云服务,可满足严格的电子记录保留要求,例如SEC Rule
17a-4(f)、FINRA
4511、CFTC 1.31等合规要求。详情请参见 MOS Cohasset Assessment Report。
MOS提供强合规策略,您可以针对Bucket设置基于时间的合规保留策略。当策略锁定后,用户可以在Bucket中上传和读取Object,但是在Object的保留时间到期之前,任何用户都无法删除Object和策略。Object的保留时间到期后,才可以删除Object。MOS支持的WORM特性适用于金融、保险、医疗、证券等行业。您可以基于MOS搭建“云上数据合规存储空间”。
更多信息请参见MOS开发指南中的合规保留策略。
MOS还提供版本控制功能,防止数据的误删除和覆盖。 如果您的MOS Bucket遭受攻击或者分享了非法内容, MOS会自动将该Bucket切入沙箱,防止影响您其他Bucket的服务。
为了防止您存储在MOS上的数据被误删除,MOS提供了针对Bucket的版本控制功能。开启了版本控制以后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。用户在错误覆盖或者删除Object后,MOS能够将Bucket中存储的Object恢复至任意时刻的历史版本。
版本控制应用于Bucket内的所有Object。当第一次针对Bucket开启版本控制后,该Bucket中所有的Object将在之后一直受到版本控制,并且每个版本都具有唯一的版本ID。您可以在开启了版本控制的Bucket中进行上传、列举、下载、删除、恢复对象等操作。您也可以暂停版本控制以停止在Bucket中继续累积同一Object的新版本。暂停版本控制后,您仍可以通过指定versionId对历史版本Object进行下载、拷贝、删除等操作。MOS会针对每个版本进行收费,您可以通过生命周期规则自动删除过期版本。
更多信息请参见MOS开发指南中的版本控制介绍。
当您的MOS
Bucket遭受攻击,或者有其他用户通过您的Bucket分享违法内容,MOS会自动将Bucket切入沙箱。沙箱中的Bucket仍可以正常响应请求,但服务质量将被降级,您的应用可能会有明显感知。若您的Bucket遭受攻击,您需要自行承担因攻击而产生的全额费用。
为防止您的Bucket因攻击原因被切入沙箱,建议您使用高防IP来抵御DDoS攻击和CC攻击。为防止您的Bucket因分享涉黄、涉政、涉恐等违法内容被切入沙箱,建议您开通内容安全服务,定期针对您选中的Bucket进行检测。
更多信息请参见MOS开发指南中的MOS沙箱。
摩杜云对象存储MOS(Moduyun Object Storage
)是摩杜云提供的海量、安全、低成本、高持久的云存储服务。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。
MOS具有与平台无关的RESTful API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。
您可以使用摩杜云提供的API、SDK接口或者MOS迁移工具轻松地将海量数据移入或移出摩杜云MOS。数据存储到摩杜云MOS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent
Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。
常见问题
查看 MOS常见问题
,了解其他用户经常咨询和关注的一些问题。
学习路径
通过MOS产品学习路径图快速了解MOS,学习相关的基础操作,并利用丰富的API、SDK包和便捷工具进行二次开发。
存储类型(Storage Class)
MOS提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。其中标准存储类型提供高持久、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率1到2次),存储单价低于标准类型;归档存储类型适合需要长期保存(建议半年以上)的归档数据;冷归档存储适合需要超长时间存放的极冷数据。更多信息,请参见存储类型介绍。
存储空间(Bucket)
存储空间是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
对象(Object)
对象是MOS存储数据的基本单元,也被称为MOS的文件。对象由元信息(Object
Meta)、用户数据(Data)和文件名(Key)组成。对象由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,例如最后修改时间、大小等信息,同时您也可以在元信息中存储一些自定义的信息。
地域(Region)
地域表示MOS的数据中心所在物理位置。您可以根据费用、请求来源等选择合适的地域创建Bucket。更多信息,请参见MOS已开通的地域。
访问域名(Endpoint)
Endpoint表示MOS对外服务的访问域名。MOS以HTTP RESTful
API的形式对外提供服务,当访问不同地域的时候,需要不同的域名。通过内网和外网访问同一个地域所需要的域名也是不同的。更多信息,请参见各个Region对应的Endpoint。
访问密钥(AccessKey)
AccessKey简称AK,指的是访问身份验证中用到的AccessKey ID和AccessKey Secret。MOS通过使用AccessKey
ID和AccessKey
Secret对称加密的方法来验证某个请求的发送者身份。AccessKey ID用于标识用户;AccessKey
Secret是用户用于加密签名字符串和MOS用来验证签名字符串的密钥,必须保密。关于获取AccessKey的方法,请参见创建AccessKey。
创建Bucket
在上传文件(Object)到MOS之前,您需要创建一个用于存储文件的Bucket。Bucket具有各种配置属性,包括地域、访问权限以及其他元数据。创建Bucket的具体操作,请参见创建存储空间。
上传文件
Bucket创建完成后,您可以通过多种方式上传不同大小的文件。有关上传文件的具体操作,请参见上传文件。
下载文件
文件上传完成后,您可以将文件下载至浏览器默认路径或本地指定路径。有关下载文件的具体操作,请参见下载文件。
列举文件
当您Bucket内存储了大量的文件后,您可以选择列举Bucket内的全部或部分文件。有关列举文件的具体操作,请参见列举文件。
删除文件
当您不再需要保留上传的文件时,您可以手动删除单个或多个文件,也可以通过配置生命周期规则自动删除单个或多个文件。有关删除文件的具体操作,请参见删除文件。
版本控制
版本控制是针对存储空间(Bucket)级别的数据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。您在错误覆盖或者删除文件(Object)后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。有关版本控制的更多信息,请参见版本控制介绍。
Bucket Policy
Bucket拥有者可通过Bucket
Policy授权不同用户以何种权限访问指定的MOS资源。例如您需要进行跨账号或对匿名用户授权访问或管理整个Bucket或Bucket内的部分资源,或者需要对同账号下的不同RAM用户授予访问或管理Bucket资源的不同权限,例如只读、读写或完全控制的权限等。有关配置Bucket
Policy的操作步骤,请参见通过Bucket Policy授权用户访问指定资源。
跨区域复制
跨区域复制(CrMOS-Region
Replication)是跨不同MOS数据中心(地域)的Bucket自动、异步(近实时)复制Object,它会将Object的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。有关跨区域复制的更多信息,请参见跨区域复制介绍。
数据加密
服务器端加密:上传文件时,MOS对收到的文件进行加密,再将得到的加密文件持久化保存;下载文件时,MOS自动将加密文件解密后返回给用户,并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。有关服务器端加密的更多信息,请参见服务器端加密。
客户端加密:将文件上传到MOS之前在本地进行加密。有关客户端加密的更多信息,请参见客户端加密。
MOS提供多种灵活的上传、下载和管理方式。
通过控制台管理MOS
MOS提供了Web服务页面,您可以登录MOS控制台管理您的MOS资源。更多信息,请参见控制台用户指南。
通过API或SDK管理MOS
MOS提供RESTful API和各种语言的SDK开发包,方便您快速进行二次开发。更多信息,请参见MOS API参考和MOS SDK参考。
通过工具管理MOS
MOS提供图形化管理工具MOSbrowser、命令行管理工具MOSutil、FTP管理工具MOSftp等各种类型的管理工具。更多信息,请参见MOS常用工具。
通过云存储网关管理MOS
MOS的存储空间内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。如果您想要像使用本地文件夹和磁盘那样来使用MOS存储服务,可以通过配置云存储网关来实现。更多信息,请参见云存储网关产品详情页面。
传统的存储服务供应商会要求您购买预定量的存储和网络传输容量,如果超出此容量,就会关闭对应的服务或者收取高昂的超容量费用;如果没有超过此容量,又需要您按照全部容量支付费用。
MOS仅按照您的实际使用容量收费,您无需预先购买存储和流量容量,随着您业务的发展,您将享受到更多的基础设施成本优势。
关于MOS的价格,请参见MOS产品定价。关于MOS的计量计费方式,请参见计量项和计费项。
您把数据存储到MOS以后,就可以使用摩杜云提供的其他产品和服务对其进行相关操作。
以下是您会经常使用到的摩杜云产品和服务:
图片处理:对存储在MOS上的图片进行格式转换、缩放、裁剪、旋转、添加水印等各种操作。更多信息,请参见快速使用MOS图片处理服务。
云服务器MCS:提供简单高效、处理能力可弹性伸缩的云端计算服务。更多信息,请参见MCS产品详情页面。
内容分发网络CDN:将MOS资源缓存到各区域的边缘节点,利用边缘节点缓存的数据,提升同一个文件,被边缘节点客户大量重复下载的体验。更多信息,请参见CDN产品详情页面。
E-MapReduce:构建于MCS上的大数据处理的系统解决方案,基于开源的Apache Hadoop和Apache
Spark,方便您分析和处理自己的数据。更多信息,请参见E-MapReduce产品详情页面。
媒体处理:将存储于MOS的音视频转码成适合在PC、TV以及移动终端上播放的格式。并基于海量数据深度学习,对音视频的内容、文字、语音、场景多模态分析,实现智能审核、内容理解、智能编辑。更多信息,请参见媒体处理产品详情页面。
在线迁移服务:您可以使用在线迁移服务将第三方数据源,如亚马逊AWS、谷歌云等数据轻松迁移至MOS。更多信息,请参见在线迁移服务使用教程。
离线迁移服务:如果您有TB或PB级别的海量数据需要上传到MOS,但本地的网络带宽不够,扩容成本高,可以使用闪电立方离线数据迁移服务。更多信息,请参见离线迁移(闪电立方)介绍。
除了对象存储以外,摩杜云还提供文件存储、块存储等类型的存储服务,满足您不同场景下的业务需求。详细信息,请参见摩杜云存储服务介绍和摩杜云存储产品文档。
有关摩杜云存储服务的客户案例、解决方案等,请参见摩杜云存储产品家族。
对象存储MOS是摩杜云提供的海量、安全、 低成本、高持久性的云存储服务。本文将MOS与传统的自建存储进行对比,让您更好的了解MOS。
对比项 | 对象存储MOS | 自建服务器存储 |
---|---|---|
持久性 |
MOS作为摩杜云数据存储的核心基础设施,多年支撑双11业务高峰,历经高可用与高可靠的严苛考验。MOS的多重冗余架构设计,为数据持久存储提供可靠保障。同时,MOS基于高可用架构设计,消除单点故障,确保数据业务的持续性。
服务可用性不低于99.995%。 数据设计持久性不低于99.9999999999%(12个9)。 规模自动扩展,不影响对外服务。 数据自动多重冗余备份。 |
受限于硬件持久性,易出问题,一旦出现磁盘坏道,容易出现不可逆转的数据丢失。
人工数据恢复困难、耗时、耗力。 |
安全 |
提供企业级多层次安全防护,包括服务端加密、客户端加密、防盗链、通过Bucket
Policy限制IP黑白名单访问、细粒度权限管控、日志审计、WORM特性等。
多用户资源隔离机制,支持异地容灾机制。 获得多项合规认证,包括SEC、FINRA等,满足企业数据安全与合规要求。 |
需要另外购买清洗和黑洞设备。
需要单独实现安全机制。 |
成本 |
多线BGP骨干网络,带宽资源充足,上行流量免费。
无需运维人员与托管费用,0成本运维。 |
存储受硬盘容量限制,需人工扩容。
单线或双线接入速度慢,有带宽限制,峰值时期需人工扩容。 需专人运维,成本高。 |
智能存储 | 提供多种数据处理能力,如图片处理、视频截帧、文档预览、图片场景识别、人脸识别、SQL就地查询等,并无缝对接Hadoop生态、 以及摩杜云函数计算、EMR、DataLakeAnalytics、BatchCompute、MaxCompute、DBS等产品,满足企业数据分析与管理的需求。 | 需要额外采购,单独部署。 |
方便、快捷的使用方式
提供标准的RESTful
API接口、丰富的SDK包、客户端工具、控制台。您可以像使用文件一样方便地上传、下载、检索、管理用于Web网站或者移动应用的海量数据。
不限制存储空间大小。您可以根据所需存储量无限扩展存储空间,解决了传统硬件存储扩容问题。
支持流式写入和读出。特别适合视频等大文件的边写边读业务场景。
支持数据生命周期管理。您可以通过设置生命周期规则,将到期数据批量删除或者转储为更低成本的低频访问、归档存储、冷归档存储。
强大、灵活的安全机制
提供STS和URL鉴权和授权机制、IP黑白名单、防盗链、主子账号等功能。
提供用户级别资源隔离机制和多集群同步机制。
提供服务器端加密和客户端加密,并支持基于SSL/TLS的HTTPS加密传输,有效防止数据在云端的潜在安全风险。
提供版本控制功能,防止文件被误删除或覆盖而造成数据丢失。
数据冗余机制
MOS采用数据冗余存储机制,将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
MOS针对对象的操作具有强一致性。对象一旦上传或复制成功,即可立即读取,且冗余写入多个设备。
MOS会通过计算网络流量包的校验和,验证数据包在客户端和服务端之间传输中是否出错,保证数据完整传输。
MOS的冗余存储机制,可支持两个存储设施并发损坏时,仍维持数据不丢失。
当数据存入MOS后,MOS会检测和修复丢失的冗余,确保数据持久性和可用性。
MOS会周期性地通过校验等方式验证数据的完整性,及时发现因硬件失效等原因造成的数据损坏。当检测到数据有部分损坏或丢失时,MOS会利用冗余数据重建并修复损坏数据。
丰富、强大的增值服务
图片处理:支持JPG、PNG、BMP、GIF、WebP、TIFF等多种图片格式的转换,以及缩略图、剪裁、水印、缩放等多种操作。
音视频转码:提供高质量、高速并行的音视频转码能力,让您的音视频文件轻松应对各种终端设备。
互联网访问加速:提供传输加速服务,可优化互联网传输链路和协议栈,大幅减少数据远距离传输超时的比例,极大地提升用户上传和下载体验。更多详情,请参见传输加速。
内容加速分发:MOS作为源站,搭配CDN进行内容分发,提升同一个文件被重复下载的体验。
本文介绍对象存储MOS的主要应用场景。
MOS可用于图片、音视频、日志等海量文件的存储。 各种终端设备、Web网站程序、移动应用可以直接向 MOS写入或读取数据。MOS支持流式写入和文件写入两种方式。
利用海量互联网带宽,MOS可以实现海量数据的互联网并发下载。 MOS提供原生的传输加速功能,支持上传加速、 下载加速,提升跨国、跨洋数据上传、下载的体验。同时,MOS也可以结合CDN产品, 提供静态内容存储、分发到边缘节点的解决方案, 利用CDN边缘节点缓存的数据,提升同一个文件被同一地区客户大量重复并发下载的体验。
上传文件到MOS后,可以配合媒体处理服务和图片处理服务进行云端的数据处理。
对象存储MOS是摩杜云提供的海量、安全、低成本、高持久性的云存储服务。本文列举了MOS的常见应用场景以及对应的功能概览,请结合您的业务需求选用合适的场景。
在使用MOS之前,建议您先了解存储空间(Bucket)、对象/文件(Object)、地域(Region)、访问域名(Endpoint)等基本概念,以便更好地使用MOS的功能。更多信息,请参见基本概念。
MOS支持以下功能:
应用场景 | 功能描述 | 参考 |
---|---|---|
上传文件 |
上传文件到MOS前,必须先在摩杜云
的任意一个地域创建一个存储空间。 创建存储空间后,您可以上传任意文件到该存储空间。 |
创建存储空间
新建文件夹 简单上传 |
搜索文件 | MOS支持文件和文件夹搜索功能,您可以在存储空间中快速查找目标文件。 | 搜索文件 |
下载文件 |
当文件(Object)上传至存储空间
(Bucket)后,您可以将文件下 载至浏览器默认路径或本地指定路径。 |
下载文件 |
分享文件 |
文件(Object)上传至存储空间
(Bucket)后,您可以将文件 URL分享给第三方,供其下载或预览。 |
分享文件 |
删除文件或文件夹 |
MOS支持一次删除单个或者多
个文件、文件夹、碎片等。 您可以定期删除过期文件,节省您的存储空间。 |
删除对象
删除文件夹 管理碎片 |
在指定时间自动批量删除文件 |
MOS支持生命周期规则,
您可以通过生命周期规则 定期将非热门数据转换 为低频访问、归档存储 或冷归档存储,并删除过期数据。 |
管理对象生命周期 |
提升数据上传下载速率 |
MOS支持传输加速服务,
可优化互联网传输链路和 协议栈,大幅减少数据 远距离传输超时的比例, 极大地提升用户上传和下载体验。 |
传输加速 |
恢复误删除的数据 |
MOS支持版本控制功能,开启版本控制后,
针对文件的覆盖和删除操作将会以历史版 本的形式保存下来。您在错误覆盖或者删除 文件后,能够将存储空间中存储的文件恢 复至任意时刻的历史版本。 |
版本控制 |
同城容灾 |
MOS采用多可用区(AZ)机制,将用户的
数据分散存放在同一地域(Region)的3个可用区。 当某个可用区不可用时,仍然能够保 障数据的正常访问。MOS同城冗余存储 能够提供99.9999999999%(12个9)的数 据设计持久性以及99.995%的服务可用性。 |
同城冗余存储 |
异地容灾 |
MOS支持跨区域复制功能,
您可以通过跨区域复制功能将 文件的创建、更新和删除等操 作从源存储空间复制到不同区 域的目标存储空间,实现数据的异地容灾。 |
管理跨区域复制 |
数据保留合规 |
MOS支持WORM特性,
允许用户以“不可删除、 不可篡改”方式保存和使用数据。 |
合规保留策略 |
控制数据访问权限 |
MOS支持灵活的授权、鉴权机制,您可
以通过以下方式控制MOS资源的访问权限: ACL:通过访问控制列表(ACL)给存 储空间和对象授予访问权限,包括公共读写、公共读、私有。 Bucket Policy:通过控制台的Bucket Policy功能方便直观地授权其他用户访问您 的MOS资源,例如向其他账号的RAM用户授予 访问权限,以及向匿名用户授予带特定IP条件限制的访问权限。 RAM Policy:构建RAM Policy来控制存储 空间和文件夹的访问权限。MOS提供了RAM策 略编辑器帮助您快速生成RAM Policy。 STS临时授权:使用摩杜云STS(Security Token Service)给第三方应用或子用户授予 一个可自定义时效的临时访问权限。 防盗链:对访问来源设置白名单, 避免MOS资源被其他人盗用。 |
设置存储空间ACL
设置文件ACL Bucket Policy RAM Policy STS临时授权访问MOS 防盗链 |
加密数据 |
MOS支持客户端和服务
器端加密,您可以选择 合适的加密方式将您的 数据加密后存储到MOS中。 |
客户端加密
服务器端加密 |
分类管理数据 |
MOS支持通过标签功能分类管理MOS资源:
存储空间标签:存储空间级别的分类管理, 例如列举带有指定标签的存储空间,对带有 指定标签的存储空间设置访问权限等。 对象标签:对象级别的分类管理,例如对带 有指定标签的对象设置生命周期规则、访问权限等。 |
存储空间标签
对象标签 |
记录MOS资源的访问信息 |
MOS支持日志功能,
您可以通过日志功能 完成MOS的操作审计、 访问统计、异常事件回 溯和问题定位等工作。 |
实时日志查询
日志转存 |
使用自有域名访问MOS资源 |
MOS支持绑定自定义域名功能,
您可以将自定义域名绑定到MOS 存储空间,并使用自定义域名访问 存储空间中的数据。如果您需要通 过HTTPS的方式访问MOS,可以通 过MOS托管您的证书。 |
绑定自定义域名
证书托管 |
托管静态网站 |
MOS支持静态网站托管
功能,您可以将您的存 储空间配置成静态网站 托管模式,并通过存储空 间域名访问该静态网页。 |
静态网站托管介绍 |
跨域资源共享 |
MOS支持在HTML5协议
中跨域资源共享(CORS) 的设置。 CORS允许在一个 域名中加载的客户端Web应 用程序与另一个域中的资源进行交互。 |
设置跨域访问 |
获取源数据内容 |
MOS支持回源功能,当您的用户向您
的对象存储MOS请求的数据不存在时, 本应返回404错误。若您设置了回源 规则,填写了数据的正确地址,用户 可以通过回源规则从MOS获取到正确 的数据。回源规则通常用于数据热迁 移和重定向特定请求。 |
管理回源设置 |
了解文件的元信息 |
MOS支持清单功能,
您可以使用存储空间 清单功能导出指定对象 的元数据信息,如文件大小、加密状态等。 |
存储空间清单 |
修改HTTP头 |
MOS支持修改文件HTTP头,
您可以通过设置HTTP头来 自定义HTTP请求的策略。 例如,缓存策略、文件强制下载策略等。 |
设置文件HTTP头 |
查看资源使用情况 |
MOS支持监控功能,
您可以通过监控功能 查看MOS服务使用情况 的实时信息,如基本的 系统运行状态和性能。 |
监控服务概览 |
控制流量 |
MOS支持单链接限速功能,
您可以使用单链接限速功能 在上传、下载、拷贝文件时 进行流量控制,以保证您其他应用的网络带宽。 |
单链接限速 |
对数据进行分析和处理 |
MOS支持图片处理、数据截帧等功能,您可以对存储在MOS上的数据进行分析和处理:
图片处理:对MOS中存储的图片执行不同的操作,例如格式转换、裁剪、缩放、旋转、水印和样式封装等。 视频截帧:对视频编码格式为H264的视频文件进行视频截帧处理。 智能媒体管理:MOS与智能媒体管理(IMM)深度结合,支持文档预览、文档格式转换、人脸识别、图片分析、二维码识别等丰富的数据分析处理操作。 |
图片处理
视频截帧 智能媒体管理 |
使用工具管理MOS资源 |
MOS支持图形化工具、
命令行工具、文件挂载 工具、FTP工具等方便 您管理MOS资源。 |
MOS 常用工具汇总 |
使用SDK管理MOS资源 | MOS支持各种语言的SDK开发包,方便您快速进行二次开发。 | SDK示例 |
本文将向您介绍对象存储MOS产品中涉及的几个基本概念,以便于您更好地理解MOS产品。
存储空间是用户用于存储对象(Object)的容器,
所有的对象都必须隶属于某个存储空间。存储空间具有各种配置属性,
包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
每个用户可以拥有多个存储空间。
存储空间的名称在MOS范围内必须是全局唯一的,一旦创建之后无法修改名称。
存储空间内部的对象数目没有限制。
存储空间的命名规范如下:
只能包括小写字母、数字和短划线(-)。
必须以小写字母或者数字开头和结尾。
长度必须在3~63字节之间。
对象是MOS存储数据的基本单元,也被称为MOS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。对象由元信息(Object
Meta),用户数据(Data)和文件名(Key)组成,并且由存储空间内部唯一的Key来标识。对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、大小等信息,同时用户也可以在元信息中存储一些自定义的信息。
对象的生命周期是从上传成功到被删除为止。在整个生命周期内,除通过追加方式上传的Object可以通过继续追加上传写入数据外,其他方式上传的Object内容无法编辑,您可以通过重复上传同名的对象来覆盖之前的对象。
对象的命名规范如下:
使用UTF-8编码。
长度必须在1~1023字节之间。
不能以正斜线(/)或者反斜线(\)开头。
说明 对象名称需要区分大小写。如无特殊说明,本文档中的对象、文件称谓等同于Object。
在各语言SDK中,ObjectKey、Key以及ObjectName是同 一概念,均表示对Object执行相关操作时需要填写的Object名称。 例如向某一存储空间上传Object时,ObjectKey表示上 传的Object所在存储空间的完整名称,即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。
Region表示MOS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。详情请参见MOS已经开通的Region。
Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改。该Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。
Endpoint表示MOS对外服务的访问域名。MOS以HTTP RESTful API 的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。 通过内网和外网访问同一个Region所需要的Endpoint也是不同的。 例如杭州Region的外网Endpoint是MOS-cn-hangzh ou.moduyuncs.com,内网Endpoint是MOS-cn-hangzhou- internal.moduyuncs.com。具体的内容请参见各个Region对应的Endpoint。
AccessKey简称AK,指的是访问身份验证中用到的AccessKeyId和
AccessKeySecret。MOS通过使用AccessKeyId和AccessKeySecret对
称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户;
AccessKeySecret是用户用于加密签名字符串和MOS用来验证签名字符
串的密钥,必须保密。对于MOS来说,AccessKey的来源有:
Bucket的拥有者申请的AccessKey。
被Bucket的拥有者通过RAM授权给第三方请求者的AccessKey。
被Bucket的拥有者通过STS授权给第三方请求者的AccessKey。
更多AccessKey介绍请参见创建AccessKey。
Object操作在MOS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。MOS保证用户一旦上传完成之后读到的Object是完整的,MOS不会返回给用户一个部分上传成功的Object。
Object操作在MOS同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,并且Object的冗余数据已经写成功。不存在一种上传的中间状态,即read-after-write却无法读取到数据。对于删除操作也是一样的,用户删除指定的Object成功之后,该Object立即变为不存在。
MOS使用基于纠删码、多副本的数据冗余存储机制,将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
MOS Object操作具有强一致性,用户一旦收到了上传或复制成功的响应,则该上传的Object就已经立即可读,且数据已经冗余写入到多个设备中。
MOS会通过计算网络流量包的校验和,验证数据包在客户端和服务端之间传输中是否出错,保证数据完整传输。
MOS的冗余存储机制,可支持两个存储设施并发损坏时,仍维持数据不丢失。
当数据存入MOS后,MOS会检测和修复丢失的冗余,确保数据持久性和可用性。
MOS会周期性地通过校验等方式验证数据的完整性,及时发现因硬件失效等原因造成的数据损坏。当检测到数据有部分损坏或丢失时,MOS会利用冗余的数据,进行重建并修复损坏数据。
对比项 | MOS | 文件系统 |
---|---|---|
数据模型 |
MOS是一个分布式的对象存储服务, 提供的是一个Key-Value对形式的对象存储服务。 |
文件系统是一种典型的树状索引结构。 |
数据获取 |
根据Object的名称(Key)唯一的获取该Object的内容。
虽然用户可以使用类似test1/test.jpg的名字 ,但是这并不表示用户的Object是保存在test1目录下面的。 对于MOS来说,test1/test.jpg仅仅只是一个字符串, 和a.jpg这种并没有本质的区别。因此不同名称的Object 之间的访问消耗的资源是类似的。 |
一个名为test1/test.jpg的文件,
访问过程需要先访问到test1这个目录, 然后再在该目录下查找名为test.jpg的文件。 |
优势 | 支持海量的用户并发访问。 |
支持文件的修改,比如修改指定偏移位置
的内容、截断文件尾部等。也支持文件 夹的操作,比如重命名目录、删 除目录、移动目录等非常容易。 |
劣势 |
MOS保存的Object不支持修改(追加写Object需要调用特定的接口,
生成的Object也和正常上传的Object类型上有差别)。 用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。 MOS可以通过一些操作来模拟类似文件夹的功能,但是代价非常昂 贵。比如重命名目录,希望将test1目录 重命名成test2,那么MOS的实际操作是将所有以test1/开头 的Object都重新复制成以test2/开头的Object,这是一个 非常消耗资源的操作。因此在使用MOS的时候要尽量避免类似的操作。 |
受限于单个设备的性能。访
问越深的目录消耗的资源也越大 ,操作拥有很多文件的目录也会非常慢。 |
因此,将MOS映射为文件系统是非常低效的, 也是不建议的做法。如果一定要挂载成文件系统 的话,建议尽量只做写新文件、删除文件、 读取文件这几种操作。使用MOS应该充分发挥其 优点,即海量数据处理能力,优先用来存储海 量的非结构化数据,比如图片、视频、文档等。
以下是MOS与文件系统的概念对比:
对象存储 MOS | 文件系统 |
---|---|
Object | 文件 |
Bucket | 主目录 |
Region | 无 |
Endpoint | 无 |
AccessKey | 无 |
无 | 多级目录 |
GetService | 获取主目录列表 |
GetBucket | 获取文件列表 |
PutObject | 写文件 |
AppendObject | 追加写文件 |
GetObject | 读文件 |
DeleteObject | 删除文件 |
无 | 修改文件内容 |
CopyObject (目的和源相同) | 修改文件属性 |
CopyObject | 复制文件 |
无 | 重命名文件 |
英文 | 中文 |
---|---|
Bucket | 存储空间 |
Object | 对象或者文件 |
Endpoint | MOS 访问域名 |
Region | 地域或者数据中心 |
AccessKey | AccessKeyId和AccessKeySecret的统称,访问密钥 |
Put Object | 简单上传 |
Post Object | 表单上传 |
Multipart Upload | 分片上传 |
Append Object | 追加上传 |
Get Object | 简单下载 |
Callback | 回调 |
Object Meta | 文件元信息。用来描述文件信息,例如长度,类型等 |
Data | 文件数据 |
Key | 文件名 |
ACL (Access Control List) | 存储空间或者文件的权限 |
说明 如果没有特殊说明,本文中出现和术语表中相同的英文 和中文,表达的是相同的意思。有时候为了表述方便会混合使用。
本文介绍对象存储MOS的一些使用限制及性能指标。
MOS的使用限制及性能指标如下:
限制项 | 说明 |
---|---|
带宽 |
中国内地各地域10 Gbit/s、其他地域5 Gbit/s。如达到该阈值,请求会被流控。
说明 当请求被流控时,请求返回的Header中会携带x-MOS-qos-delay-time: number。其中number为请求被流控的时长,单位为ms。 上传类请求会返回精确的被流控的时长;下载类请求会返回根据流控程度和文件大小估算出的被流控的时长。 如果您的业务(如大数据离线处理等) 有更大的带宽(10 Gbit/s~100 Gbit/s)需求,请联系技术支持。 |
每秒请求数QPS(Query Per Second) |
单个账号的总QPS为10,000,但在不同的读写方式下,实际能达到的值如下:
顺序读写:2,000 如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况,此时如果您的请求速率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。关于如何将顺序前缀改为随机性前缀的方法,请参见MOS性能与扩展性最佳实践。 非顺序读写:10,000 如您的业务有更大的QPS需求,请联系技术支持。 |
存储空间(Bucket) |
同一摩杜云账号在同一地域内创建的存储空间总数不能超过100个。
存储空间创建成功后,其名称、所处地域、存储类型不能修改。 单个存储空间的容量不限制。 |
对象或文件(Object) |
上传文件的大小
通过简单上传、表单上传、追加上传的方式上传单个文件,文件的大小不能超过5 GB。 通过分片上传的方式上传单个文件,文件的大小不能超过48.8 TB。 重命名文件的大小 控制台仅支持重命名1 GB以下的文件,1 GB以上的文件建议使用MOSutil工具。 删除文件的数量 通过控制台批量删除文件时,文件的个数不能超过100个。 通过各语言SDK、图形化管理工具MOSbrowser或命令行工具MOSutil批量删除文件时,文件的个数不能超过1,000个。 警告 文件删除后无法恢复,请谨慎操作。 同名文件被覆盖默认情况下,如果上传的文件与已有文件同名,则覆盖已有文件。为防止文件被意外覆盖,您可以通过为文件所在的Bucket开启版本控制,或者在上传请求的Header中携带参数x-MOS-forbid-overwrite,并指定其值为true。 |
数据解冻 |
在访问归档存储和冷归档存储类型的数据之前,需要先等待数据解冻完成。
对于归档存储类型,数据解冻约需1分钟。 对于冷归档存储类型,数据解冻时间根据不同优先级而有所不同: 高优先级:1小时以内 标准:2~5小时 批量:5~12小时 |
域名绑定 |
中国内地各地域绑定的域名必须在工信部备案,其他地域的域名绑定不需要在工信部备案。
一个域名只能绑定在一个存储空间上,一个存储空间最多可以绑定100个域名。 一个账号可绑定的域名个数无限制。 |
生命周期规则 | 一个存储空间最多可配置1,000条生命周期规则。 |
回源规则 |
一个存储空间最多可配置20条回源规则。
对于镜像回源,中国内地各地域和中国香港默认QPS为2,000、流量为2 Gbit/s;海外各地域默认QPS为1,000、流量为1 Gbit/s。 |
图片处理 |
图片限制
原图 图片格式只支持JPG、PNG、BMP、GIF、WebP、TIFF。 原图大小不能超过20 MB。 除图片旋转对应的原图高或者宽不能超过4,096 px外,其他图片操作对应的原图高或者宽不能超过30,000 px,且总像素不能超过2.5亿 px。 动态图片(例如GIF图片)的像素计算方式为宽*高*图片帧数;非动态图片(例如PNG图片)的像素计算方式为宽*高。 缩放后的图片 宽或高不能超过16,384 px,且总像素不能超过16,777,216 px。 样式限制 每个存储空间下最多能创建50个样式。如您的业务有更多的样式需求,请联系技术支持。 |
资源包 |
地域资源包仅支持在归属地域使用;中国大陆通用资源包仅支持在中国内地(不含中国香港)使用。
已购资源包不支持更换地域。 资源包中的存储包不支持叠加购买,但您可以对已购存储包进行升级。 资源包中的传输加速包和回源流量包支持叠加购买,但不支持升级和续费。 资源包中的下行流量包支持叠加购买和续费,但不支持升级。 请求费用、数据处理费用和流量费用中的跨区域复制流量费用暂时无对应的资源包,即不支持包年包月,仅支持按量计费。 |
本文列举了对象存储MOS的用户经常咨询和关注的一些问题,帮助您快速了解MOS。
什么是摩杜云MOS?
摩杜云对象存储服务MOS(Moduyun Object Storage
Service),是摩杜云提供的海量、安全、低成本、高持久性的云存储服务,并可无限扩展。其数据设计持久性不低于99.9999999999%(12个9),服务可用性(或业务连续性)不低于99.995%。
MOS能做什么?
MOS具有与平台无关的RESTful
API接口,您可以在任何应用、任何时间、任何地点存储和访问任意类型的数据。由于MOS具有高度可扩展性,且您只需为实际用量付费,因此您可以从较小用量起步,并根据业务需要进行扩展,而不影响性能和持久性。
您可以使用摩杜云提供的API、SDK接口或者MOS迁移工具轻松地将海量数据移入或移出摩杜云MOS。数据存储到摩杜云MOS以后,您可以选择标准存储(Standard)作为移动应用、大型网站、图片分享或热点音视频的主要存储方式,也可以选择成本更低、存储期限更长的低频访问存储(Infrequent
Access)、归档存储(Archive)、冷归档存储(Cold Archive)作为不经常访问数据的存储方式。
更多关于MOS的功能介绍,请参见MOS功能概览。
MOS适合谁用?
MOS适合社区、多媒体分享、电子商务等各类形式规模的网站站长,App应用和软件应用开发者,游戏开发企业以及有大规模数据存储需求的用户使用。
MOS适合存储什么?
MOS适合存储论坛网站与软件应用中的附件、高清图片、音视频、备份文件等,以及各种App应用、多终端同步软件、网盘下载站的文件。
使用MOS,开发人员能够解决哪些使用本地解决方案无法解决的问题?
MOS让任何开发人员都可以充分利用摩杜云的规模优势,而无需前期投资,也不会影响性能。开发人员可以解放出来专注于创新,而无需担心因业务增长带来的性能瓶颈以及安全性等问题。MOS不仅成本低,而且操作非常简单。
MOS可以存储多少数据,有上限吗?
MOS总存储容量不限制,单个Bucket容量也不限制。通过MOS控制台仅可以上传小于5 GB的文件。对于大于5
GB的文件,需要使用分片上传和断点续传功能,或者使用图形化工具MOSbrowser、命令行工具MOSutil直接上传。
MOS提供哪些存储类型?
MOS提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。其中标准存储类型提供高持久、高可用、高性能的对象存储服务,能够支持频繁的数据访问;低频访问存储类型适合长期保存不经常访问的数据(平均每月访问频率1到2次),存储单价低于标准类型;归档存储类型适合需要长期保存(建议半年以上)的归档数据;冷归档存储适合需要超长时间存放的极冷数据。更多信息,请参见存储类型介绍。
摩杜云会使用我在MOS上存储的数据吗?
就用户业务数据,摩杜云除执行您的服务要求或者法律法规要求外,不进行任何未获授权的使用及披露。详情请参见服务条款。
摩杜云是否会将自己的数据存储在MOS上?
是的。摩杜云内部的开发人员也在很多项目中使用MOS作为授权数据存储。这些项目依赖MOS执行关键业务操作。
MOS的持久性如何?
MOS为开发人员提供了一个安全、低成本、高持久性且高度可扩展的云存储基础设施。摩杜云自己也使用该基础设施来运行其全球网站网络。MOS标准存储和低频访问存储类型的可实现99.995%的可用性,归档存储类型的设计可实现99.99%的可用性。所有这些存储类型均受摩杜云对象存储MOS服务等级协议支持。
如果来自应用程序的流量突然激增,MOS如何保证业务的可用性?
MOS一开始就将处理来自任何互联网应用程序的高流量作为设计目标,提供按量计费的定价策略以及无限制的容量,确保您的服务不会因流量激增而中断。MOS能够均衡地分布负载,任何应用程序都不会受到流量峰值的影响。
MOS的数据是如何组织的?
MOS是一个分布式的对象存储服务,提供的是一个Key-Value形式的对象存储服务。当您存储文件(Object)时,需要指定此Object的名称(Key),后续您将通过这个Key来获取该Object的内容。
Key也可以用来模拟文件夹的一些属性。MOS中文件夹的概念仅是一个逻辑概念,在通过API或SDK的方式设置文件夹的时候可以指定Object对应的Key值包括前面的目录即可模拟文件夹功能。例如,定义Object的Key为dir/example.jpg,就会在当前Bucket下创建一个名为dir的文件夹,并在该文件夹下创建一个名为example.jpg的文件。如果用户删除了dir/example.jpg,将不会再存在dir这个文件夹。
如何开始使用MOS?
在使用摩杜云MOS服务之前,请确保您已经注册了摩杜云账号并完成实名认证。如果您还没有创建摩杜云账号,系统会在您开通MOS时提示您注册账号。具体操作请参见注册账号。之后请您打开MOS产品详情页,单击立即开通即可。开通MOS服务后,默认的计费方式是按量计费,如果想进一步降低MOS费用,建议您购买折扣套餐。
您可以通过控制台、图形化管理工具、命令行管理工具以及各种语言的SDK快速开始使用MOS,详情请参见开始使用MOS。
什么是摩杜云地域?
摩杜云地域是一个地理位置,摩杜云在其中提供多个在物理上独立且隔离的可用区,这些可用区通过延迟低、吞吐量高且冗余性高的网络连接在一起。
什么是可用区(AZ)?
可用区是指在同一地域内,电力和网络互相独立的物理区域。同一可用区内实例之间的网络延时更小。在同一地域内可用区与可用区之间内网互通,可用区之间能做到故障隔离。
如何确定将数据存储在哪个摩杜云地域中?
选择地域时,建议您综合考虑地理位置、云产品之间的关系、资源价格等因素。详情请参见如何选择MOS地域。
MOS的费用是多少?
使用MOS,您可以按实际使用量付费(先使用,后付费),没有最低费用限制。您也可以预先购买资源包,之后使用资源时,扣除相应的额度。一般情况下,资源包更加优惠。详细的价格信息请参见摩杜云产品定价。
如果其他账号访问我的MOS资源,应该如何付费?
当其他账号访问您的MOS资源,我们将按正常的MOS定价收费。您也可以选择将存储空间配置为请求者付费模式,在这种模式下,将由请求方支付MOS数据的相关请求和下载费用。详情请参见请求者付费模式。
数据存储在MOS上安全吗?
MOS本身是非常安全的。创建完成后时,只有资源所有者才能访问其MOS资源。MOS提供用户身份验证,以控制对数据的访问。您可以使用各种访问控制策略,例如存储空间级别和文件级别的访问控制列表(ACL),选择性地向用户和用户组授予权限。MOS控制台会显示您可公开访问的存储空间。您可以将不希望公开访问的存储空间及文件设置为私有读写。如果您将私有读写的存储空间或文件的ACL设置为公共读或公共读写时,MOS会向您发出警告。关于MOS安全性的详细介绍,请参见MOS安全与合规白皮书。
如何控制存储在MOS中数据的访问权限?
针对存放在Bucket的Object的访问,MOS提供了多种权限控制方式,包括ACL、RAM Policy和Bucket
Policy。详情请参见访问控制概述。
MOS提供哪些数据加密的方式?
MOS提供服务端加密和客户端加密。
服务器端加密是将数据保存到数据中心的磁盘之前进行加密,并且在下载文件时自动进行解密。MOS提供两种服务器端加密方式:
使用KMS(Key Management Service)托管密钥进行加解密(SSE-KMS)
使用KMS托管的默认CMK(Customer Master
Key)或指定CMK进行加解密操作。数据无需通过网络发送到KMS服务端进行加解密,是一种低成本的加解密方式。
注意
使用KMS密钥功能会产生少量的KMS密钥使用费用。费用详情,请参见KMS计费标准。
用于加密Object的密钥也会被加密,并写入Object的元信息中。
KMS托管密钥的服务器端加密方式仅加密Object数据,不加密Object的元数据。
使用MOS完全托管密钥进行加解密(SSE-MOS)
使用MOS完全托管的密钥加密每个Object。为了提升安全性,MOS还会使用定期轮转的主密钥对加密密钥本身进行加密。该方式适合于批量数据的加解密。
客户端加密是指将数据发送到MOS之前在用户本地进行加密,对于数据加密密钥的使用,目前支持如下两种方式:
使用KMS托管用户主密钥
当使用KMS托管用户主密钥用于客户端数据加密时,无需向MOS加密客户端提供任何加密密钥。只需要在上传对象时指定KMS用户主密钥ID(也就是CMK
ID)。
使用用户自主管理密钥
使用用户自主管理密钥,需要用户自主生成并保管加密密钥。当用户本地客户端加密时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。
什么是MOS生命周期管理?如何利用生命周期管理来帮助降低MOS存储成本?
生命周期规则可以定期将非热门数据转换为低频访问、归档存储或冷归档存储,将不再需要访问的数据删除,让您更高效地管理您存储的数据,节省大量人力及存储成本。例如:
某医疗机构的医疗档案,上传至MOS后半年内需要偶尔访问,半年后基本不再访问。可以通过设置生命周期规则,将已上传180天的医疗档案转为归档存储。
某公司服务热线的录音文件,上传至MOS后2个月内,需要作为数据统计及核查的依据,2个月后偶尔访问,半年后基本不再访问,2年后数据不再需要存储。可以通过设置生命周期规则,设置录音文件上传60天后转为低频访问存储,180天后转为归档存储,730天后删除。
某存储空间内有大量文件需要全部删除,但是手动删除每次仅可以删除最多1000个文件,比较麻烦。此时可以配置一条匹配整个Bucket的生命周期规则,设置一天后删除所有文件。此Bucket内的数据会在第二天被全部删除。
关于生命周期的详细介绍和配置,请参见生命周期规则介绍。
什么是MOS跨区域复制?
跨区域复制(Bucket CrMOS-Region
Replication)是跨不同MOS数据中心(地域)的Bucket自动、异步复制Object,它会将Object的创建、更新和删除等操作从源存储空间复制到不同地域的目标存储空间。该功能能够很好的提供Bucket跨区域容灾或满足用户数据复制的需求。目标Bucket中的文件是源Bucket中文件的精确副本,它们具有相同的文件名、元数据以及内容,例如创建时间、拥有者、用户定义的元数据、Object
ACL、文件内容等。
跨区域复制如何收费?
开启跨区域复制功能后,主从两个区域的Bucket在备份文件时会产生跨区域间的数据流量,MOS会收取跨区域复制流量费用。每同步1个Object,MOS会累计计算请求次数并进行按量计费。目前跨区域复制流量仅支持按量计费,不提供资源包。
MOS的所有计费服务都是单独计费的, 例如您存储文件会产生存储费用;通过外网访问MOS存储的文件, 会产生外网流出流量费用;使用图片处理服务处理MOS的图片会 产生图片处理费用等。本文介绍MOS服务费用的组成及计费方式。
说明
MOS各项服务的单价,请参见MOS产品定价。
详细的费用计算示例,请参见
计费案例。
计费常见问题,请参见
常见问题。
MOS以小时为周期统计MOS所有资源的使用量,并按照使用量结算产生的费用。
MOS支持按量计费和包年包月两种计费方式:
按量计费:按使用量×每小时单价的方式计算费用,并将费用计入账单内,您可以在账单出账后结算费用。更多信息,请参见
按量计费。
包年包月:您预先购买对应资源包,MOS会在每个计费周期内按资源使用量扣除资源包额度。更多信息,请参见资源包介绍。
MOS服务费用 由存储费用 、 流量费用 、 请求费用 、 数据处理费用 、 对象标签费用 、 传输加速费用 、 临时存储费用 、 DDoS防护费用 组成:
当您在MOS内存储文件时,MOS会根据您存储的文件类型、大小和时长收取一定的存储费用。
说明 本文仅说明相关计费项及计费方式。有关计费项的定价详情,请参见MOS产品定价。
MOS提供标准、低频访问、归档、冷归档四种存储类型,计费项和计费方式如下:
计费项 | 计费说明 | 计费方式 |
---|---|---|
标准存储(本地冗余)容量 | 按标准存储(本地冗余)类型文件的大小和存储时长计费。 |
按量计费:存储费用=存储量(GB)×月单价÷30(天)÷24(小时)
包年包月: 标准存储(LRS)存储包:按存储包实际容量抵扣。 存储容量单位包SCU:中国内地每0.12 GB SCU容量可抵扣1 GB存储费用。其他地域抵扣详情,请参见产品定价。 |
标准存储(同城冗余)容量 | 按标准存储(同城冗余)类型文件的大小和存储时长计费。 |
按量计费:存储费用=存储量(GB)×月单价÷30(天)÷24(小时)
包年包月: 标准存储(ZRS)存储包:按存储包实际容量抵扣。 存储容量单位包SCU:中国内地每0.15 GB SCU容量可抵扣1 GB存储费用。其他地域抵扣详情,请参见产品定价。 |
低频访问(本地冗余)容量 | 按低频访问(本地冗余)类型文件的大小和存储时长计费。 低频访问类型文件有最小计量单位限制。单个文件小于64 KB,按照64 KB计算;大于或等于64 KB,按照实际大小计算。 |
按量计费:存储费用=计费存储量(GB)×月单价÷30(天)÷24(小时)
包年包月: 低频访问(LRS)存储包:按存储包实际容量抵扣。 存储容量单位包SCU:中国内地每0.08 GB SCU容量可抵扣1 GB存储费用。其他地域抵扣详情,请参见产品定价。 |
低频访问(同城冗余)容量 | 按低频访问(同城冗余)类型文件的大小和存储时长计费。 低频访问类型文件有最小计量单位限制。单个文件小于64 KB,按照64 KB计算;大于或等于64 KB,按照实际大小计算。 |
按量计费:存储费用=计费存储量(GB)×月单价÷30(天)÷24(小时)
包年包月: 低频访问(ZRS)存储包:按存储包实际容量抵扣。 存储容量单位包SCU:中国内地每0.1 GB SCU容量可抵扣1 GB存储费用。其他地域抵扣详情,请参见产品定价。 |
归档(本地冗余)容量 | 按归档存储(本地冗余)类型文件的大小和存储时长计费。 归档存储类型文件有最小计量单位限制。单个文件小于64 KB,按照64 KB计算;大于或等于64 KB,按照实际大小计算。 |
按量计费:存储费用=计费存储量(GB)×月单价÷30(天)÷24(小时)
包年包月: 归档存储(LRS)存储包:按存储包实际容量抵扣。 存储容量单位包SCU:中国内地每0.03 GB SCU容量可抵扣1 GB存储费用。其他地域抵扣详情,请参见产品定价。 |
冷归档(本地冗余)容量 | 按冷归档存储(本地冗余)类型文件的大小和存储时长计费。 冷归档存储类型文件有最小计量单位限制。单个文件小于64 KB,按照64 KB计算;大于或等于64 KB,按照实际大小计算。 |
按量计费:存储费用=计费存储量(GB)×月单价÷30(天)÷24(小时) 包年包月:不支持 |
低频访问不足规定时长容量 | 针对低频访问类型的文件,如果存储时间不足30天(即720小时)被覆写或删除,会收取剩余时间(720-已存储时间)的存储费用。 |
按量计费:低频访问不足规定时长费用=被删除文件大小(GB)×低频访问文件存储月单价÷30(天)÷24(小时)×(720-已存储时间)
示例:100 GB低频访问(本地冗余)类型文件存储20天(480小时)后被删除,则该项费用=100(GB)×0.08(元)÷30(天)÷24(小时)×(720-480)≈2.667元。 包年包月:按存储包实际容量抵扣,仅用于抵扣低频访问(本地冗余)不足规定时长容量,不支持抵扣低频访问(同城冗余)不足规定时长容量。 |
归档存储不足规定时长容量 | 针对归档类型的文件,如果存储时间不足60天(即1440小时)被覆写或删除,会收取剩余时间(1440-已存储时间)的存储费用。 |
按量计费:归档存储不足规定时长费用=被删除文件大小(GB)×归档存储文件存储月单价÷30(天)÷24(小时)×(1440-已存储时间)
包年包月:按存储包实际容量抵扣。 |
冷归档存储不足规定时长容量 | 针对冷归档类型的文件,如果存储时间不足180天(即4320小时)被覆写或删除,会收取剩余时间(4320-已存储时间)的存储费用。 |
按量计费:冷归档存储不足规定时长费用=被删除文件大小(GB)×冷归档存储文件存储月单价÷30(天)÷24(小时)×(4320-已存储时间)
包年包月:不支持 |
流量是您访问MOS时产生的数据流的累计值,包括外网流出流量、 内网流出流量、外网流入流量、内网流入流量、CDN回源流出流量、 跨区域复制流量等。MOS会根据实际产生的流量计算流量费用。
说明 本文仅介绍费用的含义和计费方式,定价详情,请参见MOS产品定价。
计量项 | 含义 | 计费方式 |
---|---|---|
外网流出流量 | 数据通过互联网从MOS传输到客户端产生的流量。 |
按量计费:外网流出流量费用=外网流出流量(GB)×每GB单价
包年包月:下行流量包 |
外网流入流量 | 数据通过互联网从客户端传输到MOS所产生的流量。 | 免费 |
内网流出流量 | 数据通过内网从MOS传输到客户端所产生的流量。如何使用内网访问域名,请参见通过内网访问MOS服务。 | 免费 |
内网流入流量 | 数据通过内网从客户端传输到MOS所产生的流量。 | 免费 |
CDN回源流出流量 | 数据从MOS传输到CDN边缘节点所产生的回源流量。 |
按量计费:CDN回源流出流量费用=CDN回源流出流量(GB)×每GB单价
包年包月:回源流量包 |
跨区域复制流量 | 使用跨区域复制功能将源存储空间的数据同步复制到目标存储空间时所产生的流出流量。 |
按量计费:跨区域复制流量=跨区域复制流量(GB)×每GB单价
年包月:无 |
您对MOS的所有操作都是通过调用MOS API实现的,MOS会根据调用的MOS API次数收取请求费用。
请求费用的计费项包括Put类型请求次数和Get类型请求次数。
计量项 | 计费说明 | 计费方式 |
---|---|---|
Put类型请求次数 | 调用MOS API的Put类请求产生的请求次数费用。请求无论成功还是失败,都会统计请求次数。 |
按量计费:请求费用=请求次数×每万次请求的单价÷10000
有关请求单价的更多信息,请参见摩杜云产品定价。 包年包月:无 |
Get类型请求次数 | 调用MOS API的Get类请求产生的请求次数费用。请求无论成功还是失败,都会统计请求次数。 |
按量计费:请求费用=请求次数×每万次请求的单价÷10000
有关请求单价的更多信息,请参见摩杜云产品定价。 包年包月:无 |
说明
MOS管理控制台上的操作也是通过调用MOS API实现的,例如查看存储空间列表时会调用GetService
(ListBuckets)接口。进入文件管理页面时会调用GetBucket
(ListObjects)接口。因此,使用MOS管理控制台也会产生请求费用。
有关Put类和Get类API请求的功能详情,请参见API概览。
API请求 | 对应操作 |
---|---|
PutBucket | 创建存储空间(Bucket)。 |
GetService(ListBuckets) | 列举所有Bucket。 |
GetBucket(ListObject)、GetBucketV2(ListObjectsV2) | 列举所有Object。 |
PutBucketACL | 为Bucket设置读写权限ACL。 |
PutBucketInventory | 为Bucket配置清单规则。 |
DeleteBucketInventory | 删除Bucket中指定的清单任务。 |
PutBucketLogging | 开启日志转存。 |
DeleteBucketLogging | 关闭日志转存。 |
PutBucketWebsite | 为Bucket设置静态网站托管模式并设置跳转规则(RoutingRule)。 |
DeleteBucketWebsite | 关闭Bucket的静态网站托管模式以及跳转规则。 |
PutBucketReferer | 为Bucket设置Referer的访问白名单以及是否允许Referer字段为空。 |
PutBucketLifecycle | 设置生命周期规则。 |
DeleteBucketLifecycle | 删除生命周期规则。 |
DeleteBucket | 删除Bucket。 |
PutObject | 上传Object。 |
CopyObject | 在同一地域下相同或不同Bucket之间拷贝Object。 |
AppendObject | 以追加写的方式上传Object。 |
DeleteObject | 删除单个Object。 |
DeleteMultipleObjects | 删除多个Object。 |
PutObjectACL | 为Object设置读写权限ACL。 |
PostObject | 通过HTML表单上传的方式上传Object。 |
PutSymlink | 创建软链接。 |
RestoreObject | 解冻归档类型Object。 |
InitiateMultipartUpload | 初始化Multipart Upload事件。 |
UploadPart | 根据指定的Object名称和UploadId来分块(Part)上传数据。 |
AbortMultipartUpload | 取消MultipartUpload事件并删除对应的Part数据。 |
UploadPartCopy | 分片拷贝。 |
PutBucketReplication | 为Bucket配置跨区域复制规则。 |
DeleteBucketReplication | 停止某个Bucket的跨区域复制任务并删除Bucket的复制配置。 |
PutBucketCors | 添加CORS配置。 |
DeleteBucketCors | 删除CORS配置。 |
CompleteMultipartUpload | 完成分片上传。 |
InitiateBucketWorm | 为Bucket创建合规保留策略。 |
AbortBucketWorm | 删除未锁定的合规保留策略。 |
CompleteBucketWorm | 锁定合规保留策略。 |
ExtendBucketWorm | 延长已锁定的合规保留策略对应Bucket中Object的保留天数。 |
PutBucketVersioning | 为Bucket开启版本控制。 |
PutBucketPolicy | 设置Bucket Policy。 |
DeleteBucketPolicy | 删除Bucket Policy。 |
PutBucketTags | 为Bucket添加或修改标签。 |
DeleteBucketTags | 删除Bucket标签。 |
PutBucketEncryption | 为Bucket配置加密规则。 |
DeleteBucketEncryption | 删除Bucket加密规则。 |
PutBucketRequestPayment | 为Bucket设置请求者付费模式。 |
PutObjectTagging | 为Object添加或修改标签。 |
DeleteObjectTagging | 删除Object标签。 |
PutLiveChannel | 创建一个LiveChannel。 |
DeleteLiveChannel | 删除指定的LiveChannel。 |
PutLiveChannelStatus | 切换LiveChannel状态。 |
PostVodPlaylist | 为LiveChannel生成用于点播的播放列表。 |
API请求 | 对应操作 |
---|---|
查看Bucket的访问权限。 | |
GetBucketLocation | 查看Bucket所属的数据中心。 |
GetBucketInfo | 查看Bucket的相关信息。 |
GetBucketLogging | 查看Bucket的访问日志配置。 |
GetBucketWebsite | 查看Bucket的静态网站托管配置。 |
GetBucketReferer | 查看Bucket的Referer配置。 |
GetBucketLifecycle | 查看Bucket的Lifecycle配置。 |
GetBucketReplication | 查看Bucket已配置的跨区域复制规则。 |
GetBucketReplicationLocation | 查看数据可复制到的目标Bucket所在的地域。 |
GetBucketReplicationProgress | 查看跨区域复制进度。 |
GetBucketInventory | 查看Bucket指定的清单任务。 |
ListBucketInventory | 查看Bucket所有的清单任务。 |
GetObject | 下载Object。 |
CopyObject | 复制Object。 |
HeadObject | 查看Object包含的所有meta信息。 |
GetObjectMeta | 查看Object包含的部分meta信息。 |
GetObjectACL | 查看Object的读写权限ACL。 |
GetSymlink | 查看软链接。 |
ListMultipartUploads | 列举所有执行中的Multipart Upload事件。 |
ListParts | 列举上传成功的Part。 |
UploadPartCopy | 分片拷贝。 |
GetBucketcors | 查看Bucket的CORS配置。 |
GetBucketWorm | 查看Bucket的合规保留策略配置。 |
GetBucketVersioning | 查看Bucket的版本控制状态。 |
GetBucketVersions(ListObjectVersions) | 查看Bucket中所有Object的版本信息。 |
GetBucketPolicy | 查看Bucket Policy配置。 |
GetBucketReferer | 查看防盗链配置。 |
GetBucketTags | 查看Bucket的标签信息。 |
GetBucketEncryption | 查看Bucket的加密配置。 |
GetBucketRequestPayment | 获取请求者付费模式配置。 |
SelectObject | 扫描文件。 |
GetObjectTagging | 查看Object的标签信息。 |
ListLiveChannel | 查看所有LiveChannel的信息。 |
GetLiveChannelInfo | 查看指定LiveChannel的信息。 |
GetLiveChannelStat | 查看指定LiveChannel的推流状态信息。 |
GetLiveChannelHistory | 查看指定LiveChannel的推流记录。 |
GetVodPlaylist | 查看指定LiveChannel在指定时间段内推流生成的播放列表。 |
如果您使用图片处理、高级图片压缩、视频截帧、SelectObject、数据取回等功能时,MOS会收取数据处理费用。
说明 本文仅说明相关计费项及计费方式。有关计费项的定价详情,请参见MOS产品定价。
计量项 | 计费说明 | 计费方式 |
---|---|---|
图片处理 |
按处理的原图实际大小计费。
例如将图片A进行缩放,图片处理计量数据是图片A的实际大小。 |
按量计费:
当月图片处理量<10 TB:免费 当月图片处理量>10 TB:(图片处理量-10 TB)×图片处理单价 包年包月:无 |
高级图片处理 | 按使用高级压缩处理图片的次数计费 |
按量计费:高级图片处理单价×处理次数÷1000
包年包月:无 |
视频截帧 | 按视频截帧截取的图片数量计费。 |
按量计费:视频截帧费用=截帧数×截帧单价÷1000
包年包月:无 |
Select扫描数据量 | 按SelectObject扫描的原文件实际大小计费。 |
按量计费:Select扫描费用=扫描文件大小(GB)×Select扫描单价
包年包月:无 |
低频访问数据取回 |
访问低频访问类型文件产生的费用。按数据取回量计费。
说明 通过SelectObject、HTTP Range等方式读取文件中的部分内容时, 按照取回的字节范围来计算;其他方式访问低频访问文件时,按照文件的实际大小计算。 |
按量计费:低频访问数据取回费用=数据取回量(GB)×低频访问文件数据取回单价
包年包月:无 |
归档存储数据取回 |
解冻归档存储类型文件产生的费用。按解冻文件大小计费。
文件从解冻完成到再次归档前被访问,不再产生解冻费用。 |
按量计费:归档存储数据取回费用=解冻文件大小(GB)×归档存储文件数据取回单价
包年包月:无 |
冷归档存储数据取回 |
解冻冷归档存储类型文件产生的费用。按取回模式和文件大小计费。
文件从解冻完成到再次归档前被访问,不再产生解冻费用。 |
按量计费:数据取回费用=解冻文件大小(GB)×对应取回模式的数据取回单价
包年包月:无 |
如果您为您存储空间内的文件添加了对象标签,MOS会收取对象标签费用。
说明 本文仅介绍费用的含义和计费方式,具体的价格信息请参见MOS产品定价。
对象标签功能介绍请参见对象标签。
计量项 | 含义 | 计费方式 |
---|---|---|
对象标签 | MOS按照您存储空间内对象标签的数量计算对象标签费用。 |
按量计费:对象标签费用=每小时内MOS存在的对象标签数量×对象标签月单价÷30(天)÷24(小时)÷10000
包年包月:无 |
如果您开启了传输加速功能,且使用传输加速域名访问您的存储空间,MOS会收取传输加速费用。
说明 本文仅介绍费用的含义和计费方式,具体的价格信息请参见MOS产品定价。
传输加速费用是单独的计费项,会和外网流出流量同时计算。 例如通过传输加速域名从开启传输加速功能的存储空间中下载了1 GB的数据, 则会产生1 GB传输加速费用和1 GB外网流出流量费用。传输加速功能介绍请参见 传输加速。
计费项 | 计量方式 | 计费方式 |
---|---|---|
传输加速AccM2MIn | 通过传输加速域名,从中国内地访问中国内地的MOS时,产生的加速上传流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccM2MOut | 通过传输加速域名,从中国内地访问中国内地的MOS时,产生的加速下载流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccM2OIn | 通过传输加速域名,从中国内地访问非中国内地的MOS时,产生的加速上传流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccM2OOut | 通过传输加速域名,从中国内地访问非中国内地的MOS时,产生的加速下载流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccO2MIn | 通过传输加速域名,从非中国内地访问中国内地的MOS时,产生的加速上传流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccO2MOut | 通过传输加速域名,从非中国内地访问中国内地的MOS时,产生的加速下载流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
传输加速AccO2OIn | 通过传输加速域名,从非中国内地访问非中国内地的MOS时,产生的加速上传流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
输加速AccO2OOut | 通过传输加速域名,从非中国内地访问非中国内地的MOS时,产生的加速下载流量。 |
按量计费:传输加速费用=每小时累计产生的传输加速流量(GB)×每GB单价
包年包月:传输加速包,购买时请注意使用地域。 |
冷归档存储类型文件在数据解冻时会生成一 份标准存储类型的文件副本用于访问,这部分文件在解冻时间结束前会收取临时存储费用。
说明
MOS会分别计算临时存储费用和冷归档存储费用。例如1 GB的冷归档文件被解冻1天,则计费系统会计算1 GB冷归档文件的存储费用和1
GB副本文件的临时存储费用。
冷归档功能目前正在公测中,暂不收取此费用,公测结束后开始正常计费。
计量项 | 含义 | 计费方式 |
---|---|---|
取回临时存储(本地冗余) | 冷归档存储类型文件在数据解冻时会生成一 份标准存储类型的文件副本用于访问。这部分文件在解冻时间结束前会计算存储费用。 |
按量计费:取回临时存储费用=解冻文件大小(GB)×月单价÷30(天)÷24(小时)
包年包月:无 |
如果您使用了MOS高防,MOS会根据您的高防实例数量、高防防护流量和高防请求次数等收取DDoS防护费用。
计量项 | 计费说明 | 计费方式 |
---|---|---|
高防资源预留费用 | 按高防实例数量和使用时长收取。 |
按量计费:高防资源预留费用=高防实例数量×使用时长×每小时单价
包年包月:不支持 |
高防资源提前释放费用 | 高防MOS实例使用不足7天,MOS会收取剩余时间(7天×24小时-高防实例使用时长)的高防资源预留费用。 |
按量付费:高防资源提前释放费用=高防资源预留费用每小时单价×(7天×24小时-高防实例使用时长)
包年包月:不支持 |
高防流量防护费用 | 计算高防实例绑定的所有Bucket产生的外网流出和流入流量,取外网流出或流入流量的最大值计算高防流量防护费用。 |
按量计费:高防流量防护费用=外网流出或流入流量最大值×每GB单价
包年包月:不支持 |
高防请求防护费用 | 计算高防实例绑定的所有Bucket产生的MOS API请求次数,按请求次数计算高防请求防护费用。 请求无论成功还是失败,都会统计请求次数。 |
按量计费:高防请求防护费用=请求次数×每万次请求的单价÷10000
包年包月:不支持 |
在MOS数据初次接入扫描时,敏感数据保护对授权的数据源执行全量扫描并收取全量扫描费用。初次扫描任务完成后,敏感数据保护仅对该数据源中新增或修改的文件收取扫描费用。
有关敏感数据保护的更多信息,请参见敏感数据保护。
本文仅说明相关计费项及计费方式。有关计费项的定价详情,请参见MOS产品定价。
计量项 | 含义 | 计费方式 |
---|---|---|
敏感数据扫描费用 | 对授权的数据源进行全量扫描或增量扫描产生的费用。 |
按量计费:扫描费用=扫描数据量(GB)×每GB单价
包年包月:不支持 |
针对部分计费项和部分地域,对象存储MOS提供一定量的免费额度。您在免费额度范围内的操作,均不会产生对应费用。
MOS提供的免费额度如下:
计量项 | 免费方式 | 支持地域 | 免费额度 | 领取条件 |
---|---|---|---|---|
标准存储(本地冗余)存储量 | 新用户免费试用 | 全部 | 提供一定量的标准存储(本地冗余)容量,详情请参见摩杜云免费套餐。 |
初次注册认证未满6个月。
未购买摩杜云任何产品。 |
标准存储(本地冗余)存储量 | 部分地域存储免费额度 | 中国香港和海外地域 | 5 GB | 无 |
图片处理 | 图片处理免费额度 | 全部 | 每月10 TB | 无 |
您在注册摩杜云账号并进行实名认证后(注册未满6个月的个人用户或企业用户),若未购买任何产品,可免费试用MOS。试用期内,您可以免费存储一定额度的标准存储(本地冗余)类型文件。领取条件及方式请参见摩杜云免费套餐。
免费试用期结束后,将正常计算标准存储(本地冗余)类型文件的存储费用,计费方法请参见概述。
目前,MOS的免费试用仅抵扣存储空间内的标准存储(本地冗余)类型文件的存储费用,对于其他存储类型的存储费用、因访问产生的API请求和流量费用、使用图片处理服务产生的图片处理费用等均无法抵扣。
中国香港和海外地区的存储空间享有5 GB的标准存储(本地冗余)免费额度,即标准存储(本地冗余)类型文件的存储量在5 GB以内,不收取存储费用;超过5 GB时,仅计算超出部分的费用。详情请参见产品定价。
图片处理服务每个账号每月有10 TB的免费额度,即每月处理的原图累计不超过10 TB时,不收取图片处理费用;超过10 TB时,仅计算超出部分的费用。详情请参见产品定价。
当您开通MOS服务后,默认的付费方式为按量计费。针对部分计费项目,您也可以购买资源包(包年包月)进一步降低费用。本文主要介绍按量计费的计费详情。
如需了解MOS费用的组成和计费标准请参见
计量项和计费项。
MOS系统每小时统计前一小时的实际用量并进行结算, 从账户余额中扣除实际消费金额。例如,当前时间是9:30,结算的是8:00~9:00产生的费用。
说明 因账单系统目前存在延迟,您在9:30查看到的可能是7:00~8:00的费用账单。
MOS的使用费用每小时结算一次,计算公式为:费用=实际资源使用量×对应资源每小时单价。
说明 MOS产品定价中明确了存储费用的单价为元/GB/月,但按量计费的计 算方法为实际资源使用量 * 每小时单价。因此当您需要计算实际存 储费用时,需要先将存储费用的单价转换为元/GB/小时。 例如标准型(本地冗余存储)单价为0.12元/GB/月,则按小 时结算的单价约为0.000167元/GB/小时(0.12÷30÷24)。
按量计费的扣费顺序请参见摩杜云按量计费账单扣款顺序。
小王在华北1(青岛)创建了MOS Bucket,上传了100
GB的文件,并且开通了CDN加速服务。如果有用户通过CDN域名访问了小王的数据,那么小王需支付如下费用:
存储费用
CDN流出流量(由CDN服务收取)
CDN回源流出流量费用
请求费用
如果小王还给每个文件设置了标签,则还会产生对象标签使用费用。以此类推,您使用了哪些功能,则会产生对应功能的使用费用。详情请参见计量项和计费项。
当您开通MOS服务后,默认的付费方式为按量计费。针对部分计费项目, 您也可以购买资源包(包年包月)进行抵扣。资源包是MOS针对不同计费项推出的 固定套餐,当您购买指定资源包后,MOS会按您的实际使用情况扣除资源包的额度。 与按量计费相比,资源包享有更高的折扣优惠。
下表列出了MOS目前支持的资源包及资源包相应的抵扣规则,其中“√”表示此类资源包支持对应操作,“×”表示不支持。
资源包名称 | 抵扣费用 |
---|---|
标准(LRS)存储包 |
标准存储(本地冗余)容量费用:存储空间内存放的标准存储(本地冗余)类型文件所产生的存储费用。
快照容量费用:MCS实例创建MCS快照产生的快照存储费用。 |
低频(LRS)存储包 | 低频访问(本地冗余)容量费用:存储空间内存放的低频访问(本地冗余)类型文件所产生的存储费用。 |
归档(LRS)存储包 | 归档存储(本地冗余)容量费用:归档存储(本地冗余)类型文件所产生的存储费用。 |
标准(ZRS)存储包 |
标准存储(同城冗余)容量费用:存储空间内存放的标准存储(同城冗余)类型文件所产生的存储费用。
说明 您在创建存储空间时,若冗余类型选择同城冗余, 则存储空间内标准存储和低频访问文件均为同城冗余类型。 |
低频(ZRS)存储包 | 低频访问(同城冗余)容量费用: 存储空间内存放的低频访问(同城冗余)类型文件所产生的存储费用。 |
下行流量包 | 外网流出流量费用:通过互联网浏览或下载MOS数据所产生的外网流出流量费用。 |
回源流量包 | CDN回源流出流量费用:通过CDN服务层浏览或下载MOS数据所产生的回源流量费用。 |
传输加速包 |
使用传输加速域名访问MOS产生的传输加速费用。
传输加速AccM2MIn 传输加速AccM2MOut 传输加速AccM2OIn 传输加速AccM2OOut 传输加速AccO2MIn 传输加速AccO2MOut 传输加速AccO2OIn 传输加速AccO2OOut |
说明
对于未提供资源包的计费项,例如数据处理、跨区域复制流量、请求次数、对象标签等费用需按量计费。
关于计量项和计费项的详细信息,请参见计量项和计费项。
关于资源包的规格和价格,请参见购买资源包。
除传输加速包外,MOS资源包按照适用范围分为地域资源包和中国大陆通用资源包两大类,详情请参见购买资源包。
地域资源包
可用于抵扣指定地域内对应资源的使用费用,不同地域之间不共享。
例如您购买了华北1(青岛)的资源包,则仅能抵扣华北1青岛对应资源的使用费用,无法抵扣其他地域的资源使用费用。
中国大陆通用资源包
可用于抵扣中国内地各个地域对应资源的使用费用,例如华东1(杭州)、华东2(上海)、华南1(深圳)等。无法抵扣中国内地以外地域的资源使用费用,例如中国香港、新加坡、美西、美东等。
说明 中国大陆通用资源包与中国内地各地域资源包可以同时购买, 抵扣费用时先抵扣地域资源包,超出额度后再抵扣中国大陆通用资源包,若仍有超出,则超出部分按量付费。
传输加速包根据访问地域不同,分为以下三种:
传输加速M2M:抵扣通过传输加速域名,从中国内地访问中国内地的MOS时,产生的上传、下载的传输加速费用(AccM2MIn、AccM2MOut)。
传输加速M2O_O2M:可抵扣通过传输加速域名,从非中国内地访问中国内地的MOS,或者从中国内地访问非中国内地的MOS时,产生的上传、下载的传输加速费用(AccM2OIn、AccM2OOut、AccO2MIn、AccO2MOut)。
传输加速O2O:可抵扣通过传输加速域名,从非中国内地访问非中国内地的MOS时,产生的上传、下载的传输加速费用(AccO2OIn、AccO2OOut)。
1.进入资源包购买页。
2.根据您的实际情况选择资源包类型、地域、规格、时长等参数,之后单击立即购买。
3.按照购买流程完成付款即可。
目前各类资源包可供购买的地域如下:
资源包名称 | 购买地域 |
---|---|
标准(LRS)存储包 | 中国大陆通用、中国香港、华东1(杭州)、华东2(上海)、 华南1(深圳)、华北1(青岛)、华北2(北京)、华北3( 张家口)、华北5(呼和浩特)、新加坡、美西、美东 |
低频(LRS)存储包 | 中国大陆通用、华东1(杭州)、华东2(上海)、 华南1(深圳)、华北1(青岛)、华北2(北京)、 华北3(张家口)、华北5(呼和浩特)、西南1(成都) |
归档(LRS)存储包 | 中国大陆通用、华东1(杭州)、华东2(上海)、 华南1(深圳)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特) |
标准(ZRS)存储包 | 中国大陆通用 |
低频(ZRS)存储包 | 中国大陆通用 |
下行流量包 | 中国大陆通用、中国香港、华东1(杭州)、华东2(上海)、 华南1(深圳)、华北1(青岛)、华北2(北京)、 华北3(张家口)、华北5(呼和浩特)、新加坡、美西、美东 |
回源流量包 | 中国大陆通用、华东1(杭州)、 华东2(上海)、华南1(深圳)、 华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特) |
传输加速包 | 传输加速M2M(中国内地与中国内地之间)、 传输加速M2O_O2M(中国内地与非中国内地之间)、传输加速O2O(非中国内地与非中国内地之间) |
如果您需要更高规格的MOS资源包,可以对当前资源包进行升级。详情请参见 资源包升级。
您可以对即将到期的资源包进行续费,以延长资源包使用时间。详情请参见 续费资源包
陈先生2020年6月购买了500 GB的中国大陆通用标准(LRS)存储包和100 GB的中国大陆通用下行流量包,其6月份的资源使用量为:
华东1(杭州)地域当月标准存储(本地冗余)类型文件存储量为300 GB、外网流出流量110 GB、API请求次数10万次。
华东2(上海)地域当月标准存储(本地冗余)类型文件存储量为100 GB、标准存储(同城冗余)类型文件存储量为200 GB。
该用户的资源包使用情况如下:
地域 | 资源包抵扣 | 按量付费 |
---|---|---|
华东1(杭州) | 使用500 GB的标准(LRS)存储包抵扣300 GB标准存储(本地冗余)容量费用。 | 10万次API请求费用。 |
华东1(杭州) | 使用100 GB下行流量包抵扣其中100 GB外网流出流量费用。 | 剩余10 GB外网流出流量费用。 |
华东2(上海) | 使用500 GB的标准(LRS)存储包抵扣100 GB标准存储(本地冗余)容量费用。 | 200 GB标准存储(同城冗余)容量费用。 |
资源包何时生效?
资源包支付后立即生效,但资源包购买前产生的欠费无法使用资源包进行抵扣。
资源包到期后怎么办?
资源包到期后,如果未及时续费,系统会自动以按量计费的方式进行结算。
资源包可以退款吗?
资源包如果没有使用,支持退款。详情请参见资源包退订。
资源包超出额度怎么办?
您实际使用量超过资源包额度时,超出部分按量计费。若超出额度较多,建议您针对资源包的特性进行升级或购买多个资源包叠加使用。详情请参见资源包即将到期或额度不够用怎么办?。
资源包可以叠加购买吗?
存储包不支持叠加购买。
同地域、同类型的存储包在同一时段内只能购买一次。如果您需要更高规格,或者更长周期的存储包,您可以选择对已经购买的存储包进行升级或续费。
下行流量包支持叠加购买和续费,但不支持升级。
传输加速包和回源流量包支持叠加购买,但不支持升级和续费。
如果您需要更高规格的MOS资源包,可以对当前资源包进行升级。
对于存储包,您可以对其升级(升配),但无法降低其配置(降配)。
对于下行流量包、回源流量包、传输加速包,您可以通过叠加购买的方式达到升级效果。
1. MOS控制台。
2.单击资源包管理页签。
3.在资源包列表中选择需要升级的资源包,单击升级。
说明 如需通过RAM用户(子账号)进行升级,需授予RAM 用户在费用中心(BSS)查看订单、支付订单 及取消订单的权限(moduyunBSSOrderAccess)。
4.选择要升级的资源包规格,单击去支付,根据后续提示完成支付。
如果您未开通MOS但使用了MCS快照存储服务,想要升级MOS资源包,那么您需要先开通MOS服务(具体操作请参见开通MOS服务),然后按照已开通MOS的用户升级MOS资源包的步骤来升级MOS资源包。
升级完成后,您可以查看快照存储已用容量。详情请参见
查看快照容量。
您可以随时对已购资源包进行续费。续费时,您可以指定生效时间、购买时长、资源包规格。
目前仅各类型存储包和下行流量包支持续费。
1.登录 MOS控制台。
2.单击资源包管理页签。
3.在资源包列表中单击指定资源包右侧的续费。
说明 如需通过RAM用户(子账号)进行升级,需授予RAM 用户在费用中心(BSS)查看订单、支付订单及取消订单的权限(moduyunBSSOrderAccess)。
4.选择要续费的资源包的续费时长,系统显示您所选资源包配置的价格。选中《对象存储MOS资源包(包月)服务协议》后单击去支付。
5.根据系统提示完成支付流程。
存储容量单位包SCU(Storage Capacity Unit)是一种预付费存储容量资源包, 可用于抵扣多种云存储产品存储容量费用。相比其他单一产品的存储包,SCU使用更灵活,性价比更高。
SCU的购买方式,请参见 创建存储容量单位包。
说明 SCU支持叠加购买,即同一地域同一生效时间内,您可以购买多个SCU抵扣您的存储费用。
SCU可以抵扣MOS、MCS、NAS和HBR的部分存储费用,下表列出中国内地SCU抵扣MOS各存储类型费用时的抵扣规则。
说明 其他地域和其他云产品的抵扣规则,请参见产品定价。
存储类型 | 抵扣系数 | 说明 |
---|---|---|
0.12 | 每0.12 GB SCU容量可抵扣1 GB标准存储(本地冗余)容量。 | |
标准存储(同城冗余) | 0.15 | 每0.15 GB SCU容量可抵扣1 GB标准存储(同城冗余)容量。 |
低频访问(本地冗余) | 0.08 | 每0.08 GB SCU容量可抵扣1 GB低频访问(本地冗余)容量。 |
低频访问(同城冗余) | 0.1 | 每0.1 GB SCU容量可抵扣1 GB低频访问(同城冗余)容量。 |
归档存储(本地冗余) | 0.03 | 每0.03 GB SCU容量可抵扣1 GB归档存储(本地冗余)容量。 |
MOS存储费用的抵扣顺序为:地域存储包 > 中国大陆通用存储包>SCU>按量计费
陈先生2020年6月在华东1(杭州)购买了500 GB的标准(LRS)存储包和20 GB SCU,其6月份在华东1(杭州)地域标准存储 (本地冗余)类型文件存储量为600 GB、归档存储(本地冗余)类型文件存储量为200 GB,则陈先生当月的存储费用抵扣情况如下:
存储类型 | 存储包抵扣 | SCU抵扣 |
---|---|---|
标准存储(本地冗余) | 使用500 GB的标准(LRS)存储包抵扣500 GB存储费用。 | 使用12 GB SCU抵扣剩余100 GB存储费用。 |
归档存储(本地冗余) | 无 | 使用6 GB SCU抵扣200 GB存储费用。 |
MOS所有计费项均单独计费。当您的使用场景涉及多个功能时,会产生多个计费项。本文介绍几种特殊场景下的计费详情。
通过内网访问同地域MOS内的文件时产生的流量费用是免费的,其他费用如请求费用、存储费用等,需正常计费。
示例:客户A某月在华东1(杭州)的存储空间(Bucket)内存储了1
TB的标准存储(本地冗余)类型文件,并在当月通过华东1(杭州)地域的摩杜云MCS实例使用Bucket的内网地址访问该Bucket中的资源,共产生100
GB的内网流出流量、10万次的API请求次数。则客户A当月产生的费用如下:
计费项 | 费用 |
---|---|
标准存储(本地冗余)容量费用 | 1(TB)×1024×0.12(元/GB/月)=122.88元 |
请求费用 | 100000×0.01(元/万次)÷10000=0.1元 |
内网流出流量费用 | 免费 |
MOS的生命周期规则支持以下操作:
标准存储(本地冗余,LRS)类型可转换为低频访问(本地冗余)、归档存储(本地冗余)和冷归档存储(本地冗余)类型。
标准存储(同城冗余,ZRS)类型转换为低频访问(同城冗余)类型。
低频访问(本地冗余)类型可转换为归档存储(本地冗余)和冷归档存储(本地冗余)类型。
归档存储(本地冗余)类型转换为冷归档存储(本地冗余)类型。
删除文件。
触发Bucket配置的生命周期规则后,将产生如下相关费用:
操作类型 | 相关费用 | 可用资源包 |
---|---|---|
标准存储(本地冗余)转为低频访问(本地冗余) | 请求费用:按转换的文件数计费。计费详情,请参见 请求费用。 | 无 |
标准存储(本地冗余)转为低频访问(本地冗余) | 低频访问(本地冗余)容量费用:按转换后的低频存 储(本地冗余)类型计算文件存储费用。计费详情,请参见 存储费用 | 低频(LRS)存储包 |
标准存储(本地冗余)转为低频访问(本地冗余) | 低频访问数据取回费用:访问低频类型文件时,按实际访问量计费。计费详情,请参见 数据处理费用 | 无 |
标准存储(同城冗余)转为低频访问(同城冗余) | 请求费用 | 无 |
标准存储(同城冗余)转为低频访问(同城冗余) | 低频访问(同城冗余)容量费用:按转换后的 低频访问(同城冗余)类型计算文件存储费用。计费详情,请参见 存储费用。 | 低频(ZRS)存储包 |
标准存储(同城冗余)转为低频访问(同城冗余) | 低频访问数据取回费用 | 无 |
其他存储类型转为归档存储(本地冗余) | 请求费用 | 无 |
其他存储类型转为归档存储(本地冗余) | 归档存储(本地冗余)容量费用:按转换后的归档存储 (本地冗余)类型计算文件存储费用。计费详情,请参见 存储费用。 | 归档(LRS)存储包 |
其他存储类型转为归档存储(本地冗余) | 归档存储数据取回费用:解冻归档存储类型文件时,按解冻文件大小计费。计费详情,请参见 数据处理费用。 | 无 |
其他存储类型转为冷归档存储(本地冗余) | 请求费用 | 无 |
其他存储类型转为冷归档存储(本地冗余) | 冷归档存储(本地冗余)容量费用:按转换后的冷归档存储 (本地冗余)类型计算文件存储费用。计费详情,请参见 存储费用。 | 无 |
其他存储类型转为冷归档存储(本地冗余) | 冷归档存储数据取回费用:解冻冷归档存储类型文件时,按解冻文件大小计费。计费详情,请参见 数据处理费用。 | 无 |
其他存储类型转为冷归档存储(本地冗余) | 取回临时存储(本地冗余)费用:冷归档存储类型文件在数据解冻时会生成一份标准存储 (本地冗余)类型的文件副本用于访问。这部分文件在解冻时间结束前会计算存储费用。计费详情,请参见 临时存储费用。 | 无 |
删除文件 | 请求费用 | 无 |
删除文件 | 低频访问、归档、冷归档类型文件不足规定时长容量费用:若删除的文件为低频访问、 归档存储或冷归档存储类型,且存储时间未满规定时长, 则会收取剩余时间的存储费用。计费详情,请参见 存储费用。 | 无 |
通过跨区域复制功能同步文件时会产生如下费用:
计费项 | 说明 | 可用资源包 |
---|---|---|
跨区域复制流量费用 | 使用跨区域复制功能将源Bucket的数据同步到目标Bucket时产生的流出流量。计费详情,请参见 流量费用。 | 无 |
请求费用 | 每同步1个文件,MOS会累计请求次数并进行按量计费。计费详情,请参见 请求费用。 | 无 |
如果MOS结合摩杜云CDN加速服务使用时,您请求数据的流程如下图所示。
产生的费用如下:
计费项 | 说明 | 可用资源包 |
---|---|---|
CDN流出流量 | 数据从CDN边缘节点传输到客户端所产生的CDN流出流量,由CDN收取。计费详情,请参见 基础服务计费 | 预付费下行流量资源包 |
CDN回源流出流量 | 数据从MOS传输到CDN边缘节点产生的回源流量,由MOS收取。计费详情,请参见 流量费用 | 回源流量包 |
请求费用 | CDN边缘节点访问MOS时调用MOS API产生的请求费用,按请求次数收费。计费详情,请参见 请求费用 | 无 |
本文以案例形式介绍对象存储MOS费用的计算方法及计费方案的选择。
以下案例单价来自2018年1月3日摩杜云官网公布的详细价格信息。单价的变动请以摩杜云官网发布的数据为准。
李先生在MOS内存储了505 GB标准存储(本地冗余)类型文件,存储空间所在地域为华东1(杭州), 每小时的请求数均值为1000次,每天的外网流出流量约为2 GB 。李先生可以选择以下两种方案进行付费:
仅按量计费
存储费用=505 GB*0.12元/GB/月=60.6元
请求费用=1000*0.01元/10000次*24小时*30天=0.72元
流量费用=2 GB*30天*0.5元/GB=30元
说明 MOS计算流量费用时,分为忙时流量(8:00~24:00,0.50元/GB) 和闲时流量(00:00~08:00,0.25元/GB),此处按忙时流量计算。
总费用:约91.32元
包年包月+按量计费
存储费用=54元(500 GB标准(LRS)存储包)+5 GB*0.12元/GB/月=54.6元
说明 超出存储包的5 GB数据按量计费。
请求费用=1000*0.01元/10000次*24小时*30天=0.72元
流量费用=9.96元(50 GB流量包)+10 GB*0.5元/GB=14.96元
说明
流量以忙时流量计算。
50 GB流量包只有半年包,平均每月需59.76元/6个月=9.96元。
总费用:约70.28元
张先生在MOS内存储了100 GB的低频存储(本地冗余)类型文件。其中,有10000个大小为30 KB的文件。20号的时候,张先生下载了一个 大小为1 GB的文件到本地,并将文件内容更新之后重新上传至MOS,更新后的文件大小仍为1 GB。则张先生当月约需支付8.59元:
存储费用=100.32 GB*0.08元/GB/月=8.03元
说明 低频存储(本地冗余)类型的文件最小存储单元为64 KB,10000个30 KB的文件实际大小约为0.29 GB,MOS实际计量为0.61 GB。所以,存储量计算为100.32 GB。
外网流出流量费用=1 GB*0.5元/GB=0.5元
提前删除费用=1 GB*0.08/GB/月/30天*10天=0.027元
说明 上传新的同名文件到MOS会导致MOS内原有文件被删除,并保存新的文件,会产生提前删除费用。
数据取回费用=1 GB*0.0325元/GB=0.0325元
请求次数较少,请求费用可忽略
总费用:约8.59元
王先生4月1日在杭州的存储空间A内存储了100 GB标准存储(本地冗余)类型的文件,并且每天新增3 GB的文件。为保障数据存储安全,王先生设置了跨区域复制, 将数据同步至上海的存储空间B内。存储空间A和B平均每天的请求数共计约20000次。赵先生可根据情况选择以下付费方式:
按量计费
存储费用=(100 GB*0.12元/月+3*0.004 元/天*29
天+3*0.004*28+3*0.004*27+......+3*0.004*1)*2=34.44 元
说明
GB文件每天的存储费用为0.12元/月/30 天=0.004元/天。
因上海地域需要同步杭州地域的数据,所以总费用需乘2。
跨区域复制流量费用=100 GB*0.5 元/GB+3 GB*0.5元/GB*29 天=93.5 元
请求费用=20000次*0.01元/10000 次*30=0.6元
总费用:约128.54元
包年包月+按量计费
存储费用=(11(标准(LRS)存储包)+3*0.004元/天*29
天+3*0.004*28+3*0.004*27+......+3*0.004*1)*2=32.44 元
说明 杭州和上海都买一个100 GB的标准(LRS)存储包。
跨区域复制流量费用=100 GB*0.5 元/GB+3 GB*0.5 元/GB*29 天=93.5元
请求费用=20000次*0.01元/10000次*30=0.6 元
总费用:约126.54元
若王先生的数据仅增加,不修改,可以将上海地域的备份数据做归档存储
存储费用=(11(标准(LRS)存储包)+3*0.004 元/天*29
天+3*0.004*28+3*0.004*27+......+3*0.004*1)+(3(归档(LRS)存储包)+3
GB*0.011元/GB/天*29天+3*0.011*28+3*0.011*27+......+3*0.011*1)=20.66 元
跨区域复制流量费用=100 GB*0.5 元/GB+3 GB*0.5 元/GB*29 天=93.5 元
请求费用=20000次*0.01元/10000次*30=0.6元
总费用:约114.76元
由上面的案例可以看出:
当您使用的资源达到一定数值的时候,购买资源包(包年包月)费用更低。
存储类型不同,产生的存储费用也不一样,请根据自身的实际情况选择合适的存储类型。
若您有大量小于64 KB,需长期存储,且基本不再访问的文件,可将这部分文件打包压缩之后在进行归档存储,可节省大量空间。
您可以在费用中心查看MOS详细的计量计费信息,包括请求次数、流量、图片处理和存储费用等。
建议您通过费用中心获取较准确的计量计费数据。您也可以在MOS控制台查看资源使用量数据(包括存储量、请求次数、上传下载流量等), 但由于查看到的资源使用量数据有延迟,不作为实际计量数据,仅作参考。详情请参见 查看资源使用量。
您可以在费用中心查询MOS的账单明细。
1.登录摩杜云管理控制台。
2.单击顶部导航栏中的费用。
3.在左侧菜单栏中,单击费用账单,然后单击账单明细页签。
4.设置查询账期,并在列表中筛选产品为对象存储。通过统计项和统计周期可选择您账单的展示内容。
参数 | 说明 |
---|---|
统计项 |
账单按指定分类展示。
计费项:将账单按计费项分类,相同的计费项产生的费用会被合并。 实例:将账单按实例分类,相同实例产生的费用会被合并。 产品:将账单按产品分类,相同产品产生的费用会被合并。 账号:将账单按账号分类,相同账号产生的费用会被合并。 财务单元:将账单按财务单元分类,相同财务单元产生的费用会被合并。 |
统计周期 |
账单按指定周期展示。
账期:按照选择的账期展示当月账单。 按天:以天为单位,展示当月每天的账单。 明细:以小时为单位,展示当月每小时的明细账单。 |
例如,您希望查看2020年5月MOS每小时的费用明细,可使用如下配置:
说明
MOS是按小时计费的,所以选择按账期或按天展示的账单时,用量数据显示的是当月或当天的累计用量。例如按天统计时,您的实际存储量为1 TB,则账单显示的存储量为24
TB,账单显示结果并不影响计费结果,依然按照1 TB数据存储了24小时计费。
您可以单击账单右上角的定制列,选择您希望展示的账单内容。
如果想更方便的分析您的账单,可以单击导出账单CSV,将您当前账单导出到本地查看。
您可以在费用中心查询指定周期内,指定资源包的消费明细。
1.登录摩杜云管理控制台。
2.单击顶部导航栏中的费用。
3.在左侧菜单栏单击资源包管理 > 资源包 > 使用明细。
4.在使用明细页签,配置您的查询参数,配置完成后单击搜索。
参数配置如下:
参数 | 说明 |
---|---|
抵扣时间 | 选择您希望查询的时间范围。 |
资源包实例ID | 若您希望根据资源包的实例ID查看指定资源包的使用详情,可以配置此项。 |
抵扣实例ID | 若您希望根据抵扣实例ID查询资源包的使用详情,可以配置此项。 |
注意 如果您购买的资源包是中国大陆通用资源包,在同一时段 可能有多条抵扣记录,查看最后一条抵扣记录(即列表最上面一条)可以看出您的资源包剩余量。
如果您希望查看MOS每个存储空间的使用记录明细,可导出MOS的用量明细表。
1.登录摩杜云管理控制台。
2.单击顶部导航栏中的费用。
3.在左侧菜单栏选择全部菜单项 > 费用账单 > 用量明细。
4.在用量明细页面置您查询参数。
参数设置如下:
参数 | 说明 |
---|---|
产品 | 选择对象存储MOS。 |
计量规格 | 选择对象存储MOS。 |
使用期间 |
选择您希望查询的时间段。
查询的开始时间和结束时间仅可以在同月内,
不可跨月查询。例如开始时间为2019-04-01,
结束时间最大为2019-04-30,不能选择2019-05-01。
说明 超过12个月的使用记录查询需联系售后技术支持。 |
计量粒度 | 可选择按天或按小时导出记录。 |
验证码 | 输入显示的验证码。 |
5.单击导出CSV,待表格生成之后,将表格保存到电脑上后即可查看MOS使用记录明细。
在账单明细中查看或导出的账单显示存储量与实际不符?
问题原因:由于MOS是按小时计费,所以当您统计周期选择按天统计时,MOS会将所选当天24小时内的存储量汇总起来,导致存储量与实际不符的情况。例如当天的存储量一直为1
TB,则账单显示的存储量为24 TB,账单显示结果并不影响计费结果,依然按照1 TB数据存储了24小时计费。
本文介绍对象存储MOS产生欠费之后的服务状态。
当您的MOS服务处于以下情况时,可能会产生欠费:
您没有购买资源包,且您绑定的账户余额不足。
您已购买资源包,详细的欠费原因请参见购买了资源包为何仍会欠费?。
MOS产生欠费后的服务状态变化如下:
欠费后如果在延停权益额度内,您的服务将不会受到停服影响。
说明 摩杜云提供延停权益,即当按量付费的资源发生欠费后, 提供一定额度或时长继续使用云服务的权益。延停期间正常计费。延停的权益额度不是欠费总额的上限。 您延停的额度或时长根据您在摩杜云的历史消费等因素, 每个月自动计算并更新。更多信息,请参见延期免停权益。
欠费后如果超出了延停权益额度,MOS服务将自动停止。而您所占用的存储空间资源仍会继续扣费,因此欠费会累积。
如果您在MOS停服后15天内充值补足欠款,MOS服务会自动启用。
如果您在MOS停服后15天内未补足欠款,将视为您主动放弃MOS存储服务,摩杜云将终止本产品服务条款并停止为您继续提供服务,您保存在摩杜云的全部数据将会被清理删除,清理后数据不可恢复。请注意,数据清理之前仍会继续计费,若您确认不再使用MOS存储服务,请务必删除MOS上的数据。
通过本文您可以了解退订资源包需满足的条件。
您可以联系摩杜云客服申请取消已购买的资源包,但必须同时符合以下所有条件:
该资源包未使用。
该资源包新购不足5天。
该资源包不是通过升级或续费购买的。
本文列举关于MOS计量计费的常见问题。
购买了资源包为何仍会欠费?
MCS快照可以使用MOS存储包吗?
中国大陆通用资源包和地域资源包的使用说明
资源包为什么不能续费?
MOS控制台显示的本月外网流量与日志服务统计的不一致?
已经产生的欠费是否可以购买资源包进行抵扣?
资源包即将到期或额度不够怎么办?
如何取消资源包?
MOS服务如何停止计费?
对象存储MOS提供多种类型的资源包, 用以抵扣您使用MOS过程中产生的部分费用, 但是资源包并不能抵扣所有费用。本文将为您解答为什么购买了资源包之后仍会欠费。
购买了资源包后仍出现欠费,主要有以下原因:
您使用MOS时产生了多个计费项,但是仅购买了其中部分计费项对应的资源包。
您的数据存储在MOS上,会产生数据存储费用,您可以购买以下资源包进行抵扣:
如果您购买了MOS存储包,需注意不同的存储类型对应不同的存储包,不支持混合使用。例如标准存储类型的存储包不能抵扣低频存储类型的存储费用,本地冗余存储(LRS)类型的存储包不能抵扣同城冗余存储(ZRS)类型的存储费用。
如果您购买了存储容量单位包SCU,需注意SCU不能抵扣冷归档存储(LRS)类型文件的存储费用。SCU详细介绍,请参见存储容量单位包SCU。
如果您的数据需要提供给他人访问、下载等,还会产生如下行流量费用、请求费用等,其中的下行流量费用可以使用“下行流量包”进行抵扣,而请求费用目前没有任何资源包可以抵扣,只能使用按量付费的方式,这也是购买了资源包仍然出现欠费的最常见原因。
如果MOS和CDN搭配使用,还可能产生CDN回源流量费用,您可以购买“回源流量包”进行抵扣。
说明
计费项介绍请参见
计量项和计费项概述。
资源包使用说明请参见
包年包月(资源包)。
您购买的是某个地域的资源包,而实际产生的费用发生在其他地域。
MOS的地域资源包和SCU仅可以抵扣对应地域的对应计费项,例如华东2(上海)产生的费用无法使用华东1(杭州)的资源包进行抵扣。
MOS的中国大陆通用资源包只能抵扣中国内地各地域的对应计费项,不能抵扣中国香港和海外地域的对应计费项,例如新加坡地域产生的费用无法使用中国大陆通用资源包进行抵扣。
如果是中国内地,且资源包价格相同的情况下,建议您优先购买对应计费项的中国大陆通用资源包。中国大陆通用资源包可以用来抵扣中国内地所有地域的对应计费项。
您的实际使用量超出了资源包规格。
例如您购买了100 GB下行流量包,但是当月的下行流量达到了110 GB,则超出的10
GB流量需按量付费,因此仍会产生欠费。您可以对资源包进行升级以避免出现该情况。
另外,MOS的标准(LRS)存储包可用于抵扣MOS标准存储(本地冗余)容量和MCS普通快照容量费用;SCU可用于抵扣多个产品的部分存储费用,如果您同时使用了多个产品,且资源包不足以抵扣这些产品的合计费用时,也会产生欠费。例如您购买了100
GB的标准(LRS)存储包,您的实际存储量是90 GB。但是,如果您还有MCS快照的存储量20
GB,也会通过标准(LRS)存储包进行抵扣,由于总的存储量为110
GB,超出了存储包规格,因此会产生欠费。
出账系统有延迟。
资源包生效后(MOS的资源包购买后立即生效,SCU需指定生效时间)会自动抵扣相应资源的使用费用,但是摩杜云当前的账单系统存在延迟。例如资源包9点开始生效,您在10点仍收到了欠费账单,这些欠费可能是9点之前产生的。建议您在收到账单后,仔细核对一下费用产生的时间。
现在您已经了解了欠费的原因,您可以按照以下步骤查看具体的欠费项目和欠费金额。
1.登录摩杜云控制台。
2.单击顶部导航栏中的费用,进入摩杜云用户中心。
3.在左侧菜单栏,单击费用账单 ,然后单击账单明细页签。
4.选择要查询的账期,设置统计项为计费项,统计周期为明细。
5.在列表中,单击产品选择对象存储,单击消费类型选择后付费,再结合地域和计费项这两列的信息就可以判断具体的欠费情况了。
您可以在摩杜云用户中心查看资源包的具体使用情况。
1.登录摩杜云控制台。
2.单击顶部导航栏中的费用,进入摩杜云用户中心。
3.单击资源管理 > 资源包。
4.单击使用明细页签,设置相关的查询条件,即可查看资源包具体的抵扣量和剩余量。
虑到一键关闭会导致客户的业务受到影响,因此MOS暂时没有提供此功能。
如果您确实不想再使用MOS服务,可以删除存储空间(Bucket)下的所有对象(Object)、因分片上传或断点续传产生的碎片(Part)、以及LiveChannel,再删除Bucket,即可在下一个账期(MOS按量付费一小时出一次账单)不产生扣费信息。推荐您通过对象生命周期功能来自动批量删除Object。
如果您长时间(超过30天)不需要使用MOS上的数据,又不想将这些数据删除,建议您通过对象生命周期功能将标准存储转换成低频访问或者归档存储,可以节省约50%到80%的费用。有关低频访问和归档存储类型,请您参见存储类型介绍。
MCS快照数据独立存储,存储费用可使用MOS标准(LRS)存储包抵扣。 当您购买了MOS标准(LRS)存储包后,会自动抵扣MCS快照的费用,不需要任何操作。
使用MCS快照存储服务,有两种付费方式:
包年包月(推荐):购买MOS标准(LRS)存储包,存储费用更低。 MOS存储包还支持续费和升级操作,您可以根据自己的存储量随时升级您的存储包。购买标准(LRS)存储包请单击购买资源包。
说明
购买存储包前请您注意:
请认真核对您资源所在的地域,不要跨地域购买存储包,不同地域的存储包不通用,会导致您资源用量抵扣不成功。
同地域的存储包,在同一时间段内不能重复购买。如果当前时间段内已有存储包,您需要在开通时间选择中指定新存储包开始生效时间,应晚于当前存储包到期时间(该场景适用于存储包续费)。
按量付费:按快照实际大小进行计量计费,每小时进行扣费。更多信息请参考 快照计费
您可以通过MOS控制台或者MCS控制台查看MCS快照容量。
通过MOS控制台查看MCS快照容量
i.登录 对象存储MOS控制台。
ii.在概览页的基础数据区域,从存储用量下拉列表中选择MCS快照存储即可查看MCS快照容量。
通过MCS控制台查看MCS快照容量
i.登录云服务器MCS控制台。
ii.在左侧导航栏里,选择存储与快照 > 快照 > 快照容量。
iii.选择业务部署的地域即可查看当前快照容量。
自2018年01月05日起,除了各地域的资源包外,您还可以购买中国大陆通用资源包。
地域资源包和中国大陆通用资源包可以合并使用,但抵扣顺序是先抵扣地域资源包,额度用完再抵扣中国大陆通用资源包。
中国大陆通用资源包可以抵扣中国内地所有地域的对应计费项,例如华东1(杭州)、华东2(上海)、华南1(深圳)等。中国大陆通用资源包不能抵扣中国香港和海外地域的对应计费项。
您可以同时购买中国大陆通用资源包和地域资源包。
资源包抵扣顺序:先抵扣地域资源包,额度用完再抵扣中国大陆通用资源包,若仍有未抵扣完的费用,则按量计费。
同一地域,相同类型的存储包只能购买一次。您可以对已购的存储包进行续费、升级。
同一地域,下行流量包、回源流量包、传输加速包可以购买多个,叠加使用。已购买的下行流量包支持续费,但不支持升级;回源流量包和传输加速包不支持续费和升级。
资源包的购买及使用详情请参见包年包月(资源包)。
可以只买中国大陆通用资源包,不买地域资源包吗?
可以,中国大陆通用资源包和各地域资源包的种类是一样的,都分为:标准(LRS)存储包、低频(LRS)存储包、归档(LRS)存储包、标准(ZRS)存储包、低频(ZRS)存储包、下行流量包、回源流量包。不能抵扣请求次数、数据处理等费用。具体请参见计量项和计费项概述。
如果已经购买了地域资源包怎么办?
如果您已购买了中国大陆地区的各地域资源包,如华东1、华东2、华南1等。这些地域资源包继续有效,有效期内可升级、可续费。您也可以新购中国大陆通用资源包,两种资源包可以合并使用,但抵扣顺序为:先抵扣地域资源包,再抵扣中国大陆通用资源包。
已购买的地域资源包,能否变更成中国大陆通用资源包?
不能,已购买的地域资源包无法转化为中国大陆通用资源包,但您可以新购中国大陆通用资源包。资源包抵扣顺序:先抵扣地域资源包,再抵扣中国大陆通用资源包。
您给MOS资源包续费时如果出现以下提示:
“同一区域,同一时间段或者相交时段存在已经生效的资源包,您可以选择其他区域或者对当前生效的资源包升级配置。”
这是因为您之前购买了同一地域不同时间段的资源包,当您给一个资源包续费时,选择的续费时长与其他已有的资源包的有效期有重合。这种情况下,如果要续费,续费时长只能选择没有重合的时间段。
使用日志服务提供的命令进行查询时只能统计到7天内的数据,而MOS控制台统计到的是整个月已经产生的流量数据,所以会出现数据不一致的情况。
如果要查询准确的计量数据,请以费用中心数据为准。详情请参见
查看消费明细。
不可以。对象存储MOS的资源包仅可以抵扣购买资源包之后产生的对应费用,对于购买资源包前产生的欠费,您只能通过充值抵消欠款。
对象存储MOS的资源包都有使用期或抵扣额度,本文介绍资源包即将到期或额度不够用时怎么处理。
MOS支持对资源包进行续费、升级或叠加操作,以应对资源包到期或额度不够的问题:
续费:对快到期资源包进行续费操作,以延长资源包的使用期限。详情请参见
续费资源包。
升级:如果您需要更高规格的MOS资源包,可以对当前资源包进行升级。详情请参见
升级资源包。
叠加:对于部分类型的资源包,您可以购买多个相同时间的资源包进行叠加使用。例如,您购买2个相同地域、相同期限的下行流量包,若2个都是1
TB,则资源包生效起内,可以抵扣2
TB的下行流量费用。
注意 对于已到期的资源包,您无法进行续费和升级操作,只能重新购买。
下表列出可以升级、续费或叠加的资源包。其中“√”表示此类资源包支持对应操作,“×”表示不支持。
资源包名称 | 使用说明 | 升级 | 续费 | 叠加 |
---|---|---|---|---|
标准(LRS)存储包 | 抵扣标准存储-本地冗余类型文件的存储费用和MCS快照存储费用。 | |||
低频(LRS)存储包 | 抵扣低频访问存储-本地冗余类型文件的存储费用。 | |||
归档(LRS)存储包 | 抵扣归档存储类型文件的存储费用。 | |||
标准(ZRS)存储包 | 抵扣标准存储-同城冗余类型文件的存储费用。 | |||
低频(ZRS)存储包 | 抵扣低频访问存储-同城冗余类型文件的存储费用。 | |||
下行流量包 | 抵扣外网流出流量费用,适用于所有存储类型。 | |||
回源流量包 | 使用CDN加速域名访问MOS资源时会产生CDN回源流量,直接使用MOS访问域名访问MOS资源时不会产生此流量。回源流量包可用于抵扣从CDN回源到MOS所产生的流量,适用于所有存储类型。 | |||
传输加速包 | 用于抵扣使用传输加速域名访问MOS产生的传输加速费用,适用于所有存储类型。 |
对象存储MOS的低频访问和归档存储类型文件的最小存储单元为64 KB,所有小于64 KB的文件都会按照64 KB计算。所以,如果您存储空间内有很多小于64
KB的低频访问或归档存储类型文件,会出现计费容量远远大于实际存储量的情况。
您可以在MOS管理控制台对应Bucket的概览页,查看存储空间内低频访问和归档存储类型文件的实际容量和计费容量。详情请参见基础数据。
摩杜云对象存储MOS(Moduyun Object Storage )为您提供基于网络的数据存取服务。 使用MOS,您可以通过网络随时存储和调用包括文本、图片、音视频在内的各类数据文件。
您可以通过MOS控制台创建Bucket,并将文件上传至Bucket。 上传完成后,将文件(Object)下载至本地或者通过生成签名URL的方 式将文件分享给第三方,供其下载或预览。更多信息,请参见控制台使用流程。
MOSbrowser是MOS的图形化工具,支持Windows、Linux、macOS系统。
您可以通过MOSbrowser的图形化界面方便直观地管理Bucket、
上传下载Object和文件夹(目录)、简化Policy授权等操作。更多信息,请参见
图形化管理工具MOSbrowser快速入门。
MOSbrowser是桌面式图形化工具,所以传输速度和性能不如MOSutil。
MOSutil是MOS的命令行工具,支持Windows、Linux、macOS系统。您可以通过MOSutil提供的方便、 简洁、丰富的Bucket和Object命令管理您的MOS。更多信息,请参见 命令行工具MOSutil快速入门。
MOS提供JavaAPI和SDK包, 方便您快速进行二次开发。
MOS的存储空间内部是扁平的,没有文件系统的目录等概念, 所有的对象都直接隶属于其对应的存储空间。如果您想要像使用本地 文件夹和磁盘那样来使用MOS存储服务,可以通过配置云存储网关来实现。 通过云存储网关提供的NFS、SMB(CIFS)、iSCSI协议,MOS的存储资源 会以Bucket为基础映射成本地文件夹或者磁盘。 您可以通过文件读写操作访问MOS资源,无缝衔接基于POSIX和块访问协 议的应用,降低应用改造和学习成本。更多信息,请参见配置云存储网关。
您可以通过MOS控制台完成常见的基础操作,例如创建存储空间(Bucket)、上传和下载文件(Object)等。
MOS控制台使用流程图如下所示:
文件上传至目标Bucket后,您可以执行如下操作:
将文件下载至本地。详情请参见
下载文件。
通过生成签名URL的方式将文件分享给第三方,供其下载或预览。详情请参见
分享文件。
通过自定义域名(自有域名)访问文件,需要将自定义域名绑定至文件所在的Bucket。详情请参见
使用自有域名访问MOS资源。
存储空间(Bucket)是用于存储对象(Object)的容器。 在上传任意类型的Object前,您需要先创建Bucket。 本文主要介绍如何通过控制台方式创建Bucket。
已开通MOS服务。详情请参见 开通MOS服务。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击创建Bucket。
您也可以单击概览,然后单击右上角的创建Bucket。
3.在创建Bucket面板,按如下说明配置必要参数。其他参数均可保持默认配置,也可以在Bucket创建完成后单独配置
参数 | 描述 |
---|---|
Bucket名称 |
Bucket的名称。Bucket一旦创建,则无法更改其名称。
命名规则如下: Bucket名称必须全局唯一。 只能包括小写字母、数字和短划线(-)。 必须以小写字母或者数字开头和结尾。 长度必须在3~63字节之间。 |
地域 |
Bucket的数据中心。Bucket一旦创建,则无法更改其所在地域。
如需通过MCS内网访问MOS,请选择与MCS相同的地域。更多信息,请参见 MOS访问域名使用规则。 |
同城冗余存储 |
MOS同城冗余存储采用多可用区(AZ)机制,将用户的数据以冗余的方式存放在同一地域(Region)的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。
启用:开启同城冗余存储,则Bucket内的Object将以同城冗余的方式进行存储。例如,Bucket存储类型为标准存储,则该Bucket内的Object默认为标准存储(同城冗余)。详情请参见 同城冗余存储。
注意
|
4.单击确定。
您可以通过MOS控制台上传不超过5 GB大小的文件。
已创建存储空间(Bucket)。详情请参见 创建存储空间。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.在文件管理页签,单击上传文件。
4.在上传文件面板,按如下说明配置各项参数。
参数 | 说明 |
---|---|
上传到 |
设置文件上传到MOS后的存储路径。
当前目录:将文件上传到当前目录。 指定目录:将文件上传到指定目录,您需要输入目录名称。若输入的目录不存在,MOS将自动创建对应的文件夹并将文件上传到该文件夹中。 |
文件ACL |
选择文件的读写权限。 继承Bucket:以Bucket读写权限为准。 私有(推荐):只有文件Owner拥有该文件的读写权限,其他用户没有权限操作该文件。 公共读:文件Owner拥有该文件的读写权限,其他用户(包括匿名访问者)都可以对文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。 公共读写:任何用户(包括匿名访问者)都可以对文件进行访问,并且向该文件写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。 有关文件ACL的更多信息,请参见Object ACL。 |
待上传文件 |
选择您需要上传的文件或文件夹。 您可以单击扫描文件或扫描文件夹选择本地文件或文件夹,或者直接拖拽目标文件或文件夹到待上传文件区域。 如果上传文件夹中包含了无需上传的文件,请单击目标文件右侧的移除将其移出文件列表。
注意
|
5.单击上传文件。
此时,您可以在上传列表页签查看各个文件的上传进度。
上传完成后,您可以在目标路径下查看上传文件的文件名、文件大小以及存储类型等信息。
操作 | 实现方式 |
---|---|
上传文件 |
Java SDK |
您可以将已上传的文件下载至浏览器默认路径或者本地指定路径。更多信息,请参见
下载文件。
您可以将文件URL分享给第三方,供其下载或预览。更多信息,请参见
分享文件。
您可以对存储在MOS中的数据进行分析处理。更多信息,请参见
数据处理介绍。
在文件上传到MOS上后,您还可以通过上传回调向指定的应用服务器发起回调请求。更多信息,请参见
上传回调。 GB大小的文件。
当文件(Object)上传至存储空间(Bucket)后, 您可以将文件下载至浏览器默认路径或本地指定路径。本文主要介绍如何通过控制台方式下载文件。
对于归档或者冷归档存储类型的Object,需要确认Object处于“解冻”状态才能对其进行下载。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.单击左侧导航栏的文件管理,下载单个或多个文件。
下载单个文件
方式一:单击目标文件右侧的更多 > 下载。
方式二:单击目标文件的文件名或其右侧的详情,在弹出的详情面板中单击下载。
下载多个文件
选中多个文件,选择批量操作 > 下载。通过MOS控制台可一次批量下载最多100个文件。
操作 | 实现方式 |
---|---|
下载文件 |
Java SDK |
文件(Object)上传至存储空间(Bucket)后, 您可以将文件URL分享给第三方,供其下载或预览。本文主要介绍如何通过控制台方式分享文件。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.单击左侧导航栏的文件管理,然后单击目标文件的文件名或其右侧的详情。
4.在详情面板,单击复制文件URL。
如果您要分享私有文件,则在获取文件URL时还需要设置过期时间。默认的过期时间为3600秒(1小时),最大值为32400秒(9小时)。如果您希望获取更长时效的文件URL,请使用命令行工具MOSutil、图形化工具MOSbrowser或MOS
SDK。
通过文件URL预览
将文件URL分享给第三方时,如需确保第三方访问文件时是预览行为,您需要绑定自定义域名并添加CNAME记录。详情请参见使用自有域名访问MOS资源。
通过文件URL下载
将文件URL分享给第三方时,如需确保第三方访问文件时是下载行为,您需要将文件HTTP头中的Content-Disposition字段设置为attachment。详情请参见设置文件HTTP头。
文件(Object)上传至存储空间(Bucket)后,MOS会自动生成文件URL,您可以直接通过文件URL(即Bucket外网访问域名) 访问该文件。若您希望通过自定义域名(自有域名)访问这些文件,需要将自定义域名绑定至文件所在的Bucket。
已完成域名备案,详情请参见备案。
1.绑定自定义域名。
i.登录 MOS管理控制台。
ii.单击Bucket列表,之后单击目标Bucket名称。
iii.单击传输管理 > 域名管理。
iv.单击绑定域名。
v.在绑定域名面板,输入要绑定的域名。
若提示域名冲突,表示该域名已绑定至其他Bucket。此时,
您可以更换域名或通过验证域名所有权强制绑定域名。
验证域名所有权会解除域名与其他Bucket的绑定关系。详情请参见验证域名所有权。
2.添加CNAME记录。
如果添加的域名为当前账号下管理的域名,开启自动添加CNAME记录
a.在绑定域名面板,打开自动添加CNAME记录开关。
注意 若您绑定的域名已配置过CNAME,则自动添加的CNAME记录会覆盖原有的CNAME记录。
b.单击提交。
如果添加的域名为非当前账号下的域名,手动添加CNAME记录。
若您的域名为非摩杜云托管的域名,需在对应的域名解析商处配置云解析,如腾讯云解析(原DNSPod)或新网,详情请参见配置CNAME。
此处以非当前账号下摩杜云托管的域名为例,手动添加CNAME记录步骤如下:
a.登录云解析DNS控制台。
b.在域名解析列表中,单击目标域名右侧的解析设置。
c.单击添加记录,填写域名解析信息。
参数 | 说明 |
---|---|
记录类型 | 选择域名指向的类型。 此处选择CNAME。 |
主机记录 |
根据域名前缀填写主机记录。
如果是顶级域名,例如moduyun.com,输入@。 如果是二级域名,输入二级域名的前缀。例如域名为abc.moduyun.com,输入abc。 如果需要所有的二级域名都指向Bucket外网访问域名,输入*。 |
解析线路 | 解析域名时使用的线路。 建议选择默认,系统将自动选择最佳线路。 |
记录值 | 填写Bucket外网访问域名。Bucket外网访问域名结构为BucketName.Endpoint,例如华东1(杭州)地域创建了名为examplebucket的存储空间, 外网Endpoint为MOS-cn-hangzhou.moduyuncs.com,则填写为examplebucket.MOS-cn-hangzhou.moduyuncs.com。 |
TTL | 域名的更新周期,保留默认值即可。 |
d.单击确定。
新增CNAME记录实时生效,修改CNAME记录最多72小时内生效。
3.通过自有域名访问MOS资源。
绑定自定义域名后,文件URL的格式为https://YourDomainName/ObjectName。
例如您在华东1(杭州)地域下创建了目标存储空间examplebucket,并在examplebucket中存放了exampleobject.jpg的文件,自定义域名为img.example.com,此时您可以使用https://img.example.com/exampleobject.jpg访问目标文件。
本文旨在引导您通过命令行工具MOSutil快速创建目标存储空间(Bucket), 然后将本地文件上传至Bucket。上传完成后,将文件(Object) 下载至本地或者通过生成签名URL的方式将文件分享给第三方,供其下载或预览。
已安装MOSutil。详情请参见 下载和安装。
本文各命令行示例均基于Linux 64位系统,其他系统请将命令开头的./MOSutil64替换成对应的Binary名称。 例如对于Windows 64位系统,请将./MOSutil64替换成MOSutil64.exe。各系统对应的Binary名称如下。
系统 | Binary名称 |
---|---|
Linux 64位 | ./MOSutil64 |
Linux 32位 | ./MOSutil32 |
Windows 64位 | MOSutil64.exe |
Windows 32位 | MOSutil32.exe |
macOS 64位 | ./MOSutilmac64 |
macOS 32位 | ./MOSutilmac32 |
ARM 64位 | ./MOSutilarm64 |
ARM 32位 | ./MOSutilarm32 |
命令格式
./MOSutil64 mb MOS://bucket
使用示例
创建名为examplebucket的存储空间。
./MOSutil64 mb MOS://examplebucket
以下输出结果表明已成功创建examplebucket。
0.668238(s) elapsed
有关创建Bucket的更多示例,请参见mb(创建存储空间)。
命令格式
./MOSutil64 cp local_file MOS://bucket
使用示例
上传单个文件examplefile.txt至目标存储空间examplebucket。
./MOSutil64 cp examplefile.txt MOS://examplebucket
上传单个文件examplefile.txt至目标存储空间examplebucket,并将文件重命名为exampleobject.txt。
./MOSutil64 cp examplefile.txt MOS://examplebucket/exampleobject.txt
以下输出结果表明文件已成功上传至目标Bucket。
0.720812(s) elapsed
有关上传文件的更多示例,请参见cp(上传文件)。
命令格式
./MOSutil64 cp cloud_url local_file
使用示例
将文件examplefile.txt从目标存储空间examplebucket下载至本地localfolder文件夹下。
./MOSutil64 cp MOS://examplebucket/examplefile.txt localfolder/
将文件examplefile.txt从目标存储空间examplebucket下载至本地localfolder文件夹下,并将文件重命名为exampleobject.txt。
./MOSutil64 cp MOS://examplebucket/examplefile.txt localfolder/exampleobject.txt
以下输出结果表明文件已成功下载至本地目标文件夹。
0.720812(s) elapsed
有关下载文件的更多示例,请参见cp(下载文件)。
命令格式
./MOSutil64 sign cloud_url [--timeout < value>]
使用示例
对目标文件MOS://examplebucket/exampleobject.txt生成超时时间为3600秒的文件签名URL。
./MOSutil64 sign MOS://examplebucket/exampleobject.txt --timeout 3600
以下输出结果表明已成功生成文件签名URL。
https://examplebucket.ss-cn-hangzhou.moduyuncs.com/exampleobject.txt?Expires=1608282224&MOSAccessKeyId=LTAI4G33piUmgRN1DXx9****&Signature=jo4%2FGykfuc1A4fvyvKRpRyymYH**** 0.368676(s) elapsed
有关生成签名URL的更多示例,请参见sign。
MOSbrowser是摩杜云官方提供的MOS图形化管理工具, 提供类似Windows资源管理器的功能。使用MOSbrowser, 您可以快速完成存储空间(Bucket)和文件(Object)的相关操作。
已安装并登录MOSbrowser。具体操作,请参见安装并登录MOSbrowser。
MOSbrowser支持的Bucket或Object级别的操作与控制台支持的操作类似,请按照MOSbrowser界面指引完成Bucket或Object相关操作。
分类 | 配置说明 |
---|---|
Bucket相关操作 |
创建Bucket Bucket是您用于存储Object的容器。 在上传任何文件到MOS之前,您必须先创建存储空间。 有关创建Bucket时如何填写Bucket名称、选择所在地域、ACL权限和存储类型信息,请参见 创建存储空间。 删除Bucket 如果您不再需要Bucket,请将其删除,以免产生额外费用。有关删除Bucket的注意事项,请参见 删除存储空间。 |
Object相关操作 |
MOSbrowser支持上传、下载、预览、移动或复制文件、生成文件URL等操作。操作过程中有如下注意事项:
MOSbrowser默认使用分片上传和断点续传上传文件,上传文件最大不能超过48.8 TB。若您因意外中断了文件上传的过程,且未继续完成该文件的上传,则已上传的部分会以碎片(Part)的形式存储在MOS的存储空间(Bucket)中。若您不再需要这些Part,建议您通过以下方式删除,以免产生额外的存储费用。 手动删除Part的具体操作,请参见删除碎片。 通过生命周期规则自动删除Part的具体操作,请参见设置生命周期规则。 移动或复制文件最大不能超过5 GB,5 GB以上文件的移动或复制操作建议使用MOSutil。 Object各类操作的其他注意事项,请参见控制台用户指南对应文档。 |
本文介绍如何快速使用MOS Java SDK完成常见操作,如创建存储空间(Bucket)、上传文件(Object)、下载文件等。
已安装Java SDK。详情请参见安装。
MOS Java
SDK提供了基于Maven和Ant的示例工程。您可以在本地设备上编译和运行示例工程,或者以示例工程为基础开发您的应用。工程的编译和运行方法,请参见工程目录下的README.md。
Maven示例工程:moduyun-MOS-java-sdk-demo-mvn.zip
Ant示例工程:moduyun-MOS-java-sdk-demo-ant.zip
存储空间是MOS的全局命名空间,相当于数据的容器,可以存储若干文件。 以下代码用于创建存储空间:
存储空间的命名规范详情请参见基本概念中的命名规范。创建存储空间详情请参见创建存储空间。
获取endpoint详情请参见访问域名和数据中心文档。
以下代码用于上传文件至MOS:
上传文件详情请参见 上传文件
以下代码用于下载文件:
下载文件详情请参见 下载文件。
以下代码用于列举指定存储空间下的文件。默认列举100个文件。
列举文件详情请参见 列举文件。
当您完成了创建存储空间(Bucket)、上传和下载文件(Object)等基本操作后,您可以结合自身的业务场景选用MOS提供的一系列常用的高阶功能。
下表汇总了MOS的常用高阶功能:
功能列表 | 说明 |
---|---|
请求者付费模式 | 请求者付费模式是指由请求者支付访问Bucket内数据时产生的费用, 而Bucket拥有者仅支付存储费用。当您希望共享数据, 但又不希望支付因共享数据产生的额外费用时,您可以开启此功能。 |
生命周期 | 生命周期规则(Lifecycle)用于定期将Object转储为低频访问、 归档存储或冷归档存储类型,或将过期的Object和碎片删除,从而节省存储费用。 |
静态网站托管 | 静态网站是指所有的网页都由静态内容构成, 包括客户端执行的脚本(例如JavaScript)。 您可以将您的静态网站托管到MOS的Bucket,并使用Bucket域名访问该网站。 |
静态网站托管 | 静态网站是指所有的网页都由静态内容构成, 包括客户端执行的脚本(例如JavaScript)。 您可以将您的静态网站托管到MOS的Bucket,并使用Bucket域名访问该网站。 |
访问控制 | 针对存放在Bucket中Object的访问,MOS提供了多种权限控制策略。例如基于资源的授权策略Bucket Policy、 基于用户的授权策略RAM Policy、读写权限(ACL)、通过STS临时授权访问MOS以及通过防盗链对访问来源设置白名单。 |
数据加密 |
服务器端加密:上传文件时,MOS对收到的文件进行加密,再将得到的加密文件持久化保存;下载文件时,MOS自动将加密文件解密后返回给用户,并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。
客户端加密:将文件上传到MOS之前在本地进行加密。 |
跨区域复制 | 跨区域复制(CrMOS-Region Replication)是跨不同MOS数据中心(地域)的Bucket自动、异步(近实时)复制Object,它会将Object的创建 、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。 |
摩杜云对象存储服务(简称MOS),是摩杜云对外提供的海量、安全、低成本、 高可靠的云存储服务。您可以通过本文档提供的简单的REST接口,在任何时间、 任何地点、任何互联网设备上进行上传和下载数据。基于MOS,您可以搭建出各种多媒体分享网站、 网盘、个人和企业数据备份等基于大规模数据的服务。
MOS API参考主要介绍接口的请求语法、相关参数含义以及请求和返回示例。如果要进行快速二次开发, 可以通过以下方式调用对象存储MOS API
您使用的MOS资源和相关功能,都有一定的限制,具体请参见MOS使用限制
请参见 MOS常见错误响应。
本文为您展示了对象存储MOS所有可调用的API接口,详细接口信息请参见对应接口文档。
如果您需要调用API,请在控制台上创建AccessKey。
访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用MOS API,而登录密码用于登录控制台。
您可以使用AccessKey构造一个API请求(或者MOS SDK)来操作资源。
访问密钥AccessKey(AK)相当于登录密码,只是使用场景不同。AccessKey用于程序方式调用云服务API, 而登录密码用于登录控制台。如果您不需要调用API,那么就不需要创建AccessKey。
1、背景信息
您可以使用AccessKey构造一个API请求(或者使MOS SDK)来操作资源。AccessKey包括AccessKey ID和AccessKey
Secret。
a) AccessKey ID用于标识用户。
b) AccessKey Secret是用来验证用户的密钥。AccessKey Secret必须保密。
2、操作步骤
a) 登录MOS管理控制台。。
b) 点击概览页右上角的AccessKey按钮进入AccessKey列表页。
c) 单击创建AccessKey。
说明:首次创建时需填写手机验证码。
d) 单击关闭。
说明:
- AccessKey Secret只在创建时显示,不提供查询,请妥善保管。
- 如果AccessKey泄露或丢失,则需要创建新的AccessKey。
MOS统一使用以下公网服务地址(Endpoint):
功能 | 域名 |
---|---|
发送地址 | https://mpi.moduyun.com |
地区 | 值 |
---|---|
华东1(杭州) | cn-hangzhou |
华东2(上海) | cn-shanghai |
华北1(青岛) | cn-qingdao |
华北2(北京) | cn-beijing |
华北3(张家口) | cn-zhangjiakou |
华北5(呼和浩特) | cn-huhehaote |
华北6(乌兰察布) | cn-wulanchabu |
"华南1(深圳)", | "cn-shenzhen", |
"华南2(河源)", | "cn-heyuan", |
"华南3(广州)", | "cn-guangzhou", |
"西南1(成都)", | "cn-chengdu", |
"中国(香港)", | "cn-hongkong", |
"新加坡", | "ap-southeast-1", |
"澳大利亚(悉尼)", | "ap-southeast-2", |
"马来西亚(吉隆坡)", | "ap-southeast-3", |
"印度尼西亚(雅加达)", | "ap-southeast-5", |
"日本(东京)", | "ap-northeast-1", |
"印度(孟买)", | "ap-south-1", |
"德国(法兰克福)", | "eu-central-1", |
"英国(伦敦)", | "eu-west-1", |
"美国(硅谷)", | "us-west-1", |
"美国(弗吉尼亚)", | "us-east-1", |
"阿联酋(迪拜)", | "me-east-1", |
使用UploadFolder类创建文件夹
唯一请求地址:
https://mpi.moduyun.com/bucket/createFolder
名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
accessKeyId | String | 是 | 效验身份的Key |
sig | String | 是 | 签名(secretKey+timeRub)MD5加密 |
timeRub | String | 是 | 当前时间戳(毫秒) |
region | String | 是 | 地域 |
bucketName | String | 是 | bucket名称 |
fileName | String | 是 | 完整路径 |
callbackUrl | String | 否 | 回调地址 |
描述:使用上传回调功能可以更加方便的知道文件的上传状态,不管文件是否上传成功 ,回调会返回上传成功和错误的信息(注:上传的回调时长最多为30秒,否则程序会强制中断),回调返回的信息如下:
名称 | 类型 | 描述 |
---|---|---|
region | String | 上传资源的地域ID |
bucketName | String | 上传资源的mos实例名称 |
fileName | String | 上传资源的完整路径 |
callbackId | String | 上传资源的上传ID |
callbackState | String | 上传资源的状态((成功:success)) |
callbackMsg | String | 上传资源的错误信息 |
fileUrl | String | 上传资源的文件的下载地址 |
fileSize | String | 上传文件的大小 |
versionId | String | 版本号 |
callbackParameter | String | 自定义回调参数 |
注意:简单上传的单个文件大小不能超个60MB,当超个60M,系统会自动使用分片上传
使用UploadFile类创建文件
唯一请求地址:
https://mpi.moduyun.com/bucket/simpleUploadFile
名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
accessKeyId | String | 是 | 效验身份的Key |
sig | String | 是 | 签名(secretKey+timeRub)MD5加密 |
timeRub | String | 是 | 当前时间戳(毫秒) |
region | String | 是 | 地域 |
bucketName | String | 是 | bucket名称 |
fileName | String | 是 | 完整路径+文件名+后缀名 |
file | File | 是 | 文件流 |
storageClass | String | 否 | 文件的存储类型 |
jurisdiction | String | 否 | 文件的权限 |
sseAlgorithm | String | 否 | 文件加密方式 |
metaData | String | 否 | 自定义元数据(key-value格式,可以需要x-mos-meta-开头) |
callbackUrl | String | 否 | 回调地址 |
分片上传文件
注意:当文件比较大时,可以使用分片上传,同时上传的速度会有所增长,所有在分片上传的过程中,请勿断开连接,否则会导致分片上传不成功
唯一请求地址:
https://mpi.moduyun.com/bucket/simpleUploadFile
名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
accessKeyId | String | 是 | 效验身份的Key |
sig | String | 是 | 签名(secretKey+timeRub)MD5加密 |
timeRub | String | 是 | 当前时间戳(毫秒) |
region | String | 是 | 地域 |
bucketName | String | 是 | bucket名称 |
fileName | String | 是 | 完整路径+文件名+后缀名 |
file | File | 是 | 文件流 |
jurisdiction | String | 否 | 文件的权限 |
callbackUrl | String | 否 | 回调地址 |
uploadId | String | 是 | 分片全局ID |
partNumber | String | 是 | 当前分片号(从1开始) |
partSize | String | 是 | 当前分片大小(字节) |
partCount | String | 是 | 总分片数量 |
callbackParameter | String | 否 | 自定义回调参数 |
响应消息:
名称 | 类型 | 描述 |
---|---|---|
data | String | 上传的唯一id |
msg | String | 错误信息,成功为:success |
code | String | 返回的状态码 |
注意:分片全局ID,用于分片上传文件的唯一凭证,请勿随意写入,否则会导致分片上传文件失败
唯一请求地址:
https://mpi.moduyun.com/bucket/getUploadId
名称 | 类型 | 是否必选 | 描述 |
---|---|---|---|
accessKeyId | String | 是 | 效验身份的Key |
sig | String | 是 | 签名(secretKey+timeRub)MD5加密 |
timeRub | String | 是 | 当前时间戳(毫秒) |
storageClass | String | 否 | 文件的存储类型 |
sseAlgorithm | String | 否 | 文件加密方式 |
doLoadName | String | 否 | 下载时的名称 |
code | String | 否 | 下载时的编码 |
expires | String | 否 | 过期时间 |
region | String | 是 | 地域 |
bucketName | String | 是 | bucket名称 |
fileName | String | 是 | 完整路径+文件名+后缀名 |
调用API接口失败时,会返回接口调用错误码。
常见接口调用错误码、错误信息和解决方案,请参见下表:
错误码(Code) | 错误信息(Message) | 描述 |
---|---|---|
30001 | File stream does not exist | 文件流不存在 |
30002 | The file stream is too large, please upload in pieces | 文件流太大,请分片上传 |
50000 | System abnormal, please contact customer service | 系统异常,请联系客服 |
30014 | AccessKey does not exist | AccessKey不存在 |
30008 | AccessKey timeout | AccessKey超时 |
30003 | AccessKey is disabled | AccessKey禁用 |
30013 | bucketName does not exist | bucket不存在 |
30004 | fileName cannot be null | 完整路径不能为空 |
30004 | The storageclass type was not found | 找不到storageclass的类型 |
30004 | The jurisdiction type was not found | 找不到jurisdiction的类型 |
30004 | The sseAlgorithm type was not found | 找不到sseAlgorithm的类型 |
30004 | The custom parameters are not standard | 自定义回调参数不规范 |
下载文件的统一地址
公共文件下载地址:
https://mpi.moduyun.com/bucket/downLoadFile?region=xx-xxxxxx&bucketName=xxx&fileName=xxx.xx&versionId=xxx
私有文件下载地址:
https://mpi.moduyun.com/bucket/downLoadFile?region=xx-xxxxxx&bucketName=xxx&fileName=xxx.xx&versionId=xxx&accessKeyId=xxx&timeRub=xxx&sig=xxx
参数说明
accessKeyId:accessKey需要通过base64加密
timeRub:当前的时间搓
Sig:(secretkey+timeRub)需要通过md5加密:
注意 可以通过sdk获取对应的下载地址
调用API接口失败时,会返回接口调用错误码。
常见接口调用错误码、错误信息和解决方案,请参见下表:
错误码(Code) | 错误信息(Message) | 描述 |
---|---|---|
403 | fileName format error | 文件路径格式错误 |
403 | region format error | 地域格式错误 |
403 | bucketName format error | mos实例格式错误 |
404 | bucketName does not exist | mos实例不存在 |
404 | fileName does not exist | 文件路径不存在 |
403 | private files,sig format error | 私有文件,签名格式错误 |
403 | private files,timeRub format error | 私有文件,timeRub格式错误 |
404 | private files,accessKey does not exist | 私有文件,accessKey不存在 |
403 | private files,link timeout,please get it again | 私有文件,连接超时,请重新获取 |
403 | private files,sig error | 私有文件,签名错误 |
403 | private files,accessKey state disable | 私有文件,key状态禁用 |
404 | private files,bucketName does not exist | 私有文件,mos实例不存在 |
406 | the file hasn't thawed yet | 文件还没有解冻 |
406 | the file is thawing | 文件正在解冻 |
目前,MOS提供以下编程语言的SDK。
SDK | DEMO |
---|---|
Java SDK | Java SDK DEMO |
本文列出您在使用摩杜云对象存储MOS前需要了解的内容。
如果您初次使用摩杜云MOS,请参见摩杜云MOS快速入门系列文档,帮助您了解MOS并快速使用MOS。
如果您已经充分了解MOS,您也可以通过下列资源快速使用MOS的其他各项功能:
资源 | 描述 |
---|---|
摩杜云MOS开发人员指南 | 本文档为您讲解摩杜云MOS服务的核心概念、所有功能介绍与操作方式,以及如何使用API和SDK的有效示例。 |
摩杜云MOS最佳实践 | 详细介绍摩杜云MOS的各种使用场景与配置实践。 |
摩杜云MOS SDK参考 | 介绍主流语言的SDK开发操作和参数。 |
摩杜云MOS API参考 | 详细探讨了摩杜云MOS支持的RESTful API操作和相关的示例。 |
摩杜云MOS官方工具 | 介绍摩杜云官方提供的各种便捷工具,帮助您更高效的管理MOS资源。 |
摩杜云MOS控制台用户指南 | 摩杜云MOS控制台可让您通过界面执行MOS的部分功能。本文档为您介绍基于摩杜云MOS控制台的所有操作。 |
摩杜云MOS图片处理指南 | 详细探讨了摩杜云MOS提供的图片处理服务的详细内容与操作方式。 |
本文将向您介绍对象存储MOS产品中涉及的几个基本概念,以便于您更好地理解MOS产品。
存储空间是用户用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。 存储空间具有各种配置属性,包括地域、访问权限、存储类型等。用户可以根据实际需求,创建不同类型的存储空间来存储不同的数据。
同一个存储空间的内部是扁平的,没有文件系统的目录等概念,所有的对象都直接隶属于其对应的存储空间。
每个用户可以拥有多个存储空间。
存储空间的名称在MOS范围内必须是全局唯一的,一旦创建之后无法修改名称。
存储空间内部的对象数目没有限制。
存储空间的命名规范如下:
只能包括小写字母、数字和短划线(-)。
必须以小写字母或者数字开头和结尾。
长度必须在3~63字节之间。
对象是MOS存储数据的基本单元,也被称为MOS的文件。 和传统的文件系统不同,对象没有文件目录层级结构的关系。 对象由元信息(Object Meta),用户数据(Data)和文件名(Key)组成, 并且由存储空间内部唯一的Key来标识。 对象元信息是一组键值对,表示了对象的一些属性,比如最后修改时间、 大小等信息,同时用户也可以在元信息中存储一些自定义的信息。
对象的生命周期是从上传成功到被删除为止。在整个生命周期内,除通过追加方式上传的Object可以
通过继续追加上传写入数据外,其他方式上传的Object内容无法编辑,您可以通过重复上传同名的对象来覆盖之前的对象。
对象的命名规范如下:
使用UTF-8编码。
长度必须在1~1023字节之间。
不能以正斜线(/)或者反斜线(\)开头。
说明 对象名称需要区分大小写。如无特殊说明,本文档中的对象、文件称谓等同于Object。
在各语言SDK中,ObjectKey、Key以及ObjectName是同一概念, 均表示对Object执行相关操作时需要填写的Object名称。例如向某一存储空间上传Object时, ObjectKey表示上传的Object所在存储空间的完整名称, 即包含文件后缀在内的完整路径,如填写为abc/efg/123.jpg。
Region表示MOS的数据中心所在物理位置。用户可以根据费用、请求来源等选择合适的地域创建Bucket。一般来说,距离用户更近的Region访问速度更快。详情请参见MOS已经开通的Region。
Region是在创建Bucket的时候指定的,一旦指定之后就不允许更改。该Bucket下所有的Object都存储在对应的数据中心,目前不支持Object级别的Region设置。
Endpoint表示MOS对外服务的访问域名。MOS以HTTP RESTful API的形式对外提供服务,当访问不同的Region的时候,需要不同的域名。通过内网和外网访问同一个Region所需要的Endpoint也是不同的。例如杭州Region的外网Endpoint是MOS-cn-hangzhou.moduyuncs.com,内 网Endpoint是MOS-cn-hangzhou-internal.moduyuncs.com。具体的内容请参见各个Region对应的Endpoint。
AccessKey简称AK,指的是访问身份验证中用到的AccessKeyId和AccessKeySecret。MOS通过使用AccessKeyId和AccessKeySecret对称加密的方法来验证某个请求的发送者身份。AccessKeyId用于标识用户;AccessKeySecret是用户用于加密签名字符串和MOS用来验证签名字符串的密钥,必须保密。对于MOS来说,AccessKey的来源有:
Bucket的拥有者申请的AccessKey。
被Bucket的拥有者通过RAM授权给第三方请求者的AccessKey。
被Bucket的拥有者通过STS授权给第三方请求者的AccessKey。
更多AccessKey介绍请参见创建AccessKey。
Object操作在MOS上具有原子性,操作要么成功要么失败,不会存在有中间状态的Object。MOS保证用户一旦上传完成之后读到的Object是完整的,MOS不会返回给用户一个部分上传成功的Object。
Object操作在MOS同样具有强一致性,用户一旦收到了一个上传(PUT)成功的响应,该上传的Object就已经立即可读,并且Object的冗余数据已经写成功。不存在一种上传的中间状态,即read-after-write却无法读取到数据。对于删除操作也是一样的,用户删除指定的Object成功之后,该Object立即变为不存在。
MOS使用基于纠删码、多副本的数据冗余存储机制,将每个对象的不同冗余存储在同一个区域内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
MOS Object操作具有强一致性,用户一旦收到了上传或复制成功的响应,则该上传的Object就已经立即可读,且数据已经冗余写入到多个设备中。
MOS会通过计算网络流量包的校验和,验证数据包在客户端和服务端之间传输中是否出错,保证数据完整传输。
MOS的冗余存储机制,可支持两个存储设施并发损坏时,仍维持数据不丢失。
当数据存入MOS后,MOS会检测和修复丢失的冗余,确保数据持久性和可用性。
MOS会周期性地通过校验等方式验证数据的完整性,及时发现因硬件失效等原因造成的数据损坏。当检测到数据有部分损坏或丢失时,MOS会利用冗余的数据,进行重建并修复损坏数据。
对比项 | MOS | 文件系统 |
---|---|---|
数据模型 | MOS是一个分布式的对象存储服务,提供的是一个Key-Value对形式的对象存储服务。 | 文件系统是一种典型的树状索引结构。 |
数据获取 | 根据Object的名称(Key)唯一的获取该Object的内容。 虽然用户可以使用类似test1/test.jpg的名字,但是这并不表示用户的Object是保存在test1目录下面的。对于MOS来说, test1/test.jpg仅仅只是一个字符串,和a.jpg这种并没有本质的区别。因此不同名称的Object之间的访问消耗的资源是类似的。 | 一个名为test1/test.jpg的文件, 访问过程需要先访问到test1这个目录,然后再在该目录下查找名为test.jpg的文件。 |
优势 | 支持海量的用户并发访问。 | 支持文件的修改,比如修改指定偏移位置的内容、 截断文件尾部等。也支持文件夹的操作,比如重命名目录、删除目录、移动目录等非常容易。 |
劣势 | MOS保存的Object不支持修改(追加写Object需要调用特定的接口,生成的Object也和正常上传的Object类型上有差别)。用户哪怕是仅仅需要修改一个字节也需要重新上传整个Object。 MOS可以通过一些操作来模拟类似文件夹的功能,但是代价非常昂贵。比如重命名目录,希望将test1目录重命名成test2,那么MOS的实际操作是将所有以test1/开头的Object都重新复制成以test2/开头的Object,这是一个非常消耗资源的操作。因此在使用MOS的时候要尽量避免类似的操作。 | 受限于单个设备的性能。访问越深的目录消耗的资源也越大,操作拥有很多文件的目录也会非常慢。 |
因此,将MOS映射为文件系统是非常低效的,也是不建议的做法。如果一定要挂载成文件系统的话,建议尽量只做写新文件、删除文件、读取文件这几种操作。使用MOS应该充分发挥其优点,即海量数据处理能力,优先用来存储海量的非结构化数据,比如图片、视频、文档等。
以下是MOS与文件系统的概念对比:
对象存储 MOS | 文件系统 |
---|---|
Object | 文件 |
Bucket | 主目录 |
Region | 无 |
Endpoint | 无 |
AccessKey | 无 |
无 | 多级目录 |
GetService | 获取主目录列表 |
GetBucket | 获取文件列表 |
PutObject | 写文件 |
AppendObject | 追加写文件 |
GetObject | 读文件 |
DeleteObject | 删除文件 |
无 | 修改文件内容 |
CopyObject (目的和源相同) | 修改文件属性 |
CopyObject | 复制文件 |
无 | 重命名文件 |
英文 | 中文 |
---|---|
Bucket | 存储空间 |
Object | 对象或者文件 |
Endpoint | MOS 访问域名 |
Region | 地域或者数据中心 |
AccessKey | AccessKeyId和AccessKeySecret的统称,访问密钥 |
Put Object | 简单上传 |
Post Object | 表单上传 |
Multipart Upload | 分片上传 |
Append Object | 追加上传 |
Get Object | 简单下载 |
Callback | 回调 |
Object Meta | 文件元信息。用来描述文件信息,例如长度,类型等 |
Data | 文件数据 |
Key | 文件名 |
ACL (Access Control List) | 存储空间或者文件的权限 |
说明 如果没有特殊说明,本文中出现和术语表中相同的英文和中文,表达的是相同的意思。有时候为了表述方便会混合使用。
Region表示MOS的数据中心所在的地域, Endpoint表示MOS对外服务的访问域名。本文主要介绍Region与Endpoint的对应关系。
公共云下MOS各地域Endpoint如下:
Region | Region ID | 是否支持IPv6 | 外网Endpoint | 内网Endpoint① |
---|---|---|---|---|
华东1(杭州) | MOS-cn-hangzhou | 是 | MOS-cn-hangzhou.moduyuncs.com | MOS-cn-hangzhou-internal.moduyuncs.com |
华东2(上海) | MOS-cn-shanghai | 是 | MOS-cn-shanghai.moduyuncs.com | MOS-cn-shanghai-internal.moduyuncs.com |
华北1(青岛) | MOS-cn-qingdao | 否 | MOS-cn-qingdao.moduyuncs.com | MOS-cn-qingdao-internal.moduyuncs.com |
华北2(北京) | MOS-cn-beijing | 是 | MOS-cn-beijing.moduyuncs.com | MOS-cn-beijing-internal.moduyuncs.com |
华北 3(张家口) | MOS-cn-zhangjiakou | 否 | MOS-cn-zhangjiakou.moduyuncs.com | MOS-cn-zhangjiakou-internal.moduyuncs.com |
华北5(呼和浩特) | MOS-cn-huhehaote | 是 | MOS-cn-huhehaote.moduyuncs.com | MOS-cn-huhehaote-internal.moduyuncs.com |
华北6(乌兰察布) | MOS-cn-wulanchabu | 否 | MOS-cn-wulanchabu.moduyuncs.com | MOS-cn-wulanchabu-internal.moduyuncs.com |
华南1(深圳) | MOS-cn-shenzhen | 是 | MOS-cn-shenzhen.moduyuncs.com | MOS-cn-shenzhen-internal.moduyuncs.com |
华南2(河源) | MOS-cn-heyuan | 否 | MOS-cn-heyuan.moduyuncs.com | MOS-cn-heyuan-internal.moduyuncs.com |
华南3(广州) | MOS-cn-guangzhou | 否 | MOS-cn-guangzhou.moduyuncs.com | MOS-cn-guangzhou-internal.moduyuncs.com |
西南1(成都) | MOS-cn-chengdu | 否 | MOS-cn-chengdu.moduyuncs.com | MOS-cn-chengdu-internal.moduyuncs.com |
中国(香港) | MOS-cn-hongkong | 是 | MOS-cn-hongkong.moduyuncs.com | MOS-cn-hongkong-internal.moduyuncs.com |
美国西部1(硅谷) | MOS-us-west-1 | 否 | MOS-us-west-1.moduyuncs.com | MOS-us-west-1-internal.moduyuncs.com |
美国东部1(弗吉尼亚) | MOS-us-east-1 | 否 | MOS-us-east-1.moduyuncs.com | MOS-us-east-1-internal.moduyuncs.com |
亚太东南1(新加坡) | MOS-ap-southeast-1 | 否 | MOS-ap-southeast-1.moduyuncs.com | MOS-ap-southeast-1-internal.moduyuncs.com |
亚太东南2(悉尼) | MOS-ap-southeast-2 | 否 | MOS-ap-southeast-2.moduyuncs.com | MOS-ap-southeast-2-internal.moduyuncs.com |
亚太东南3(吉隆坡) | MOS-ap-southeast-3 | 否 | MOS-ap-southeast-3.moduyuncs.com | MOS-ap-southeast-3-internal.moduyuncs.com |
亚太东南5(雅加达) | MOS-ap-southeast-5 | 否 | MOS-ap-southeast-5.moduyuncs.com | MOS-ap-southeast-5-internal.moduyuncs.com |
亚太东北1(日本) | MOS-ap-northeast-1 | 否 | MOS-ap-northeast-1.moduyuncs.com | MOS-ap-northeast-1-internal.moduyuncs.com |
亚太南部1(孟买) | MOS-ap-south-1 | 否 | MOS-ap-south-1.moduyuncs.com | MOS-ap-south-1-internal.moduyuncs.com |
欧洲中部1(法兰克福) | MOS-eu-central-1 | 否 | MOS-eu-central-1.moduyuncs.com | MOS-eu-central-1-internal.moduyuncs.com |
英国(伦敦) | MOS-eu-west-1 | 否 | MOS-eu-west-1.moduyuncs.com | MOS-eu-west-1-internal.moduyuncs.com |
中东东部1(迪拜) | MOS-me-east-1 | 否 | MOS-me-east-1.moduyuncs.com | MOS-me-east-1-internal.moduyuncs.com |
说明
①与MOS同地域的摩杜云产品可以通过内网Endpoint访问MOS。
对于支持IPv6协议的地域,当您使用IPv6地址访问外网Endpoint时,DNS服务器会自动解析对应地域的IPv6地址。
MOS.moduyuncs.com默认指向华东1(杭州)地域外网地址;MOS-internal.moduyuncs.com默认指向华东1(杭州)地域内网地址。
关于MOS域名的构成规则及使用方式,请参见MOS访问域名使用规则。
如果您是MCS用户,建议使用内网地址访问同地域的MOS。访问方式,请参见MCS实例通过MOS内网地址访问MOS资源。
若Bucket开启传输加速功能,会增加如下传输加速Endpoint:
全球加速Endpoint:地址为MOS-accelerate.moduyuncs.com。传输加速接入点分布在全球各地,全球各地的Bucket均可以使用该域名进行传输加速。
非中国内地加速Endpoint:地址为MOS-accelerate-overseas.moduyuncs.com。传输加速接入点分布在除中国内地以外的各地域,仅在中国香港及海外各地域Bucket绑定未备案的域名做CNAME指向时使用。
更多信息,请参见传输加速。
金融云下MOS各地域的Endpoint如下:
Region | Region ID | 是否支持IPv6 | 外网Endpoint | 内网Endpoint |
---|---|---|---|---|
华东1金融云 | MOS-cn-hzjbp | 否 | 无 |
MOS-cn-hzjbp-a-internal.moduyuncs.com
MOS-cn-hzjbp-b-internal.moduyuncs.com |
华东2金融云 | MOS-cn-shanghai-finance-1 | 否 | 无 | MOS-cn-shanghai-finance-1-internal.moduyuncs.com |
华南1金融云 | MOS-cn-shenzhen-finance-1 | 否 | 无 | MOS-cn-shenzhen-finance-1-internal.moduyuncs.com |
杭州金融云公网 | MOS-cn-hzfinance | 是 | MOS-cn-hzfinance.moduyuncs.com | MOS-cn-hzfinance-internal.moduyuncs.com |
上海金融云公网 | MOS-cn-shanghai-finance-1-pub | 否 | MOS-cn-shanghai-finance-1-pub.moduyuncs.com | MOS-cn-shanghai-finance-1-pub-internal.moduyuncs.com |
深圳金融云公网 | MOS-cn-szfinance | 是 | MOS-cn-szfinance.moduyuncs.com | MOS-cn-szfinance-internal.moduyuncs.com |
MOS会为每一个存储空间(Bucket)分配默认的访问域名,本文介绍MOS访问域名的构成规则及使用方式。
针对MOS的网络请求,除了GetService这个API以外,其他所有请求的域名都是由带有指定Bucket信息的三级域名组成的。
访问域名结构:BucketName.Endpoint。BucketName为您的存储空间名称,Endpoint为存储空间对应的地域域名。
Endpoint分内网、外网访问域名以及传输加速域名。例如华东1(杭州)地域的访问域名如下:
外网Endpoint:https://MOS-cn-hangzhou.moduyuncs.com
内网Endpoint:https://MOS-cn-hangzhou-internal.moduyuncs.com
传输加速全球加速Endpoint:https://MOS-accelerate.moduyuncs.com。
传输加速非中国内地加速Endpoint:https://MOS-accelerate-overseas.moduyuncs.com
内网、外网访问域名可直接使用,无需额外配置,而传输加速域名使用前需先开启Bucket的传输加速功能。详情请参见
设置传输加速。
说明
MOS以HTTP RESTful API的形式对外提供服务,当访问不同的地域(Region)时,需要不同的访问域名。
Region和Endpoint对照表请参见访问域名和数据中心。
您也可以通过绑定自定义域名或绑定传输加速域名,将MOS的外网访问域名替换为您的自有域名。
外网指的是互联网。通过外网访问产生的流入流量(写)是免费的,流出流量(读)是收费的。
说明 MOS费用详情请参见MOS产品定价和计量项和计费项。
外网访问MOS有如下两种方式:
访问方式一:访问时以URL的形式来表示MOS的资源。MOS的URL构成如下:
< Schema>://< Bucket>.< 外网Endpoint>/< Object>
Schema:HTTP或者为HTTPS。
Bucket:MOS存储空间名称。
外网Endpoint:Bucket所在数据中心供外网访问的Endpoint,
各地域Endpoint详情请参见访问域名和数据中心。
Object:上传到MOS上的文件的访问路径。
示例:如果您的Region为华东1(杭州),Bucket名称为examplebucket,
Object访问路径为example/example.txt,那么您的外网访问地址为https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/example/example.txt。
注意
此域名仅当文件支持匿名访问时使用,若文件为私有,则还需要增加签名信息。
MOS访问域名需携带Object访问路径才可以被访问,若仅访问域名,例如examplebucket.MOS-cn-hangzhou.moduyuncs.com,
会有报错提示。若您希望直接访问MOS访问域名,可以通过静态网站托管来实现。
您还可以直接将Object的URL放入HTML中使用,如下所示:
< img class="img-responsive"src="https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/example/example.png" />
访问方式二: 通过MOS SDK配置外网访问域名。
MOS SDK会对您的每一个操作拼接访问域名。但您在对不同地域的Bucket进行操作的时候需要设置不同的Endpoint。
以Java SDK为例,对华东1的Bucket进行操作时,需要在对类实例化时设置Endpoint:
String accessKeyId = "< key>";
String accessKeySecret = "< secret>";
String endpoint = "MOS-cn-hangzhou.moduyuncs.com";
MOSClient client = new MOSClient(endpoint, accessKeyId, accessKeySecret);
内网指的是摩杜云同地域产品之间的内部通信网络, 例如您通过MCS云服务器访问同地域的MOS服务。 内网产生的流入和流出流量均免费,但是请求次数仍会计费。
说明 MOS费用详情请参见MOS服务价格页和计量项和计费项。
内网访问MOS有如下两种方式:
访问方式一:在访问的时候以URL的形式来表示MOS的资源。MOS的URL构成如下。
< Schema>://< Bucket>.< 内网Endpoint>/< Object>
Schema:HTTP或者为HTTPS。
Bucket:MOS存储空间名称。
内网Endpoint:Bucket所在数据中心供同地域MCS访问的内网Endpoint,各地域Endpoint详情请参见访问域名和数据中心。
Object:上传到MOS上的文件的访问路径。
示例:如您的Bucket名称为examplebucket,Region为华东1(杭州),Object名称为example/example.txt,那么您的内网访问地址为https://examplebucket.MOS-cn-hangzhou-internal.moduyuncs.com/example/example.txt。
访问方式二:通过MCS使用MOS SDK配置内网Endpoint。
以Java SDK为例,对华东1地域的Bucket进行操作时,需要将endpoint设置为华东1地域的内网Endpoint。
String accessKeyId = "< key>";
String accessKeySecret = "< secret>";
String endpoint = "MOS-cn-hangzhou-internal.moduyuncs.com";
MOSClient client = new MOSClient(endpoint, accessKeyId, accessKeySecret);
同一个Region的MCS和MOS之间内网互通,不同Region的MCS和MOS之间内网不互通。例如您的MOS有两个Bucket,并且购买了华北2(北京)的MCS:
其中一个Bucket名称为beijingres,Region为华北2(北京),那么在华北2的MCS中可以使用https://beijingres.MOS-cn-beijing-internal.moduyuncs.com来访问beijingres的资源。
另外一个Bucket名称为qingdaores,Region为华北1(青岛),那么在华北2的MCS用内网地址https://qingdaores.MOS-cn-qingdao-internal.moduyuncs.com是无法访问MOS的,必须使用外网地址https://qingdaores.MOS-cn-qingdao.moduyuncs.com。
MOS传输加速支持数据上传、下载加速,可优化跨国、跨洋数据上传、下载体验。使用传输加速域名前,需先开启传输加速功能。开启后,您只需将外网Endpoint替换为传输加速Endpoint,即可实现数据传输加速。
以全球加速Endpoint为例,通过浏览器访问位于杭州的存储空间test根目录下公共读文件myphoto.jpg时:
不使用传输加速时的文件URL:https://test.MOS-cn-hangzhou.moduyuncs.com/myphoto.jpg。
使用传输加速时的文件URL:https://test.MOS-accelerate.moduyuncs.com/myphoto.jpg。
更多关于传输加速功能的介绍请参见传输加速。
IPv6是互联网工程任务组IETF(Internet Engineering Task
Force)设计的用于替代现行版本IP协议(IPv4)的下一代IP协议,它可以让地球上的每一粒沙子都拥有地址。目前MOS已支持通过IPv6、IPv4双栈域名访问。
您的IPv6、IPv4客户端均可以使用MOS提供的统一双栈域名访问您的存储空间。您的DNS服务器将按照您使用的协议版本解析对应协议的MOS服务器地址给您。例如杭州地域的Endpoint为:cn-hangzhou.osmoduyuncs.com,若您的Bucket名称为myiotdata,则IPv6、IPv4客户端都可通过https://myiotdata.cn-hangzhou.MOS.moduyuncs.com访问。
目前可以通过IPv6协议访问的Endpoint如下:
华北2(北京):https://cn-beijing.MOS.moduyuncs.com
华东2(上海):https://cn-shanghai.MOS.moduyuncs.com
华东1(杭州):https://cn-hangzhou.MOS.moduyuncs.com
华南1(深圳):https://cn-shenzhen.MOS.moduyuncs.com
中国香港:https://cn-hongkong.MOS.moduyuncs.com
华北5(呼和浩特):https://cn-huhehaote.MOS.moduyuncs.com
云下机房设备或异地MCS实例希望通过内网访问MOS时, 可通过CEN、高速通道、专线、VPN等连接MOS所在地域内网网络, 并配置指向MOS内网网段的路由。本文列出MOS各地域的内网网段。
警告
MOS为每个Region内网VIP网段划分了固定地址段,您按Region配置路由时必须按照下表地址配置完整的路由,否则可能会造成网络不通。
使用MCS实例通过内网访问MOS时,安全组中不能禁止以下任一VIP网段。
Region | Region ID | VPC网络Endpoint | VIP网段 |
---|---|---|---|
华东1(杭州) | MOS-cn-hangzhou | MOS-cn-hangzhou-internal.moduyuncs.com |
100.118.28.0/24 100.114.102.0/24 100.98.170.0/24 100.118.31.0/24 |
华东2(上海) | MOS-cn-shanghai | MOS-cn-shanghai-internal.moduyuncs.com |
100.98.35.0/24 100.98.110.0/24 100.98.169.0/24 100.118.102.0/24 |
华北1(青岛) | MOS-cn-qingdao | MOS-cn-qingdao-internal.moduyuncs.com |
100.115.173.0/24 100.99.113.0/24 100.99.114.0/24 100.99.115.0/24 |
华北2(北京) | MOS-cn-beijing | MOS-cn-beijing-internal.moduyuncs.com |
100.118.58.0/24 100.118.167.0/24 100.118.170.0/24 100.118.171.0/24 100.118.172.0/24 100.118.173.0/24 |
华北 3(张家口) | MOS-cn-zhangjiakou | MOS-cn-zhangjiakou-internal.moduyuncs.com |
100.118.90.0/24 100.98.159.0/24 100.114.0.0/24 100.114.1.0/24 |
华北5(呼和浩特) | MOS-cn-huhehaote | MOS-cn-huhehaote-internal.moduyuncs.com |
100.118.195.0/24 100.99.110.0/24 100.99.111.0/24 100.99.112.0/24 |
华北6(乌兰察布) | MOS-cn-wulanchabu | MOS-cn-wulanchabu-internal.moduyuncs.com |
100.114.11.0/24 100.114.12.0/24 100.114.100/24 100.118.214.0/24 |
华南1(深圳) | MOS-cn-shenzhen | MOS-cn-shenzhen-internal.moduyuncs.com |
100.118.78.0/24 100.118.203.0/24 100.118.204.0/24 100.118.217.0/24 |
华南2(河源) | MOS-cn-heyuan | MOS-cn-heyuan-internal.moduyuncs.com |
100.98.83.0/24 100.118.174.0/24 |
华南3(广州) | MOS-cn-guangzhou | MOS-cn-guangzhou-internal.moduyuncs.com |
100.115.33.0/24 100.114.101.0/24 |
西南1(成都) | MOS-cn-chengdu | MOS-cn-chengdu-internal.moduyuncs.com |
100.115.155.0/24 100.99.107.0/24 100.99.108.0/24 100.99.109.0/24 |
中国(香港) | MOS-cn-hongkong | MOS-cn-hongkong-internal.moduyuncs.com |
100.115.61.0/24 100.99.103.0/24 100.99.104.0/24 100.99.106.0/24 |
美国西部1(硅谷) | MOS-us-west-1 | MOS-us-west-1-internal.moduyuncs.com | 联系摩杜云客服咨询 |
美国东部1(弗吉尼亚) | MOS-us-east-1 | MOS-us-east-1-internal.moduyuncs.com |
100.115.60.0/24 100.99.100.0/24 100.99.101.0/24 100.99.102.0/24 |
亚太东南1(新加坡) | MOS-ap-southeast-1 | MOS-ap-southeast-1-internal.moduyuncs.com |
100.118.219.0/24 100.99.213.0/24 100.99.116.0/24 100.99.117.0/24 |
亚太东南2(悉尼) | MOS-ap-southeast-2 | MOS-ap-southeast-2-internal.moduyuncs.com | 联系摩杜云客服咨询 |
亚太东南3(吉隆坡) | MOS-ap-southeast-3 | MOS-ap-southeast-3-internal.moduyuncs.com |
100.118.165.0/24 100.99.125.0/24 100.99.130.0/24 100.99.131.0/24 |
亚太东南5(雅加达) | MOS-ap-southeast-5 | MOS-ap-southeast-5-internal.moduyuncs.com | 联系摩杜云客服咨询 |
亚太东北1(日本) | MOS-ap-northeast-1 | MOS-ap-northeast-1-internal.moduyuncs.com | 联系摩杜云客服咨询 |
亚太南部1(孟买) | MOS-ap-south-1 | MOS-ap-south-1-internal.moduyuncs.com |
100.118.211.0/24 100.99.122.0/24 100.99.123.0/24 100.99.124.0/24 |
欧洲中部1(法兰克福) | MOS-eu-central-1 | MOS-eu-central-1-internal.moduyuncs.com | 联系摩杜云客服咨询 |
英国(伦敦) | MOS-eu-west-1 | MOS-eu-west-1-internal.moduyuncs.com | 联系摩杜云客服咨询 |
中东东部1(迪拜) | MOS-me-east-1 | MOS-me-east-1-internal.moduyuncs.com | 联系摩杜云客服咨询 |
当您通过MOS内网地址访问MOS资源时,不收取流量费用。本文介绍MCS实例如何通过MOS内网地址访问MOS资源。
通过MOS内网地址访问MOS资源有以下两种方式:
与MOS同地域MCS实例可以直接通过内网访问有权限的MOS资源。
与MOS不同地域的MCS实例或公网用户可通过配置MCS反向代理,间接实现通过MOS内网地址访问MOS资源。
通过MOS控制台获取
登录 MOS管理控制台。
,打开指定Bucket的概览页面,在访问域名区域查看Bucket的Endpoint和Bucket域名,如下图所示。
通过固定格式获取
MOS的访问地址为固定格式:BucketName.Endpoint。其中,
BucketName为您的存储空间名称,Endpoint为存储空间所在的地域对应的访问域名。详情请参见MOS访问域名使用规则。
与MOS同地域的MCS实例可以通过以下方式使用内网访问MOS资源:
通过URL直接访问MOS资源
您可以直接使用MOS资源的内网地址访问有权限的MOS资源。例如,杭州地域某Bucket名为test,根目录下有个Object名为1.jpg,处于公共读状态。此时,杭州地域的MCS实例均可以使用http://test.MOS-cn-hangzhou-internal.moduyuncs.com/1.jpg访问此Object。因此
,您可以将MOS资源的访问URL嵌入到您的网站中,提供给同地域的MCS用户或已通过专线接入到与MOS同地域内网的用户访问。
警告 为了您的数据安全,不建议您将MOS资源设置为公共读或公共读写 ,您可以通过Bucket Policy授权给指定用户访问您的资源。
通过MOSbrowser访问MOS资源
您可以在配置MOSbrowser访问参数的时候,将Endpoint设置为自定义,并填写MOS的内网Endpoint地址。详情请参见MOSbrowser。
通过MOSutil访问MOS资源
您可以在配置MOSutil访问参数的时候,将Endpoint设置为MOS的内网Endpoint地址。详情请参见MOSutil。
通过SDK访问MOS资源
SDK初始化client的时候,Endpoint配置MOS内网对应的Endpoint即可。
Java SDK
String endpoint = "http://MOS-cn-hangzhou-internal.moduyuncs.com";//以华东 1为例
String accessKeyId = "< yourAccessKeyId>";
String accessKeySecret = "< yourAccessKeySecret>";
MOSClient client = new MOSClient(endpoint, accessKeyId, accessKeySecret);
更多详情请参见Java SDK初始化。
PHP SDK
$accessKeyId = "< yourAccessKeyId>";
$accessKeySecret = "< yourAccessKeySecret>";
$endpoint = "< 您选定的MOS数据中心访问域名,例如http://MOS-cn-hangzhou-internal.moduyuncs.com>";
更多详情请参见PHP SDK初始化。
Python SDK
auth = MOS2.Auth('< yourAccessKeyId>', '< yourAccessKeySecret>')
endpoint = 'http://MOS-cn-hangzhou-internal.moduyuncs.com' # 您选定的MOS数据中心访问域名,假设Bucket处于杭州地域
bucket = MOS2.Bucket(auth, endpoint, 'BucketName')
更多详情请参见Python SDK初始化。
.NET SDK
const string accessKeyId = "< yourAccessKeyId>";
const string accessKeySecret = "< yourAccessKeySecret>";
const string endpoint = "http://MOS-cn-hangzhou-internal.moduyuncs.com";
var MOSClient = new MOSClient(endpoint, accessKeyId, accessKeySecret);
更多详情请参见.NET SDK初始化。
C SDK
ptions->config = MOS_config_create(options->pool);
aos_str_set(&options->config->endpoint, "http://MOS-cn-hangzhou-internal.moduyuncs.com");
aos_str_set(&options->config->access_key_id, "< yourAccessKeyId>");
aos_str_set(&options->config->access_key_secret, "< yourAccessKeySecret>");
options->config->is_cname = 0;
options->ctl = aos_http_controller_create(options->pool, 0);
更多详情请参见C SDK初始化。
不同地域的MCS实例或外网用户是无法直接通过MOS内网地址访问MOS资源的,但是您可以通过配置MCS反向代理来间接实现:
1.在MOS同地域创建一个有公网地址的MCS实例。详情请参见创建MCS实例。
2.在MCS实例上配置反向代理。详情请参见基于CentOS的MCS实例实现MOS反向代理和基于Ubuntu的MCS实例实现MOS反向代理。
3.MOS配置Bucket Policy,允许该MCS实例的内网地址访问MOS资源。详情请参见使用Bucket Policy授权其他用户访问MOS资源。
以上步骤配置完成后,您的用户将通过您的MCS公网地址访问您的MOS资源。当用户访问时,MCS实例通过内网向MOS请求资源,之后再返回给用户。
本文介绍在创建MOS的存储空间(Bucket)时如何选择合适的地域。
选择MOS地域时,通常需要考虑以下几个方面:
用户所在地
云产品之间的关系
资源价格
产品功能
如果您的MOS资源需要开放给其他用户访问,且希望用户有良好的访问体验,就必须考虑用户访问时的网络延迟。除了通信线路的质量外,距离是影响网络延迟的一个重要因素。
例如以杭州的用户为例,使用ping命令可以测试出其访问不同地域MOS数据中心的延迟情况。
可以看出,距离访问的数据中心越远,数据返回所需时间越长。所以,在选择地域的时候,尽量考虑离用户更近的地域。
如果您需要将MOS作为其他摩杜云产品的数据源,则需要根据其他云产品的地域去选择MOS的地域。当 其他云产品和MOS在同一地域时,可以通过VPC地址访问MOS。访问时不会产生流量费用,且访问速度较外网会更快。
因各地域的优惠政策不同,某些地域的资源包价格会更优惠。选择MOS地域的时候可优先考虑资源包价格更优惠的地域。
MOS的新功能在发布初期会选择部分地域进行公测,若您希望试用这些新功能, 需在指定地域创建存储空间。MOS产品功能发布记录请参见 新功能发布记录。
对象存储MOS提供标准、低频访问、归档、冷归档四种存储类型,全面覆盖从热到冷的各种数据存储场景。
说明 各存储类型的定价,请参见MOS产品定价。各存储类型的计费方式,请参见存储费用。
提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问。适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。提供标准存储-本地冗余(LRS)和标准存储-同城冗余(ZRS)两种数据冗余存储方式。
标准存储-本地冗余(LRS)
采用数据冗余存储机制,将每个对象的不同冗余存储在同一个可用区内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
标准存储-同城冗余(ZRS)
采用多可用区(AZ)机制,将用户的数据分散存放在同一地域(Region)的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。
提供高持久性、较低存储成本的对象存储服务。有最低存储时间(30天)和最小计量单位(64
KB)要求。支持数据实时访问,访问数据时会产生数据取回费用,适用于较低访问频率(平均每月访问频率1到2次)的业务场景。提供低频访问-本地冗余(LRS)和低频访问-同城冗余(ZRS)两种数据冗余存储方式。
低频访问-本地冗余(LRS)
采用数据冗余存储机制,将每个对象的不同冗余存储在同一个可用区内多个设施的多个设备上,确保硬件失效时的数据持久性和可用性。
低频访问-同城冗余(ZRS)
采用多可用区(AZ)机制,将用户的数据分散存放在同一地域(Region)的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。
提供了高持久性、极低存储成本的对象存储服务。有最低存储时间(60天)和最小计量单位(64 KB)要求。数据需解冻(约1分钟) 后访问,解冻会产生数据取回费用。适用于数据长期保存的业务场景,例如档案数据、医疗影像、科学资料、影视素材等。
提供了高持久性的对象存储服务,存储费用在四种存储类型中最低。 有最低存储时间(180天)和最小计量单位(64 KB)要求。数据需解冻后访问, 解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用。 适用于需要超长时间存放的极冷数据,例如因合规要求需要长期留存的数据、 大数据及人工智能领域长期积累的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等业务场景。
说明 冷归档存储类型已在华北1(青岛)、华北2(北京)、华北3(张家口)、 华东1(杭州)、华东2(上海)、华南1(深圳)、西南1(成都)、中国香港、 澳大利亚(悉尼)、新加坡、美国(硅谷)、德国(法兰克福)、 马来西亚(吉隆坡)、印度尼西亚(雅加达)、印度(孟买)、 阿联酋(迪拜)地域公测,请联系摩杜云技术支持申请试用。
对比指标 | 标准存储-本地冗余(LRS) | 标准存储-同城冗余(ZRS) | 低频访问-本地冗余(LRS) | 低频访问-同城冗余(ZRS) | 归档存储类型 | 冷归档存储类型 |
---|---|---|---|---|---|---|
数据设计持久性 |
99.99999 9999%(11个9) |
99.9999 999999%(12个9) |
99.999 999999%(11个9) |
99.999 9999999%(12个9) |
99.999 999999%(11个9) |
99.999 999999%(11个9) |
服务可用性 | 99.99% | 99.995% | 99.00% | 99.50% | 99.00%(数据解冻之后) | 99.00%(数据解冻之后) |
最小计量单位 | 无 | 无 | 64 KB | 64 KB | 64 KB | 64 KB |
最低存储时间 | 无 | 无 | 30天 | 30天 | 60天 | 180天 |
数据取回费用 | 无 | 无 | 按实际获取的数据量收取,单位GB。 | 按实际获取的数据量收取,单位GB。 | 按实际获取的数据量收取,单位GB。 | 按实际解冻时选择的数据取回能力及数据大小收取,单位GB。 |
数据访问特点 | 实时访问,毫秒延迟。 | 实时访问,毫秒延迟。 | 实时访问,毫秒延迟。 | 实时访问,毫秒延迟。 | 数据需要先解冻,解冻完成后才能读取。解冻时间需要1分钟。 |
数据需要先解冻,解冻完成后才能读取。 不同优先级的首字节取回能力如下: 高优先级:1小时以内 标准:2~5小时 批量:5~12小时 |
图片处理 | 支持 | 支持 | 支持 | 支持 | 支持,但需要先解冻。 | 支持,但需要先解冻。 |
适用场景 | 各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。例如程序下载、移动应用等。 | 各种社交、分享类的图片、音视频应用、大型网站、大数据分析等,且对持久性和可用性有更高要求的业务场景。例如企业重要文件、敏感信息等。 | 较低访问频率(平均每月访问频率1到2次)的业务场景。例如热备数据、监控视频数据等。 | 较低访问频率(平均每月访问频率1到2次),且对持久性和可用性有更高要求的业务场景。例如企业业务数据、近期的医疗档案等。 | 数据长期保存的业务场景。例如档案数据、医疗影像、科学资料、影视素材等 |
需要超长时间存放的极冷数据。 例如因合规要求需要长期留存的数据、 大数据及人工智能领域长期积累的原始数据、 影视行业长期留存的媒体资源、在线教育行业的归档视频等。 |
说明 数据取回费用中的数据是从底层分布式存储系统读取的数据量,在公网传输的数据量会计入到流出流量的计费项中。
MOS支持标准存储、低频访问、归档存储、冷归档存储四种存储类型,您可以根据需要随时转换文件(Object)的存储类型。
MOS支持通过以下方式转换Object的存储类型:
方式一:通过生命周期规则自动转换Object的存储类型
方式二:通过控制台、MOS工具、SDK手动转换Object的存储类型
MOS生命周期管理(Lifecycle)提供Object Transition机制,支持自动转换文件存储类型。
基于生命周期规则的存储类型转换规则
本地冗余(LRS)
本地冗余类型文件转换规则如下:
标准存储(LRS)类型可转换为低频访问(LRS)、归档存储(LRS)和冷归档存储(LRS)类型。
低频访问(LRS)类型可转换为归档存储(LRS)和冷归档存储(LRS)类型。
归档存储(LRS)类型转换为冷归档存储(LRS)类型。
同城冗余(ZRS)
同城冗余类型文件转换规则:仅支持标准存储(ZRS)类型转换为低频访问(ZRS)类型。
基于生命周期规则的存储类型转换示例
例如Bucket的冗余类型为本地冗余,对Bucket内指定前缀的Object,可配置如下Lifecycle策略。
策略说明如下:
Object存储30天后,自动转换为低频访问类型。
Object存储180天后,自动转换为归档存储类型。
Object存储360天后,自动转换为冷归档存储类型。
Object存储超过720天后,Object会被自动删除。
说明
如果一个Bucket同时配置了Object保留指定周期后转换为低频访问、Object保留指定周期后转换为归档存储、Object保留指定周期后转换为冷归档存储和Object保留指定周期后删除的策略,多条策略同时设置时,转换周期必须满足以下条件:
转换为低频访问的周期 转换为归档的周期 转换为冷归档的周期 指定周期后删除
生命周期规则配置方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
命令行工具 | 命令行工具,性能好。 |
Java SDK | 丰富、完整的各类语言SDK demo。 |
您可以通过CopyObject接口,将Object覆写为指定的存储类型。若转换的Object是低频访问、归档存储或冷归档存储类型,且存储未满指定周期的,会产生存储不足规定时长容量费用。更多信息,请参见存储费用。
基于CopyObject的存储类型转换规则
本地冗余(LRS)
各存储类型之间可任意转换。
说明 归档或冷归档类型的文件需要解冻(Restore)之后才能修改存储类型。关于如何解冻文件,请参见解冻文件。
同城冗余(ZRS)
仅支持标准存储(ZRS)和低频访问(ZRS)之间互相转换。
基于CopyObject的存储类型转换操作方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK | 丰富、完整的各类语言SDK demo。 |
当Object被转换为低频访问、归档存储和冷归档存储类型后,需注意如下事项:
最小计量空间
对于小于64 KB的Object,会按照64 KB计算空间大小。
最短存储周期
低频访问类型的Object需要至少保存30天;归档存储类型的Object需至少保存60天;冷归档存储类型的Object需至少保存180天。若存储未满指定周期,会收取存储不足规定时长容量费用。
通过生命周期自动转换Object存储类型
通过生命周期转换Object存储类型时,不会重新计算Object的存储时间。例如a.txt作为标准存储类型已经在MOS中存储了10天,通过生命周期转换为低频访问类型,继续存储20天即满足最少存储30天的要求。详情请参见常见问题。
手动转换Object存储类型
手动转换Object存储类型时,会重新计算Object的存储时间。例如a.txt作为标准存储类型已经在MOS中存储了10天,手动将Object转换为低频访问类型,则需继续存储30天才满足最少存储30天的要求。
解冻时间
归档存储和冷归档存储类型Object恢复为可读取状态需要一定的解冻时间,如果业务场景需要实时读取Object时,不建议将Object转换成归档存储或冷归档存储类型。
数据取回费用
访问低频访问类型的Object时,会根据实际访问量额外收取数据取回费用;解冻归档存储和冷归档存储类型的Object会额外收取数据解冻费用,此费用与流出流量费用是两个独立计费项。如果Object每月平均访问频率高于1次,Object转换成低频访问、归档存储或冷归档存储类型后的使用成本可能高于标准存储类型。
临时存储费用(公测期间暂不收取)
冷归档存储类型Object在数据解冻时会生成一份标准存储类型的Object副本用于访问。该Object在解冻时间结束前会以标准存储的存储费率计算临时存储费用。
在上传数据(例如文档、图片、音视频等)到MOS之前, 您需要在MOS所支持的地域中创建一个存储空间(Bucket), 然后将无限数量的对象(Object)上传到该Bucket中。
Bucket和Object都是MOS资源,MOS提供了相关的API接口来管理这些资源。例如您可以通过API接口来创建Bucket并上传Object,您也可以通过控制台来完成这些操作。控制台使用MOS
API接口发送请求到MOS。
同一个Bucket的内部是扁平的,没有文件系统的目录等概念,所有的Object都直接隶属于其对应的Bucket。Bucket的名称在MOS范围内全局唯一,且创建之后无法修改,详情请参见存储空间(Bucket)命名规范。
下表汇总了MOS支持的Bucket相关操作。关于Object的操作,请参见 对象概述。
操作 | 说明 |
---|---|
创建存储空间 |
在上传Object到MOS之前,您需要创建一个用
于存储文件的Bucket。Bucket具有各种配 置属性,包括地域、访问权限以及其他元数据。 创建Bucket时,您需要综合考虑时延、成本 及合规等要求选择一个合适的地域,详情 请参见如何选择MOS地域。有关MOS支持的 地域列表,请参见访问域名和数据中心。 |
设置存储空间读写权限(ACL) | 您可以在创建存储空间(Bucket)时设置存储空间的访问权限(ACL), 也可以在创建Bucket后根据自己的业务需求修改存储空间的ACL,该操作只有存储空间的拥有者可以执行。 |
获取存储空间地域信息 | 您可以通过MOS API的GetBucketLocation接口获取存储空间(Bucket)所属的地域,即数据中心的物理位置信息。 |
列举存储空间 | 您可以通过设置不同的列举条件,列举某个地域下的全部或部分Bucket。 |
存储空间清单 | 您可以通过清单功能获取Bucket中指定Object的数量、大小、 存储类型、加密状态等信息。相对于GetBucket (ListObjects)接口,在海量Object的列举场景中,建议您优先使用清单功能。 |
请求者付费模式 | 请求者付费模式是指由请求者支付访问Bucket内数据时产生的费用, 而Bucket拥有者仅支付存储费用。当您希望共享数据,但又不希望支付因共享数据产生的额外费用时,您可以开启此功能。 |
绑定自定义域名 | 文件上传至Bucket后,MOS会自动生成文件URL,您可以直接通过文件 URL访问该文件。若您希望通过自定义域名访问这些文件, 需要将自定义域名绑定至文件所在的Bucket,并添加CNAME记录。 |
传输加速 | MOS传输加速利用全球分布的云机房,将全球各地用户对您Bucket的访问, 经过智能路由解析至就近的接入点,使用优化后的网络及协议,为云存储互联网的上传、下载提供端到端的加速方案。 |
跨域资源共享 | 跨域资源共享CORS(CrMOS-Origin Resource Sharing)简称跨域访问, 是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,使得跨域数据传输得以安全进行。 |
存储空间标签 | 您可以通过Bucket的标签功能, 对Bucket进行分类管理,如列举带有指定标 签的Bucket、对拥有指定标签的Bucket设置访问权限等。 |
事件通知 | 为Bucket配置事件时可自定义Bucket内 您关注的Object,当这些Object发生指定事件时,您可以第一时间收到通知。 |
生命周期 | 生命周期规则允许您定期将Bucket内的Object转储为低频访问、归档存储或冷归档存储类型,或将过期的Object和碎片删除,从而节省存储费用。 |
实时日志查询 | 开启实时日志查询后,您可以追踪Bucket的访问请求。 帮助您完成操作审计、访问统计、异常事件回溯和问题定位等工作,提升您的工作效率并更好地帮助您基于数据进行决策。 |
合规保留策略 | MOS支持针对Bucket设置基于时间的合规保留策略。当策略锁定后,用户可以在Bucket中上传和读取Object。 但是在Object的保留时间到期之前,任何用户都无法删除Object和策略。Object的保留时间到期后,才可以删除Object。 |
Bucket Policy | MOS支持针对Bucket设置基于时间的合规保留策略。当策略锁定后,用户可以在Bucket中上传和读取Object。 但是在Object的保留时间到期之前,任何用户都无法删除Object和策略。Object的保留时间到期后,才可以删除Object。 |
跨区域复制 | 跨区域复制是指将源Bucket中的Object的创建、更新和删除等操作自动、异步(近实时)地复制到不同地域的目标Bucket。 |
版本控制 | 版本控制是针对Bucket级别的数据保护功能。 开启版本控制后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。 您在错误覆盖或者删除Object后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。 |
静态网站托管 | 静态网站是指所有的网页都由静态内容构成,包括客户端执行的脚本(例如JavaScript)。 您可以通过静态网站托管功能将您的静态网站托管到MOS的Bucket,并使用Bucket的访问域名访问这个网站。 |
删除存储空间 | 如果您不再需要保留某个Bucket时,可将其删除。 |
存储空间(Bucket)是用于存储对象(Object)的容器,所有的Object都必须隶属于某个Bucket。 Bucket具有各种配置属性,包括地域、访问权限、存储类型等。您可以根据实际需求,创建不同类型的Bucket来存储不同的数据。
同一摩杜云账号在同一地域内创建的Bucket总数不能超过100个。Bucket创建后,其名称无法修改。Bucket命名规则如下:
Bucket名称在MOS范围内必须全局唯一。
只能包括小写字母、数字和短划线(-)。
必须以小写字母或者数字开头和结尾。
长度为3~63个字符。
Bucket名称的正确示例如下:
examplebucket1
test-bucket-2021
moduyun-MOS-bucket
Bucket名称的错误示例以及错误的原因如下:
Examplebucket1(包含了大写字母)
test_bucket_2021(包含了下划线)
moduyun-MOS-bucket-(结尾包含了短划线)
在上传文件(Object)到 MOS 之前,您需要使用 MOS API 中的 PutBucket 接口来创建一个用于存储文件的存储空间(Bucket), 存储空间具有各种配置属性,包括地域、访问权限以及其他元数据。
说明 创建存储空间的 API 接口的详细信息请参见 PutBucket。
操作方式 | 说明 |
---|---|
控制台 | Web 应用程序,直观易用 |
图形化工具 MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK |
丰富、完整的语言 SDK demo |
同一摩杜云账号在同一地域内创建的存储空间总数不能超过 100 个。
每个存储空间的名字全局唯一,否则会创建失败。
存储空间的名称需要符合命名规范。
存储空间一旦创建成功,名称和所处地域不能修改。
您可以在创建存储空间的时候设置相应的存储空间权限(ACL), 也可以在创建之后修改 ACL。如果不设置 ACL,默认值为私有。更多信息,请参见设置存储空间读写权限。
您可以在创建存储空间(Bucket)时设置存储空间的访问权限(ACL),也可以在创建Bucket后根据自己的业务需求修改存储空间的ACL,该操作只有存储空间的拥有者可以执行。
存储空间有三种访问权限:
权限值 | 中文名称 | 权限对访问者的限制 |
---|---|---|
public-read-write | 公共读写 |
任何人(包括匿名访问者)都可以对该存储空间内文件进行读写操作。
警告 互联网上任何用户都可以对该 Bucket 内的文件进行访问, 并且向该 Bucket 写入数据。这有可能造成您数据的外泄以及费用激增, 若被人恶意写入违法信息还可能会侵害您的合法权益。 除特殊场景外,不建议您配置公共读写权限。 |
public-read | 公共读 |
只有该存储空间的拥有者可以对该存储空间内的文件进行写操作,
任何人(包括匿名访问者)都可以对该存储空间中的文件进行读操作。
警告 互联网上任何用户都可以对该 Bucket 内文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。 |
private | 私有 | 只有该存储空间的拥有者可以对该存储空间内的文件进行读写操作,其他人无法访问该存储空间内的文件。 |
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
图形化工具MOSbrowser | 图形化工具,易操作。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo。 |
您可以通过MOS API的GetBucketLocation接口获取存储空间(Bucket)所属的地域,即数据中心的物理位置信息。
说明 获取存储空间地域信息的API详情请参考GetBucketLocation。
您可以通过返回的Location字段查看存储空间所在的地域信息, 例如:华东1(杭州)的Location字段信息显示为MOS-cn-hangzhou。MOS的地域信息请参见访问域名。
操作方式 | 说明 |
---|---|
控制台 | 进入控制台后在存储空间属性中直接显示地域信息 |
图形化工具MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK
Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK |
丰富、完整的各类语言SDK demo |
您可以通过设置不同的列举条件,列举某个地域下的所有存储空间(Bucket)、指定前缀的Bucket等。
有关列举存储空间的API接口详细信息,请参见GetService (ListBuckets)。
不支持使用传输加速Endpoint列举Bucket。有关传输加速的更多信息,请参见
传输加速。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
图形化工具MOSbrowser | 图形化工具,易操作。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK
Python SDK C++ SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo。 |
您可以通过MOS的PutBucketLifecycle接口设置生命周期规则(Lifecycle), 定期将对象(Object)转储为低频访问、归档存储或冷归档存储类型,或将过期的Object和碎片删除,从而节省存储费用。
说明 设置生命周期的API详细信息可参考PutBucketLifecycle。
生命周期规则可以定期将非热门数据转换为低频访问、归档存储或冷归档存储,将不再需要访问的数据删除,让您更高效地管理您存储的数据,节省大量人力及存储成本。例如:
某医疗机构的医疗档案,上传至MOS后半年内需要偶尔访问,半年后基本不再访问。可以通过设置生命周期规则,将已上传180天的医疗档案转为归档存储。
某公司服务热线的录音文件,上传至MOS后2个月内,需要作为数据统计及核查的依据,2个月后偶尔访问,半年后基本不再访问,2年后数据不再需要存储。可以通过设置生命周期规则,设置录音文件上传60天后转为低频访问存储,180天后转为归档存储,730天后删除。
某存储空间内有大量文件需要全部删除,但是手动删除每次仅可以删除最多1000个文件,比较麻烦。此时可以配置一条匹配整个Bucket的生命周期规则,设置一天后删除所有文件。此Bucket内的数据会在第二天被全部删除。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具 | 命令行工具,性能好 |
Java SDK |
丰富、完整的各类语言 SDK demo |
请求费用
成功的生命周期异步请求操作会记录在访问日志中并产生相关的请求次数费用,失败的操作不会被记录和收费。
不足规定时长存储费用
通过生命周期将文件存储类型转换为低频或归档,且在不足规定时长前删除文件
低频访问类型最低存储时间(30天)和归档类型最低存储时间(60天)均以文件存储在MOS的Last
Modified时间开始计算。例如标准类型文件在其创建10天后,通过生命周期将其转换为低频访问类型,过了20天后将其转换为归档类型,再过5天将其删除。此时会产生25天的归档存储不足规定时长容量费用。
通过生命周期将文件存储类型转换为冷归档,且在不足规定时长前删除文件
冷归档的最低存储时间(180天)以文件转为冷归档类型的时间开始计算。例如标准类型文件在其创建10天后,通过生命周期规则转换为冷归档存储类型,再过1天将其删除。此时会产生179天的冷归档存储不足规定时长容量费用。
有关低频访问、归档存储以及冷归档存储不足规定时长容量费用的详情,请参见存储费用。
数量
每个存储空间最多可配置1000条生命周期规则。
生效时间
生命周期规则创建后的24小时内,MOS会加载规则。规则加载完成后,MOS会在每天的北京时间8:00开始执行规则,并在随后的24小时内执行完毕。Object的最后修改时间与生命周期规则开始执行时间(8:00)必须间隔24小时以上。例如生命周期规则为Object上传1天后删除,则2020年7月20日上传的文件删除时间如下:
北京时间8:00前上传的文件会在2020年7月21日8:00开始删除,并在7月22日8:00前删除完毕。
北京时间8:00后上传的文件会在2020年7月22日8:00开始删除,并在7月23日8:00前删除完毕。
说明 更新生命周期规则会中止当天的生命周期任务,请不要频繁更新生命周期规则。
生命周期规则由以下元素组成:
策略:生命周期规则匹配的Object和碎片。
按前缀匹配:按指定前缀匹配Object和碎片。可创建多条规则匹配不同的前缀,前缀不能重复。前缀的命名规范与Object命名规范相同,详情请参见对象(Object)。
按标签匹配:按指定标签的Key和Value匹配Object。单条规则可配置多个标签,MOS对所有拥有这些标签的对象执行生命周期规则。标签匹配规则不作用于碎片。
说明 对象标签功能详情请参见对象标签。
按前缀+标签匹配:按指定前缀和标签的筛选条件匹配对象。
配置到整个Bucket:匹配整个Bucket内的所有Object和碎片。配置了覆盖整个Bucket的生命周期规则后,不支持再创建其他生命周期规则。
文件过期策略:设置Object的过期时间及操作。
过期天数:指定一个过期天数N,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。Object会在其最后修改时间的N天后过期,并执行指定的操作。
过期日期:指定一个过期日期,并指定非版本状态下的所有Object、以及版本控制状态下的当前版本Object过期后执行什么操作。最后修改时间在该日期之前的Object全部过期,并执行指定的操作。
Object成为非当前版本天数:指定一个过期天数N,并指定非当前版本Object过期后执行什么操作。Object会在其成为非当前版本的N天后过期,并执行指定的操作。
您可以转换过期Object的存储类型或将其删除。详情请参见生命周期配置元素。
碎片过期策略:设置碎片的过期时间及操作。
过期天数:可指定一个过期天数N,文件碎片会在其最后修改时间的N天后被删除。
过期日期:指定一个过期日期,最后修改时间在该日期之前的文件碎片会被全部删除。
规则生效
例如,某个Bucket有如下几个Object:
logs/program.log.1
logs/program.log.2
logs/program.log.3
doc/readme.txt
如果生命周期规则指定的前缀是logs/,那么此规则仅作用于前三个以logs/开头的Object;如果指定的前缀是doc/readme.txt,那么此规则则只对doc/readme.txt起作用。
对过期策略匹配的Object执行GET或HEAD操作时,MOS会在响应Header中加入x-MOS-expiration头。其中expiry-date的值表示Object的过期日期;rule-id的值表示相匹配的规则ID。
规则冲突
相同前缀和标签
当不同生命周期规则作用于相同前缀和标签的Object时,删除操作优先于存储类型转换操作。rule1用于指定所有前缀为abc,标签为a=1的Object
20天后删除,rule2规则不生效。
rule | prefix | tag | action |
---|---|---|---|
rule1 | abc | a=1 | 20天后删除 |
rule2 | abc | a=1 | 20天后转为Archive |
前缀重叠+标签相同
rule1用于指定所有标签为a=1的Object 10天后转为IA。rule2用于指定前缀为abc且标签为a=1的Object 120天后删除。
rule | prefix | tag | action |
---|---|---|---|
rule1 | - | a=1 | 10天后转为IA |
rule2 | abc | a=1 | 120天后被删除 |
rule3用于指定所有标签为a=1的Object 20天后转为Archive。 由于Archive类型文件无法转换为IA类型,因此rule4指定的前缀为abc且标签为a=1的Object 30天后转为IA的规则不生效。
rule | prefix | tag | action |
---|---|---|---|
rule3 | - | a=1 | 20天后转为Archive |
rule4 | abc | a=1 | 30天后转为IA |
通过CopyObject覆写文件存储类型时,是否有最小存储天数限制?
有最小存储天数限制。例如低频访问类型文件在其创建10天后,通过CopyObject覆写操作将存储类型转换为归档存储,此操作会产生低频访问存储不足规定时长费用。
同时文件的创建时间发生变化,且转换后的归档存储类型文件因最小存储天数为60天,因此需再保存至少60天。
通过生命周期规则进行的类型转换、过期删除操作,是否有日志记录?
所有成功通过生命周期规则进行的类型转换、过期删除操作都会有日志记录,日志记录字段如下:
Operation
CommitTransition:通过生命周期规则转换存储类型,例如转换为低频访问、归档或冷归档存储类型。
ExpireObject:通过生命周期规则删除过期Object。
Sync Request
lifecycle:生命周期规则触发的转换存储类型和删除过期Object的操作。
本文介绍对象(Object)生命周期基本示例中涉及的各个配置元素。
生命周期配置为XML格式,举例如下:
< LifecycleConfiguration>
< Rule>
< ID>delete logs after 10 days< /ID>
< Prefix>logs/< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< Days>10< /Days>
< /Expiration>
< /Rule>
< Rule>
< ID>delete doc< /ID>
< Prefix>doc/< /Prefix>
< Status>Disabled< /Status>
< Expiration>
< CreatedBeforeDate>2017-12-31T00:00:00.000Z< /CreatedBeforeDate>
< /Expiration>
< /Rule>
< Rule>
< ID>delete xx=1< /ID>
< Prefix>rule2< /Prefix>
< Tag>< Key>xx< /Key>< Value>1< /Value>< /Tag>
< Status>Enabled< /Status>
< Transition>
< Days>60< /Days>
< StorageClass>Archive< /StorageClass>
< /Transition>
< /Rule>
< /LifecycleConfiguration>
上述示例中,有三条规则,含义如下:
第一条规则会删除前缀为logs/,且最后更新时间是10天前的Object。
第二条规则虽然指定了删除2017年12月31日之前被修改的前缀为doc/的Object,但是由于它的Status是Disabled状态,所以该规则并不会生效。
第三条规则会将标签为xx=1,且最后更新时间是60天前的Object存储类型修改为Archive(归档存储)。
生命周期规则涉及的各项配置元素如ID元素、操作元素等将在下文提供详细介绍。
为存储空间配置的生命周期规则ID。最多由255个字节组成。如没有指定,或者该值为空时,MOS会自动生成一个唯一ID。
表示生命周期规则所处的状态。您可以选择启用(Enabled)或禁用 (Disabled)生命周期规则。如果规则处于禁用状态,则MOS不会执行规则中定义的任何操作。
基于您指定的< Prefix>元素,将生命周期规则应用于存储空间中的所有或部分对象。
按指定日期
使用子元素< CreatedBeforeDate>
指定绝对的日期,按照最后修改时间在该日期之前的Object,执行过期(Expiration)或转换(Transition)存储类型操作。
按指定天数
使用子元素< Days>指定相对天数,并指定Object在其最后修改时间的N天后,执行过期或转换存储类型操作。
通过在生命周期规则中指定的一个或多个操作元素, 您可以指示MOS在对象的生命周期内执行特定操作。 这些操作的效果取决于存储桶的版本控制状态。 以下总结了对象执行的生命周期配置规则操 作的行为与包含对象的存储空间的版本控制状态的关系。
未开启版本控制的Bucket
操作 | 说明 |
---|---|
Transition | 达到对象生命周期中指定的日期或时间段时,将对象转换为指定存储类型。 |
Expiration | 达到对象生命周期中指定的日期或时间段时,永久删除符合条件的对象。 |
受版本控制的Bucket
对受版本控制(即已开启或暂停版本控制)的Bucket中对象生命周期的相关元素说明如下:
当前版本Object过期或转换操作
操作 | 说明 |
---|---|
Expiration |
根据当前版本Object是否为删除标记,其过期行为说明如下:
当前版本Object不为删除标记: 在开启版本控制状态下,MOS将会插入具有唯一版本ID的删除标记作为当前版本,原当前版本将成为非当前版本。 在暂停版本控制状态下,MOS将会插入null版本ID的删除标记作为当前版本,而原当前版本中版本ID为null的版本将被覆盖,以保证一个Object只有一个版本ID为null的版本。 当前版本Object为删除标记: 且在该Object还有一个或多个非当前版本状态下进行Expiration过期操作,MOS将不执行任何操作。 且在该Object仅有一个版本状态下进行Expiration过期操作,则该删除标记即为过期删除标记,即仅剩一个删除标记版本,其余版本均已删除。 MOS将根据子元素ExpiredObjectDeleteMarker决定是否移除此过期删除标记,以达到彻底清理的目的。 如果ExpiredObjectDeleteMarker设置为true,MOS将自动为您检测该 过期删除标记并将其移除,以达到彻底清理的目的。
注意
|
Transition | 达到生命周期中指定的日期或时间段时,将当前版本Object转换为指定存储类型。 |
非当前版本Object过期或转换操作
操作 | 说明 | 关联的子元素 |
---|---|---|
NoncurrentVersionExpiration | 非当前版本过期操作。 |
子元素< NoncurrentDays>指相对过期时间,
表示该版本从当前版本变成非当前版本开始,到永久删除之间的保留时间段。
说明 例如该版本原本为当前版本,2019年5月1日由于putObject覆盖操作, 该版本变成了非当前版本。NoncurrentVersionExpiration元素设置了 < NoncurrentDays>过期时间为3天,那么该版本将在2019年5月4日被 彻底删除。由于版本的连续性,每次执行上传操作时,当 前版本会被置为第一个非当前版本,新添加的版本成为其后继版 本。MOS会通过查看其后继版本的创建时间,来获取一个版本成为非当前版本的开始时间。 |
NoncurrentVersionTransition | 非当前版本Object存储类型转换操作。 |
子元素< NoncurrentDays>指相对转换时间,表示该版本从当前版本变 成非当前版本开始,到进行存储类型转换之间的时间段。 子元素< StorageClass>用来指定Object转储的存储类型。 |
本文档提供多个常见的生命周期配置示例, 以便您更好地使用生命周期规则管理您存储空间(Bucket)内的文件(Object)。
每个生命周期规则都包含至少一个筛选条件,筛选条件可用于确定Bucket中适用生命周期规则的部分或所有Object。以下生命周期配置显示了如何指定筛选条件的示例。
示例1
在此生命周期配置规则中,筛选条件指定了prefix为doc/,此规则将应用于prefix为doc/的Object,例如doc/test1.txt和doc/test2.jpg等Object,并指定通过生命周期规则完成以下操作:
在Object最后修改时间超过180天后将其转换为IA存储类型(Transition操作)。
在Object最后修改时间超过365天后将其删除(Expiration操作)。
< LifecycleConfiguration>
< Rule>
< ID>test-rule0< /ID>
< Prefix>doc/< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< Days>365< /Days>
< /Expiration>
< Transition>
< Days>180< /Days>
< StorageClass>IA< /StorageClass>
< /Transition>
< /Rule>
< /LifecycleConfiguration>
示例2
指定生命周期规则应用于某个Bucket内的所有Object,并指示该Bucket内的所有Object在距其最后修改时间超过300天后过期。
< LifecycleConfiguration>
< Rule>
< ID>test-rule1< /ID>
< Prefix>< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< Days>300< /Days>
< /Expiration>
< /Rule>
< /LifecycleConfiguration>
示例3
指定生命周期规则应用于某个Bucket内的所有Object(即Prefix为空),并指示该Bucket内的所有最后修改时间早于2019年12月30日的Object过期。
< LifecycleConfiguration>
< Rule>
< ID>test-rule0< /ID>
< Prefix>< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< CreatedBeforeDate>2019-12-30T00:00:00.000Z< /CreatedBeforeDate>
< /Expiration>
< /Rule>
< /LifecycleConfiguration>
以下说明了筛选条件重叠的情况下,是否造成生命周期操作冲突的情况。
示例1(冲突)
假设您有包含两个规则,每个规则各指定一个标签筛选条件:
规则1指定了基于标签的筛选条件(tag1/value1)。此规则指示Object最后修改时间超过180天后转换为IA存储类型。
规则2指定了基于标签的筛选条件(tag2/value2)。此规则指示Object最后修改时间超过10天后过期。
< LifecycleConfiguration>
< Rule>
< ID>test-rule1< /ID>
< Prefix>< /Prefix>
< Tag>
< Key>tag1< /Key>
< Value>value1< /Value>
< /Tag>
< Status>Enabled< /Status>
< Transition>
< Days>180< /Days>
< StorageClass>IA< /StorageClass>
< /Transition>
< /Rule>
< Rule>
< ID>test-rule2< /ID>
< Prefix>< /Prefix>
< Tag>
< Key>tag2< /Key>
< Value>value2< /Value>
< /Tag>
< Status>Enabled< /Status>
< Expiration>
< Days>10< /Days>
< /Expiration>
< /Rule>
< /LifecycleConfiguration>
说明 如果存在带有两个标签的Object,即两个规则都将应用于相同Object。 在这种情况下,Object将在其最后修改时间超过10天后过期。Object被删除后,转换存储类型操作将不再有效。
示例2(无冲突)
在本示例中,配置了包含两个指定重叠前缀的规则,如下所示。
规则1指定了一个空Prefix(即作用于所有Object),指示Object距其最后修改时间超过365天后全部删除。
规则2指定了一个Prefix(test/),指示Object距其最后修改时间超过30天后转换为Archive存储类型。
< LifecycleConfiguration>
< Rule>
< ID>test-rule1< /ID>
< Prefix>< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< Days>365< /Days>
< /Expiration>
< /Rule>
< Rule>
< ID>test-rule2< /ID>
< Prefix>test/< /Prefix>
< Status>Enabled< /Status>
< Transition>
< Days>30< /Days>
< StorageClass>Archive< /StorageClass>
< /Transition>
< /Rule>
< /LifecycleConfiguration>
您可以临时禁用生命周期规则。例如,以下生命周期配置指定了两个规则,且在策略中选择禁用规则1,启用规则2。
规则1表示前缀为logs/的Object,在其创建1天后转换为IA存储类型。
规则2表示前缀为documents/的Object,在其创建1天后转换为Archive存储类型。
< LifecycleConfiguration>
< Rule>
< ID>test-rule1< /ID>
< Prefix>logs/< /Prefix>
< Status>Disabled< /Status>
< Transition>
< Days>1< /Days>
< StorageClass>IA< /StorageClass>
< /Transition>
< /Rule>
< Rule>
< ID>test-rule2< /ID>
< Prefix>documents/< /Prefix>
< Status>Enabled< /Status>
< Transition>
< Days>1< /Days>
< StorageClass>Archive< /StorageClass>
< /Transition>
< /Rule>
< /LifecycleConfiguration>
假设您有一个启用了版本控制的Bucket,即该Bucket内的每个Object都有一个当前版本以及零个或零个以上的非当前版本。有关版本控制的更多信息请参见版本控制介绍。
示例1
您可以通过配置以下规则,实现Object距其最后修改时间超过10天后转换为IA存储类型,Object成为非当前版本60天后转换为Archive存储类型,Object成为非当前版本90天后删除。
< LifecycleConfiguration>
< Rule>
< ID>test-rule0< /ID>
< Prefix>< /Prefix>
< Status>Enabled< /Status>
< Transition>
< Days>10< /Days>
< StorageClass>IA< /StorageClass>
< /Transition>
< NoncurrentVersionTransition>
< NoncurrentDays>60< /NoncurrentDays>
< StorageClass>Archive< /StorageClass>
< /NoncurrentVersionTransition>
< NoncurrentVersionExpiration>
< NoncurrentDays>90< /NoncurrentDays>
< /NoncurrentVersionExpiration>
< /Rule>
< /LifecycleConfiguration>
示例2
当Object在仅剩一个删除标记版本,其余版本均已删除的情况下执行Expiration过期操作,则该删除标记即为过期删除标记。移除过期删除标记示例如下:
< LifecycleConfiguration>
< Rule>
< ID>test-rule0< /ID>
< Prefix>< /Prefix>
< Status>Enabled< /Status>
< Expiration>
< ExpiredObjectDeleteMarker>true< /ExpiredObjectDeleteMarker>
< /Expiration>
< /Rule>
< /LifecycleConfiguration>
您可以使用对象存储MOS的清单功能获取存储空间(Bucket)中指定文件(Object)的数量、大小、存储类型、 加密状态等信息。相对于GetBucket (ListObjects)接口,在海量Object的列举场景中,建议您优先使用清单功能。
清单任务配置完成后,MOS会按清单规则指定的导出周期生成清单报告。清单文件的存储目录树结构如下:
dest_bucket
└──destination-prefix/
└──src_bucket/
└──inventory_id/
├──YYYY-MM-DDTHH-MMZ/
│ ├──manifest.json
│ └──manifest.checksum
└──data/
└──745a29e3-bfaa-490d-9109-47086afcc8f2.csv.gz
目录结构 | 说明 |
---|---|
destination-prefix/ | 该目录根据设置的清单报告名前缀生成,如果清单报告名前缀设置为空,将省略该目录。 |
src_bucket/ | 该目录根据配置清单报告的源Bucket名生成。 |
inventory_id/ | 该目录根据清单任务的规则名称生成。 |
YYY-MM-DDTHH-MMZ/ | 该目录是标准的格林威治时间戳,表示开始扫描Bucket的时间, 例如2020-05-17T16-00Z。该目录下包含了manifest.json和manifest.checksum文件。 |
data/ | 该目录下存放了包含源Bucket中的对象列表以 及每个对象的元数据的清单文件,清单文件格式为使用GZIP压缩的CSV文件。 |
清单功能生成的具体文件如下:
清单文件
清单文件存储在data/目录中,包含清单功能导出的文件信息。您可以通过manifest.json文件的fileSchema字段来获取清单文件的字段列信息。清单样例如下:
清单文件的所有字段从左到右分别为:
字段名称 | 描述 |
---|---|
Bucket | 执行清单任务的源Bucket名称。 |
Key |
Bucket中Object的名称。
Object名称使用URL编码,您必须解码后查看。 |
VersionId |
Object的版本ID。
仅当Bucket已开启版本控制功能,且您配置的清单规则为导出所有版本时出现此字段。 |
IsLatest |
Object版本是否为最新版本。当版本为最新版本时取值为True,否则取值为False。
仅当Bucket已开启版本控制功能,且您配置的清单规则为导出所有版本时出现此字段。 |
IsDeleteMarker |
Object版本是否为删除标记。当版本为删除标记时取值为True,否则取值为False。
仅当Bucket已开启版本控制功能,且您配置的清单规则为导出所有版本时出现此字段。 |
Size | Object大小。 |
StorageClass | Object的存储类型。 |
LastModifiedDate | Object的最后修改时间。 |
ETag |
Object的ETag。
Object生成时会创建相应的ETag,用于标识一个Object的内容。 通过PutObject接口创建的Object,ETag值是其内容的MD5值。 通过其他方式创建的Object,ETag值是其内容的UUID。 |
IsMultipartUploaded | Object是否通过分片上传生成。如果是,则该字段值为True,否则为False。 |
EncryptionStatus | Object是否已加密。若Object已加密,则该字段值为True,否则为False。 |
manifest文件
manifest文件包含manifest.json和manifest.checksum:
manifest.json:提供了有关清单的元数据和其他基本信息,包括如下内容。
字段名称 | 说明 |
---|---|
creationTimestamp | 以纪元日期格式创建的时间戳,显示开始扫描源Bucket的时间。 |
destinationBucket | 存储清单文件的目标Bucket。 |
fileFormat | 清单文件的格式。 |
fileSchema | 清单文件包含的字段。 |
files | 包含清单文件的文件名、大小、MD5值。 |
sourceBucket | 创建清单文件的源Bucket。 |
version | 清单版本。 |
manifest.checksum:包含manifest.json文件的MD5值。
费用说明
使用Bucket清单功能会产生一定的费用,公测期间仅收取API请求费用和清单文件存储费用,暂不收取功能使用费用。
在您删除清单规则前,MOS会按照清单规则一直生成清单文件,会产生一定的存储费用。为避免产生不必要的费用,请及时清理不再需要的清单文件。
权限说明
使用RAM用户配置清单规则时,需具有以下权限:
配置清单时,需调用PutBucketInventory、GetBucketInventory、ListBucketInventory、DeleteBucketInventory接口,所以需要有对应接口的调用权限。
配置清单规则前需生成一个RAM角色,该角色需要拥有读取源Bucket所有文件和向目标Bucket写入文件的权限。若摩杜云账号没有这个角色,RAM用户需要有CreateRole和GetRole权限;若摩杜云账号已有这个角色,则RAM用户需要有GetRole权限。
配置角色的步骤,请参见创建可信实体为摩杜云服务的RAM角色。
配置限制
配置清单的源Bucket与存放清单文件的目标Bucket可以相同也可以不同,但是必须属于同一账号下的相同地域。
单个Bucket最多只能配置1000条清单规则,通过MOS管理控制台最多可配置10条清单规则。
配置建议
建议您根据源Bucket内的文件数量配置清单任务:
文件数量小于10亿,可以以天为单位生成清单文件。
文件数量为小于100亿,可以以周为单位生成清单文件。
文件数量大于100亿,建议以周为单位,并针对不同的文件前缀设置不同的清单任务,保证每个清单任务涉及的文件不超过100亿个。
异常说明
若源Bucket没有任何文件,或清单任务设置的前缀没有匹配到任何文件,则不会生成清单文件。
导出清单文件的过程中,由于Object的创建、删除或覆盖等操作,可能会导致最终输出的清单列表中不一定包含所有的Object。最后修改时间早于manifest.json文件中createTimeStamp字段显示时间的Object会出现在清单文件中;最后修改时间晚于createTimeStamp字段显示时间的Object可能不会出现在清单文件中。建议您对清单列表中的Object进行操作之前,先使用HeadObject接口检查Object的属性。更多信息,请参见HeadObject。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK Go SDK C++ SDK |
丰富、完整的各类语言SDK demo |
如何快速得知清单文件已生成?
涉及Object较多时,清单文件生成需要一定的时间。
若您希望第一时间获知清单文件已生成,建议您在生
成清单的目标Bucket中配置事件通知规则,将事件类型设置
为PutObject。当清单生成之后,您会收到Object生成的
提醒。配置事件通知方式,请参见设置事件通知规则。
摩杜云MOS的请求者付费模式是指由请求者支付访问存储空间(Bucket)内数据时产生的费用, 而Bucket拥有者仅支付存储费用。当您希望共享数据, 但又不希望支付因共享数据产生的额外费用时,您可以开启此功能。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK PHP SDK Node.js SDK Python SDK .NET SDK Go SDK C++ SDK |
丰富、完整的各类语言SDK demo |
共享大型数据集(如邮政编码目录、参考数据、地理空间信息或网络爬取数据)。例如,研究机构提供公开数据集, 希望所有客户都能访问该数据,但请求产生的流量费用和请求次数费用由请求者支付。配置步骤如下:
i.将Bucket开启请求者付费模式。详细配置步骤请参见
设置请求者付费模式。
ii.通过Bucket Policy,将该Bucket授权给您客户的摩杜云RAM子账号。
配置详情请参见
使用Bucket Policy授权其他用户访问MOS资源。
将数据交付给您的客户或合作伙伴。例如,某公司需要将生产数据交付 给他的合作伙伴,下载数据产生的流量费用和请求次数费用需要由合作伙伴支付。 配置步骤如下:
i.将Bucket开启请求者付费模式。
ii.将Bucket ACL设置为私有。
iii.利用Bucket Policy,将该Bucket授权给您的合作伙伴的
摩杜云RAM子账号。配置详情请参见
基于Bucket Policy实现跨账号访问MOS。
注意 您需要将Bucket授权给对方的RAM子账号,而不是将您账号下的RAM子账号的AK提供给对方。 因为,当对方通过您账号下的RAM子账号访问时,请求者仍是您自身,则请求费用需要由您(请求者)付费。
不允许匿名访问
如果您在Bucket上启用了请求者付费模式,则不允许匿名访问该Bucket。请求方必须提供身份验证信息,以便MOS能够识别请求方,从而对请求方而非Bucket拥有者收取请求所产生的费用。
当请求者是通过扮演摩杜云RAM角色来请求数据时,该角色所属的账户将为此请求付费。
申请方需携带x-MOS-request-payer信息
如果您在Bucket上启用了请求者付费模式,请求中必须携带x-MOS-request-payer请求头,以表明请求方已了解需要支付请求和数据下载费用。否则,请求方无法通过验证。
对于POST、GET和HEAD请求,请求头中必须携带x-MOS-request-payer:requester。
对于签名URL,需在请求中包含x-MOS-request-payer=requester。
数据拥有者访问该Bucket时,可以不携带x-MOS-request-payer请求头。数据拥有者作为请求者访问该Bucket时,请求产生的费用由数据拥有者(也是请求者)来支付。
请求者付费模式下,请求者会根据请求的内容支付请求次数、外网流出流量、CDN回源流量、图片处理、视频截帧、低频或归档存储的数据取回等费用中的一项或多项,Bucket拥有者支付其他费用(如存储费用、对象标签费用、传输加速费用等)。如果出现以下情况,请求会失败(返回HTTP
403错误),将对Bucket拥有者收取请求费用:
请求者未在请求中(GET、HEAD或POST)包含参数x-MOS-request-payer,或未在请求中将其作为参数(REST) 。
请求身份验证失败。
请求是匿名请求 。
文件(Object)上传至存储空间(Bucket)后,MOS会自动生成文件URL,您可以直接通过文件URL访问该文件。 若您希望通过自定义域名访问这些文件,需要将自定义域名绑定至文件所在的Bucket,并添加CNAME记录。
按照中华人民共和国《互联网管理条例》的要求,所有绑定至中国内地Bucket上的域名,都必须在中国工信部备案。
您可以通过摩杜云提供的备案服务进行域名备案。
每个存储空间最多可以绑定100个域名;一个域名只能绑定在一个存储空间上;每个账号可绑定的域名个数无限制。
通过MOS管理控制台绑定自定义域名时,不允许绑定泛域名;通过CDN服务加速MOS时,允许绑定泛域名,但该域名不会在MOS管理控制台显示。
对于2019年9月23日以后在中国内地创建的Bucket,需确保通过浏览器访问Bucket内的图片文件时是预览而非下载行为。
将Bucket配置成静态网站时,需确保正确访问静态网站页面,而非下载静态网页。
您可以通过MOS管理控制台进行简单配置即可绑定自定义域名。具体操作,请参见 绑定自定义域名。
例如华东1(杭州)有名为examplebucket的Bucket,其根目录下有名为exampleobject.jpg的公共读Object,绑定的自定义域名为www.example.com。则绑定自定义域名前后的访问方式如下:
绑定前
使用Bucket默认域名访问exampleobject.jpg,访问地址为https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/exampleobject.jpg。
绑定后
使用自定义域名访问exampleobject.jpg,访问地址为https://www.example.com/exampleobject.jpg。
如果您希望绑定传输加速域名,请参见绑定传输加速域名。
如果您希望通过静态网页访问MOS资源,请参见设置静态网站托管和教程示例:使用自定义域名设置静态网站托管。
如果您希望使用HTTPS方式访问MOS服务,请参见证书托管。
MOS传输加速利用全球分布的云机房,将全球各地用户对您存储空间(Bucket)的访问, 经过智能路由解析至就近的接入点,使用优化后的网络及协议, 为云存储互联网的上传、下载提供端到端的加速方案。
MOS传输加速功能适用于各种需要提升访问速度,提升用户体验的场景:
远距离数据传输加速
例如全球性的论坛、Top在线协同办公平台等,部分客户会因传输距离较远导致上传和下载体验非常差。传输加速功能可以让全球各地的客户使用优化后的网络来传输数据,极大地提升上传和下载速度,让不同地域的用户都能有很好的访问体验。
GB、TB级大文件上传和下载
通过互联网远距离上传和下载大文件时,经常会因为网络延迟过大而导致传输失败。传输加速功能使用优化的互联网传输链路、调优的协议栈与传输算法,可大幅减少远距离互联网传输超时的比例。您还可以让传输加速功能与分片上传、断点续传下载结合,形成远距离大文件上传和下载的解决方案。
非静态、非热点数据下载加速
例如相册应用、游戏、电商、社交应用的评论内容、企业门户网站、金融类APP等,用户的下载体验直接影响产品竞争力和客户留存率。传输加速功能作为专为MOS上传、下载加速而设计的功能,可以最大限度利用客户端的网络能力,提升用户的下载体验。
开启传输加速后,Bucket在保留默认访问域名(Endpoint)的基础上,会新增如下两种传输加速Endpoint。
全球加速Endpoint:地址为MOS-accelerate.moduyuncs.com。传输加速接入点分布在全球各地,全球各地的Bucket均可以使用该域名进行传输加速。
非中国内地加速Endpoint:地址为MOS-accelerate-overseas.moduyuncs.com。传输加速接入点分布在除中国内地以外的各地域,仅在中国香港及海外各地域Bucket绑定未备案的域名做CNAME指向时使用。
通过MOSutil测试实际加速效果如下。
您可以通过MOS全球传输加速效果对比工具测试您本地访问全球各地数据中心时,开启传输加速与未开启传输加速的访问速度。
开启MOS传输加速步骤,请参见开启传输加速。开启MOS传输加速后,以全球加速Endpoint为例,您可以通过以下方式实现传输加速:
浏览器访问
通过浏览器访问时,将文件URL的Endpoint字段需替换为传输加速Endpoint,例如https://test.MOS-cn-shenzhen.moduyuncs.com/myphoto.jpg需改为https://test.MOS-accelerate.moduyuncs.com/myphoto.jpg。如果文件访问权限为私有,则还需要加上签名信息。
说明 如果您的存储空间已绑定自定义域名,且希望通过自定义域名访问MOS时实现传输加速, 您可以通过CNAME配置,将您的域名指向MOS加速域名。配置方式,请参见 绑定传输加速域名。
MOSutil
通过MOSutil访问时,您可以将配置文件内的Endpoint替换为传输加速Endpoint。配置方法,请参见MOSutil。
您也可以在使用MOSutil相关命令时,在命令行中增加-e
MOS-accelerate.moduyuncs.com。下图表示在cp上传场景中使用了传输加速Endpoint:
MOSbrowser
通过MOSbrowser访问时,按如下说明配置各项参数:
参数 | 说明 |
---|---|
Endpoint | 选择自定义,并填写传输加速Endpoint:https://MOS-accelerate.moduyuncs.com。 |
AccessKeyId、AccessKeySecret |
填写账号的AccessKey(AK)信息。获取AK的方式,请参见创建AccessKey。
注意 为保证数据安全,推荐您使用RAM用户的AK登录MOSbrowser。使用RAM用户登录之前, 需要为RAM用户配置moduyunMOSFullAccess、moduyunRAMFull Access以及moduyunSTSAssumeRoleAccess的权限。具体操作请参见权限管理。 |
预设MOS路径 | 指定访问某个Bucket或Bucket某个路径下资源的访问权限。预设MOS路径格式为MOS://bucketname/path。 例如授权访问存储空间examplebucket下文件夹examplefolder下的文件或子文件夹,则填写MOS://examplebucket/examplefolder/。 |
配置示例如下:
SDK
通过各语言SDK访问时,将Endpoint设置为传输加速Endpoint。以Java SDK的简单上传和简单下载为例:
简单上传
// 填写传输加速Endpoint。以全球加速Endpoint为例。
String endpoint = "https://MOS-accelerate.moduyuncs.com";
// 摩杜云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 创建MOSClient实例。
MOS MOSClient = new MOSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件。yourLocalFile由本地文件路径加文件名组成,例如/users/local/myfile.txt。
MOSClient.putObject("yourBucketName", "yourObjectName", new File("yourLocalFile"));
// 关闭MOSClient。
MOSClient.shutdown();
简单下载
// 填写传输加速Endpoint。以全球加速Endpoint为例。
String endpoint = "https://MOS-accelerate.moduyuncs.com";
// 摩杜云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 填写Bucket名称。
String bucketName = "yourBucketName";
// 填写不包含Bucket名称在内的Object完整路径,例如testfolder/exampleobject.txt。
String objectName = "yourObjectName";
// 创建MOSClient实例。
MOS MOSClient = new MOSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 下载Object到本地文件,并保存到指定的本地路径中。如果指定的本地文件存在会覆盖,不存在则新建。
// 如果yourLocalFile未包含文件路径,则下载后的文件默认保存到示例程序所属项目对应文件路径中。
MOSClient.getObject(new GetObjectRequest(bucketName, objectName), new File("yourLocalFile"));
// 关闭MOSClient。
MOSClient.shutdown();
传输加速开启及关闭操作会在30分钟内全网生效。
开启传输加速后必须使用MOS的传输加速域名才会提升访问速度。
若您工具中配置的Endpoint为传输加速Endpoint时,您只能操作已开启传输加速功能的Bucket。
开启传输加速功能后,MOS提供的其他Endpoint仍可正常使用。在不需要传输加速的场景中,您可以使用默认Endpoint以减少传输加速的费用。
为保证数据传输安全,传输加速后段加速逻辑会视情况选择使用HTTPS协议进行数据传输。所以,客户端使用HTTP协议通过传输加速域名访问MOS时,在MOS的访问日志中看到的访问协议可能是HTTPS。
传输加速是收费功能。费用详情,请参见传输加速费用。
传输加速与CDN加速有什么区别?
功能 | 原理 | 适用场景 |
---|---|---|
传输加速 | 通过智能调度的系统、优化的传输链路、 调优的协议栈与传输算法,并深度结合MOS 服务端的配套策略,提供的端到端的加速方案。 |
文件上传加速场景。 远距离的文件上传、下载场景。 大文件上传、下载场景。 动态更新文件、非热点文件的下载加速场景。 |
CDN加速 | 将MOS的Bucket作为源站, 将源内容缓存到边缘节点。 当客户读取数据时,会从最适 合的节点获取缓存文件,以提升下载速度。 | 静态热点文件的下载加速场景,即同一地区大量用户同时下载同一个静态文件的场景。 |
如何通过自定义域名使用传输加速服务?
您可以绑定自定义域名之后,将CNAME指向传输加速域名。详细步骤,请参见
绑定传输加速域名。
为什么使用传输加速Endpoint无法列举Bucket?
传输加速服务仅针对携带Bucket名称信息的三级域名(格式为https://BucketName.MOS-accelerate.moduyuncs.com)提供解析服务。而列举Bucket的请求域名中不携带Bucket名称信息,因此您无法使用传输加速Endpoint列举Bucket。建议您通过默认Endpoint列举目标地域的Bucket,例如https://MOS-cn-hangzhou.moduyuncs.com。
跨域资源共享CORS(CrMOS-Origin Resource Sharing)简称跨域访问, 是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,使得跨域数据传输得以安全进行。
跨域访问是浏览器出于安全考虑而设置的一个限制,即同源策略。当A、B两个网站属于不同域时,来自于A网站页面中的JavaScript代码访问B网站时,浏览器会拒绝该访问。
例如当运行在同一个浏览器上的不同来源,例如www.example.com和www.test.com请求同一跨域资源时,若www.example.com的请求先到达服务器,服务器将请求的资源带上Access-Control-Allow-Origin的Header,并返回给www.example.com的用户。此时www.test.com也发起了请求,浏览器会将缓存的上一次请求响应返回给用户,Header的内容和CORS的要求不匹配,导致www.test.com请求失败。
同源策略限制从一个源加载的文档或脚本与另一个源的资源进行交互的方式,是用于隔离潜在恶意文件的关键安全机制。同协议、同域名(或IP)、以及同端口视为同一个域。两个页面的协议、域名和端口(若指定了端口)相同,则视为同源。如下表给出了相对https://www.moduyun.com/org/test.html的同源检测示例:
URL | 访问是否成功 | 原因 |
---|---|---|
https://www.moduyun.com/org/other.html | 是 | 协议、域名、端口相同 |
https://www.moduyun.com/org/internal/page.html | 是 | 协议、域名、端口相同 |
https://www.moduyun.com/page.html | 否 | 协议不同(HTTPS) |
https://www.moduyun.com:22/dir/page.html | 否 | 端口不同(22) |
http://help.moduyun.com/dir/other.html | 否 | 域名不同 |
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK |
丰富、完整的各类语言SDK demo |
MOS支持根据需求灵活配置CORS规则,实现允许或者拒绝相应的跨域请求。CORS规则仅用来决定是否附加CORS相关的Header,是否拦截跨域请求由浏览器决定。详情请参见PutBucketCORS。
以下两种情况下需选中返回Vary: Origin头以避免本地缓存错乱。
说明 选中返回Vary: Origin头后,可能会造成浏览器访问次数或者CDN回源次数增加。
同时存在CORS和非CORS请求
例如实际请求中在< img>标签下发起非CORS请求,在fetch下发起CORS请求。
Origin头存在多种可能值
例如实际应用中指定允许的跨域请求来源Origin头为http://www.example.com以及https://www.example.org。
当用户的网站为www.example.com,后端使用了MOS。在网页中提供了使用JavaScript来实现上传功能,但是在该网页中,只能向www.example.com发送请求,向其他网站发送的请求都会被浏览器拒绝。这样将导致用户上传的数据必须从www.example.com中转。
如果设置了跨域访问的话,则可以直接上传文件到MOS而无需从www.example.com中转。具体实现如下:
1.CORS通过HTTP请求中附带Origin的Header来表明来源域。示例中Origin的Header为www.example.com。
2.服务器端接收到这个请求之后,会根据一定的规则判断是否允许该来源域的请求。如果允许,服务器在返回的响应中会附带上Access-Control-Allow-Origin这个Header,内容为www.example.com来表示允许此次跨域访问。如果服务器允许所有的跨域请求,将Access-Control-Allow-Origin的Header设置为星号(*)即可。
3.浏览器根据是否返回了对应的Header来决定该跨域请求是否成功,如果没有附加对应的Header,浏览器将会拦截该请求。
有关CORS配置详情,请参见 设置跨域访问。
CORS配置项常见错误
有关CORS配置项常见错误及排查方法,请参见MOS跨域资源共享(CORS)错误及排除。
报“No 'Access-Control-Allow-Origin'”错误
有关出现该错误的原因及解决方案,请参见MOS设置CORS规则以后报No 'Access-Control-Allow-Origin'错误的解决方法。
使用CDN域名访问MOS遇到跨域问题
如果您使用CDN域名访问MOS遇到跨域问题,需在CDN控制台配置跨域规则。详情请参见CDN如何配置跨域资源共享(CORS)。
发送跨域请求时报Response to preflight request doesn't pass access control check:
The value of the
'Access-Control-Allow-Origin' header in the response must not be the wildcard
'*' when the
request's credentials mode is 'include'.错误
建议您通过设置xhr.withCredentials = false;来解决此问题。
您可以通过存储空间(Bucket)的标签功能, 对Bucket进行分类管理,如列举带有指定标签的Bucket、对拥有指定标签的Bucket设置访问权限等。
Bucket标签使用一组键值对(Key-Value)对标记存储空间,您可以通过Bucket标签标记不同用途的Bucket,并进行分类管理。
只有Bucket的拥有者及授权子账户才能为Bucket设置用户标签,否则返回403 Forbidden错误,错误码:AccessDenied。
最多可设置20对Bucket用户标签(Key-Value对)。
Key最大长度为64字节,不能以http://、https://、moduyun为前缀,且不能为空。
Value最大长度为128字节,可以为空。
Key和Value必须为UTF-8编码。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK Go SDK C++ SDK Node.js SDK .NET SDK |
丰富、完整的各类语言SDK demo |
添加Bucket标签后,您可以对拥有相同标签的Bucket进行批量管理,例如列举拥有相同标签的Bucket、授权RAM用户管理拥有相同标签的Bucket等。
列举所有带指定标签的Bucket
您可以在列举Bucket时仅列举带指定标签的Bucket,详情请参见如下SDK Demo:
Java SDK
Python SDK
Go SDK
授权RAM用户管理拥有指定标签的Bucket
当您的Bucket较多时,您可以用Bucket标签对您的Bucket进行分类,并通过RAM策略授权指定用户(UID为193248792425xxxx)可以管理拥有指定标签的Bucket。例如授权用户A可以列举所有拥有keytest=valuetest标签的Bucket,RAM策略如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"MOS:ListBuckets"
],
"Resource": [
"acs:MOS:*:193248792425xxxx:*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"MOS:BucketTag/keytest": "valuetest"
}
}
}
]
}
当您不再需要保留某个存储空间(Bucket)时,可将其删除。
说明 有关删除存储空间的API的更多信息,请参见DeleteBucket。
已删除Bucket中所有的文件(Object)。删除少量文件的操作步骤,请参见删除文件。如果您的文件数量较多,建议结合生命周期规则进行批量删除。删除大量文件的操作步骤,请参见生命周期规则。
如果Bucket已开启版本控制,请确保删除Bucket内的所有当前版本和历史版本文件。删除所有版本文件的操作步骤,请参见版本控制。
已删除Bucket中因分片上传或断点续传产生的碎片(Part)。删除碎片的操作步骤,请参见管理碎片。
已删除Bucket中所有的Livechannel。删除Livechannel的操作步骤,请参见DeleteLiveChannel。
警告 存储空间删除后不可恢复,请谨慎操作。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
图形化工具MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK iOS SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
无法删除Bucket怎么办?
Bucket无法删除的原因是Bucket不为空或者权限不足,请按如下方式进行排查:
Bucket不为空
Bucket不为空不允许删除,请确保Bucket中存储的文件(Object)、碎片(Part)以及Livechannel已经全部删除。
权限不足
Bucket为空,但是RAM用户权限不足。请按如下方式添加或修改权限:
没有MOS:DeleteBucket权限:如果您作为RAM用户无法删除Bucket,则请求拥有管理员权限的RAM用户在RAM
Policy为您添加MOS:DeleteBucket权限。
MOS:DeleteBucket授权效力为Deny:如果您在RAM
Policy中拥有MOS:DeleteBucket权限但仍然无法删除Bucket,则Bucket
Policy可能包含授权效力为Deny的MOS:DeleteBucket权限。您必须将Deny修改为Allow或者直接删除此Bucket
Policy,然后才能删除此Bucket。
删除Bucket后,无法再次创建同名Bucket?
删除Bucket后,需要等待半小时左右的时间才能再次创建同名的Bucket。
随着互联网业务的发展,越来越多的业务对于数据的吞吐量有了更高的要求。 为此,对象存储MOS推出加速器功能,可以缓存MOS中的热点文 件(Object),提供高性能、高吞吐量的数据访问服务。
MOS加速器适用于基因训练、机器学习、数据湖、大数据计算等需要大量带宽, 且数据重复读的场景。例如大数据计算+MOS场景中,读取数据需要的带宽可能会高 达数百Gbps~Tbps,普通存储空间的吞吐量往往无法轻松应对这种大带宽的读取需求。 您可以开启MOS加速器,将需要重复读取的数据缓存在加速器中。 当大数据计算向MOS加速器请求数据时,加速器根据空间大小提供1.6 Gbps/TB的带宽,可满足大数据计算的带宽要求。
极致吞吐能力
加速器拥有极致的吞吐能力,带宽随容量大小线性增长,能有效解决多种应用场景的读吞吐的挑战。
弹性伸缩
计算任务通常是周期性任务,每个任务所需资源存在差异。加速器可根据您的需求进行在线扩容或缩容,可有效避免资源浪费,降低您的使用成本。
存算分离
加速器可满足计算资源和存储资源分离。面对不同的计算任务,您无需再自建不同缓存进行匹配,满足多业务场景的吞吐加速。
数据一致
加速器提供了传统缓存方案不具备的数据一致性。当MOS上的文件被更新时,加速器能自动识别并缓存最新文件,以确保计算引擎读取的都是最新数据。
加速器创建完成后会拥有一个地域专属的加速域名。例如上海地域的加速域名 为http://MOS-cache-cn-shanghai-g.moduyuncs.com。当您与加速器在同一专有网络VPC时,您可以通过加速域名访问加速器内的资源,流程如下图所示:
流程说明如下:
写请求
客户端向加速域名发送的写请求会直接转发给MOS,流程与使用MOS默认域名一致。
读请求
客户端向加速域名发送的读请求会被转发给MOS加速器。
加速器在收到读请求后会在缓存空间内查找目标文件:
若缓存空间存在目标文件,则文件直接返回给客户端。
若缓存空间没有目标文件,加速器会向绑定的MOS请求目标文件。MOS在收到请求后,会将目标文件缓存到加速器中,加速器将文件返回给客户端。
对于未缓存的文件,加速器根据自身容量提供320 Mbps/TB的回源带宽。
您可以通过MOS控制台创建加速器。操作步骤,请参见
配置MOS加速器。
目前仅支持在华东2(上海)地域创建加速器。
加速器支持在线扩容和缩容。在线扩容约1分钟完成,在线缩容约1小时完成。
当加速器缓存已满后,MOS会根据缓存文件的热度将低热度的文件替换为高热度文件。
一个加速器可配置的Bucket数量无限制,每个Bucket最多可配置10条加速路径。
浏览器报403错误,具体如下:
OPTIONS http://bucket.MOS-cn-beijing.moduyuncs.com/
XMLHttpRequest cannot load http://bucket.MOS-cn-beijing.moduyuncs.com/. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '{yourwebsiet}' is therefore not allowed access. The response had HTTP status code 403.
MOS报CORS请求不允许的错误,具体如下:
< Code>AccessForbidden< /Code>
< Message>CORSResponse: This CORS request is not allowed. This is usually because the evaluation of Origin, request method / Access-Control-Request-Method or Access-Control-Requet-Headers are not whitelisted by the resource's CORS spec.< /Message>
跨域规则配置错误。
说明
CORS报错一般是站点类应用导致,浏览器中可以查看请求详情。例如Chrome,按F12打开开发者工具 ,在Network页签中查看相应元素。
MOS返回的错误可以通过抓包获取。如果使用Wireshark,筛选器可以指定为host
bucket-name.MOS-cn-beijing.moduyuncs.com。
按照以下步骤正确配置跨域规则。
1.登录 MOS管理控制台。,选择目标Bucket,然后选择权限管理 > 跨域设置。
2.在跨域规则配置页面,设置以下参数:
来源(AllowedOrigin):设置为*。
允许Methods:选中全部选项(GET、PUT、DELETE、POST、HEAD)。
允许Headers:设置为*。
暴露Headers:设置为指定值或者不填。
对象(Object)是MOS存储数据的基本单元,也被称为MOS的文件。和传统的文件系统不同,对象没有文件目录层级结构的关系。
Object包含以下三种类型:
通过
简单上传
生成的Object类型为Normal。
通过
分片上传
生成的Object类型为Multipart。
通过
追加上传
生成的Object类型为Appendable,且仅支持在Appendable类型的Object后直接追加内容。
Object包含以下信息:
Key:Object的名称,可用于查询Object。
Data:您存储的数据,可由任意长度的字节组成。
Version ID:将Object上传至开启版本控制的存储空间(Bucket)后,MOS生成标识该对象的版本ID。
Object
Meta:Object元信息,是一组键值对,表示了Object的一些属性,例如最后修改时间、大小等信息。您也可以在元信息中存储一些自定义的信息。
针对存放在Bucket中Object的访问,MOS提供了多种权限控制策略。 例如基于资源的授权策略Bucket Policy和读写权限(ACL)、 基于用户的授权策略RAM Policy、通过STS临时授权访问MOS以 及通过防盗链对访问来源设置白名单。有关访问控制的更多信息,请参见 访问控制概述。
MOS资源(Bucket和Object)默认是私有读写权限。如果您希望其他人访问这些资源,必须进行授权。例如您网站上的图片和视频存储在MOS上,您可以通过以下两种方式授权第三方用户通过网站访问这些资源:
将资源的读写权限设置为公共读。详情请参见
设置Object读写权限。
对资源的访问URL进行签名操作。详情请参见
授权给第三方访问。
简单上传指的是使用MOS API中的PutObject方法上传单个文件(Object)。 简单上传适用于一次HTTP请求交互即可完成上传的场景,例如小文件(小于5 GB)的上传。
说明 简单上传的API接口的详细信息请参见PutObject。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
图形化工具MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK iOS SDK Node.js SDK Browser.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
文件大小限制
简单上传的Object的大小不能超过5 GB。超过5 GB的Object上传请使用断点续传上传。
文件命名规则
使用UTF-8编码。
长度必须在1~1023字节之间。
不能以正斜线(/)或者反斜线(\)字符开头。
文件上传性能调优
如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),
可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况,此时如果您的请求速
率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。将顺序
前缀改为随机性前缀的方法请参见MOS性能与扩展性最佳实践。
防止同名文件被覆盖
MOS的文件上传默认会覆盖同名文件, 为防止文件被意外覆盖,您可以通过以下方式保护您的文件:
开启版本控制功能
开启版本控制功能后,被覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。详情请参见版本控制介绍。
在上传请求中携带禁止覆盖同名文件的参数
在上传请求的header中携带参数x-MOS-forbid-overwrite,并指定其值为true。
当您上传的文件在MOS中存在同名文件时,该文件会上传失败,并返回FileAlreadyExists错误。
当不携带此参数或此参数的值为false时,同名文件会被覆盖。详情请参见PutObject。
在使用简单上传的情况下,可以携带Object Meta信息对Object进 行描述,例如可以设定Content-Type等标准HTTP头,也可以设定自定义信息。详情请参见 设置文件元信息。
为了防止第三方未经授权往您的Bucket里上传数据,MOS提供了Bucket和Object级别的访问权限控制。详情请参见
访问控制。
为了授权给第三方上传,MOS还提供了账号级别的授权。详情请参见
授权给第三方上传。
在文件上传到MOS后,您可以通过上传回调来向指定的应用服务器发起回调请求,进行下一步操作。
如果上传的是图片,您还可以进行
图片处理。
如果上传是音频或者视频文件,您还可以进行
音视频转码。
MOS有哪些批量操作?
文件上传到MOS后如何获取访问地址?
MOS上传文件失败怎么办?
摩杜云MOS提供分片上传功能,可以将待上传的文件分成多个碎片(Part)分别上传, 上传完成之后再调用CompleteMultipartUpload接口将这些Part组合成一个Object。 若上传过程中出现网络错误导致上传失败,您还可以从最后一块成功上 传的Part开始继续上传,从而实现断点续传效果。
大文件加速上传
当文件大小超过5 GB时,使用分片上传可实现并行上传多个Part以加快上传速度。
网络环境较差
网络环境较差时,建议使用分片上传。当出现上传失败的时候,您仅需重传失败的Part。
流式上传
可以在需要上传的文件大小还不确定的情况下开始上传。这种场景在视频监控等行业应用中比较常见。
分片上传的基本流程如下图所示。
流程说明如下:
1.将待上传文件按照一定大小进行分片。
2.使用InitiateMultipartUpload接口初始化一个分片上传任务。
3.使用UploadPart接口上传分片。
文件切分成Part之后,文件顺序是通过上传过程中指定的partNumber来确定,所以您可以并发上传这些碎片。并发数并非越多越快,请结合自身网络状况和设备负载综合考虑。
若您希望终止上传任务,可调用AbortMultipartUpload接口,成功上传的Part会一并删除。
4.使用CompleteMultipartUpload接口将Part组合成一个Object。
限制项 | 规格 |
---|---|
文件大小 | 不超过48.8 TB |
Part数量 | 1~10, 000个 |
单个Part大小 | 最小值为100 KB,最大值为5 GB。最后一个Part的大小无限制。 |
单次ListParts请求返回的Part最大数量 | 1, 000个 |
单次ListMultipartUploads请求返回的Multipart Upload事件最大数量 | 1, 000个 |
文件上传性能调优
如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况。此时如果您的请求速率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。更多信息,请参见MOS性能与扩展性最佳实践。
文件覆盖
上传同名文件会覆盖MOS中已有文件。您可以通过以下方式防止文件被意外覆盖:
开启版本控制功能
开启版本控制功能后,被覆盖的文件会以历史版本的形式保存下来,您可以随时恢复历史版本文件。更多信息,请参见版本控制介绍。
在上传请求中携带禁止覆盖同名文件的参数
在上传请求的header中携带x-MOS-forbid-overwrite参数,并指定其值为true。当您上传的文件在MOS中存在同名文件时,该文件会上传失败,并返回FileAlreadyExists错误。更多信息,请参见InitiateMultipartUpload。
删除Part
分片上传过程被中断后,已上传的Part会一直保存在Bucket中。若您不再需要这些Part,请通过以下方式删除,以免产生额外存储费用。
手动删除Part,请参见管理碎片。
通过生命周期规则自动删除Part,请参见设置生命周期规则。
操作方式 | 说明 |
---|---|
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Android SDK iOS SDK Browser.js SDK |
丰富、完整的各类语言SDK demo |
在使用分片上传的过程中,如果因意外导致上传失败,可以在重启的时 候通过ListMultipartUploads和ListParts两个接口来获取某个Object上的所有的分片上传任 务和每个分片上传任务中上传成功的Part列表。然后从最后一块成功上传的Part开始继续上传,从而达到断点续传的效果。
操作方式 | 说明 |
---|---|
Java SDK Python SDK Go SDK C SDK .NET SDK Node.js SDK Android SDK iOS SDK |
丰富、完整的各类语言SDK demo |
摩杜云MOS在上传文件完成的时候可以提供回调(Callback)给应用服务器。 您只需要在发送给MOS的请求中携带相应的Callback参数,即能实现回调。
说明
Callback的MOS API接口详细信息请参见Callback。
支持CallBack的API接口有:PutObject、PostObject、CompleteMultipartUpload。
上传回调的一种典型应用场景是与授权第三方上传同时使用,客户端在上传文件到MOS的时候指定到服务器端的回调,当客户端的上传任务在MOS执行完毕之后,MOS会向应用服务器端主动发起HTTP请求进行回调,这样服务器端就可以及时得到上传完成的通知从而可以完成诸如数据库修改等操作,当回调请求接收到服务器端的响应之后MOS才会将状态返回给客户端。
MOS在向应用服务器发送POST回调请求的时候,会在POST请求的Body中包含一些参数来携带特定的信息。这些参数有两种,一种是系统定义的参数,如Bucket名称、Object名称等;另外一种是自定义的参数,您可以在发送带回调的请求给MOS的时候根据应用逻辑的需要指定这些参数。您可以通过使用自定义参数来携带一些和应用逻辑相关的信息,比如发起请求的用户id等。具体使用自定义参数的方法可以参考Callback。
通过适当的使用上传回调机制,能很好的降低客户端的逻辑复杂度和网络消耗。流程如下:
说明 目前只有简单上传(PutObject)、表单上传(PostObject)、分片上传完成(Complete Multipart Upload)操作支持上传回调功能。
操作方式 | 说明 |
---|---|
Java SDK Python SDK PHP SDK C SDK .NET SDK |
丰富、完整的各类语言SDK demo |
本文介绍如何授权第三方直接上传文件到MOS而不通过服务器端转发。
在典型的C/S系统架构中,服务器端负责接收并处理客户端的请求。那么考虑一个使用MOS作为后端的存储服务,客户端将要上传的文件发送给服务器端,然后服务器端再将数据转发上传到MOS。在这个过程中,一份数据需要在网络上传输两次,一次从客户端到服务器端,一次从服务器端到MOS。当访问量很大的时候,服务器端需要有足够的带宽资源来满足多个客户端的同时上传的需求,这对架构的伸缩性提出了挑战。
为了解决这种场景带来的挑战,MOS提供了授权给第三方上传的功能。使用这个功能,每个客户端可以直接将文件上传到MOS而不是通过服务器端转发,节省了自建服务器的成本,并且充分利用了MOS的海量数据处理能力,无需考虑带宽和并发限制等,可以让客户专心于业务处理。
目前授权上传有两种实现方式:URL签名和临时访问凭证。
URL签名即在请求的URL中带MOS AccessKeyId和Signature字段, 这样用户就可以直接使用该URL来进行上传。每个URL签名中携带有过期时间以保证安全。
操作方法
操作方式 | 说明 |
---|---|
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK |
丰富、完整的各类语言SDK demo |
更多详情请参考在URL中包含签名。
临时访问凭证是通过摩杜云Security Token Service(STS)来实现授权的一种方式。摩杜云 STS
是为云计算用户提供临时访问令牌的Web服务。通过
STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。
操作方法
操作方式 | 说明 |
---|---|
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK iOS SDK |
丰富、完整的各类语言SDK demo |
操作示例请参考STS临时授权访问MOS。
表单上传是指使用MOS API中的PostObject请求来完成Object的上传,上传的Object不能超过5GB。
说明 表单上传的API接口详细信息请参见PostObject。
表单上传非常适合嵌入在HTML网页中来上传Object,比较常见的场景是网站应用,以招聘网站为例:
不使用表单上传 | 表单上传 | |
---|---|---|
流程对比 |
1.网站用户上传简历。 2.网站服务器回应上传页面。 3.简历被上传到网站服务器。 4.网站服务器再将简历上传到MOS。 |
1.网站用户上传简历。 2.网站服务器回应上传页面。 3.简历上传到MOS。 |
从流程上来说,使用表单上传,少了一步转发流程,更加方便。
从架构上来说,原来的上传都统一走网站服务器,上传量过大时,需要扩容网
站服务器。采用表单上传后,直接从客户端上传数据到MOS,上传量过大时,压力都在MOS上,由MOS来保障服务质量。
上传的Object的大小不能超过5GB。
文件的命名规则如下:
使用UTF-8编码。
长度必须在1–1023字节之间。
不能以正斜线(/)或者反斜线(\)字符开头。
如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况,此时如果您的请求速率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。将顺序前缀改为随机性前缀的方法请参见MOS性能与扩展性最佳实践。
MOS的文件上传默认会覆盖同名文件, 为防止文件被意外覆盖,您可以通过以下方式保护您的文件。
开启版本控制功能
开启版本控制功能后,被删除或覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。详情请参见版本控制介绍。
在上传请求中携带禁止覆盖同名文件的参数
在上传请求的表单域中携带x-MOS-forbid-overwrite,并指定其值为true。当您上传的文件在MOS中存在同名文件时,该文件会上传失败,并返回FileAlreadyExists错误。更多详情请参见PostObject。
当不携带此参数或此参数的值为false时,同名文件会被覆盖。
1.构建一个Post Policy。
Post请求的Policy表单域用于验证请求的合法性。例如可以指定上传的大小,可以指定上传的Object名称等,上传成功后客户端跳转到的URL,上传成功后客户端收到的状态码。具体请参见Post
Policy。
以Python代码为例子,Policy是json格式的字符串。
# 设置网站用户能上传文件的过期时间为2115-01-27T10:56:19Z(这里为了测试成功写的过期时间很长,实际使用中不建议这样设置),文件大小不超过104857600字节
policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 104857600]]}"
2.将Policy字符串进行base64编码。
3.用MOS的AccessKeySecret对base64编码后的Policy进行签名。
4.构建上传的HTML页面。
5.打开HTML页面,选择文件上传。
完整Python代码示例:
#coding=utf8
import md5
import hashlib
import base64
import hmac
from optparse import OptionParser
def convert_base64(input):
return base64.b64encode(input)
def get_sign_policy(key, policy):
return base64.b64encode(hmac.new(key, policy, hashlib.sha1).digest())
def get_form(bucket, endpoint, access_key_id, access_key_secret, out):
#1 构建一个Post Policy
policy="{\"expiration\":\"2115-01-27T10:56:19Z\",\"conditions\":[[\"content-length-range\", 0, 1048576]]}"
print("policy: %s" % policy)
#2 将Policy字符串进行base64编码
base64policy = convert_base64(policy)
print("base64_encode_policy: %s" % base64policy)
#3 用MOS的AccessKeySecret对编码后的Policy进行签名
signature = get_sign_policy(access_key_secret, base64policy)
#4 构建上传的HTML页面
form = '''
< html>
< meta http-equiv=content-type content="text/html; charset=UTF-8">
< head>< title>MOS表单上传(PostObject)< /title>< /head>
< body>
< form action="http://%s.%s" method="post" enctype="multipart/form-data">
< input type="text" name="MOSAccessKeyId" value="%s">
< input type="text" name="policy" value="%s">
< input type="text" name="Signature" value="%s">
< input type="text" name="key" value="upload/">
< input type="text" name="success_action_redirect" value="http://MOS.moduyun.com">
< input type="text" name="success_action_status" value="201">
< input name="file" type="file" id="file">
< input name="submit" value="Upload" type="submit">
< /form>
< /body>
< /html>
''' % (bucket, endpoint, access_key_id, base64policy, signature)
f = open(out, "wb")
f.write(form)
f.close()
print("form is saved into %s" % out)
if __name__ == '__main__':
parser = OptionParser()
parser.add_option("", "--bucket", dest="bucket", help="specify ")
parser.add_option("", "--endpoint", dest="endpoint", help="specify")
parser.add_option("", "--id", dest="id", help="access_key_id")
parser.add_option("", "--key", dest="key", help="access_key_secret")
parser.add_option("", "--out", dest="out", help="out put form")
(opts, args) = parser.parse_args()
if opts.bucket and opts.endpoint and opts.id and opts.key and opts.out:
get_form(opts.bucket, opts.endpoint, opts.id, opts.key, opts.out)
else:
print "python %s --bucket=your-bucket --endpoint=MOS-cn-hangzhou.moduyuncs.com --id=your-access-key-id --key=your-access-key-secret --out=out-put-form-name" % __file__
将此段代码保存为post_object.py,然后用python post_object.py来运行。
使用方法:
python post_object.py --bucket=您的Bucket --endpoint=Bucket对应的MOS域名 --id=您的AccessKeyId --key=您的AccessKeySecret --out=输出的文件名
使用示例:
python post_object.py --bucket=MOS-sample --endpoint=MOS-cn-hangzhou.moduyuncs.com --id=tphpxp --key=ZQNJzf4QJRkrH4 --out=post.html
说明
构建的表单中success_action_redirect value=http://MOS.moduyun.com
表示上传成功后跳转的页面。可以替换成您自己的页面。
构建的表单中success_action_status value=201表示的是上传成功后返回的状态码为201,可以替换。
假如指定生成的HTML文件为post.html,打开post.html,选择文件上传。在这个例子中如果成功则会跳转到MOS的主页面。
为了防止第三方未经授权往您的Bucket里上传数据,MOS提供了Bucket和Object级别的访问权限控制。详情请参见
权限控制。
为了授权给第三方上传,MOS还提供了账号级别的授权。详情请参见
授权给第三方上传。
追加上传指的是使用MOS API中的AppendObject在已上传的Appendable Object类型文件后面直接追加内容。
说明 追加上传的API接口的详细信息请参见AppendObject。
之前提到的上传方式,比如简单上传,表单上传,断点续传上传等,创建的Object都是Normal类型,这种Object在上传结束之后内容就是固定的,只能读取,不能修改。如果Object内容发生了改变,只能重新上传同名的Object来覆盖之前的内容,这也是MOS和普通文件系统使用的一个重大区别。
正因为这种特性,在很多应用场景下会很不方便,比如视频监控、视频直播领域等,视频数据在实时的不断产生。如果使用其他上传方式,只能将视频流按照一定规律切分成小块然后不断的上传新的Object。这种方式在实际使用上存在很明显的缺点:
软件架构比较复杂,需要考虑文件分块等细节问题。
需要有位置保存元信息,比如已经生成的Object列表等,然后每次请求都重复读取元信息来判断是否有新的Object生成。这样对服务器的压力很大,而且客户端每次都需要发送两次网络请求,延时上也会有一定的影响。
如果Object切分的比较小的话,延时比较低,但是众多Object会导致管理起来很复杂。如果Object切分的比较大的话,数据的延时又会很高。
为了简化这种场景下的开发成本,MOS提供了追加上传(Append
Object)的方式,在一个Object后面直接追加内容。通过这种方式操作的Object的类型为Appendable
Object,而其他的方式上传的Object类型为Normal Object。每次追加上传的数据都能够即时可读。
如果使用追加上传,那么上述场景的架构就变得很简单。视频数据产生之后即时地通过追加上传到同一个Object,而客户端只需要定时获取该Object的长度与上次读取的长度进行对比,如果发现有新的数据可读,那么就触发一次读操作来获取新上传的数据部分即可。通过这种方式可以很大的简化架构,增强扩展性。
不仅在视频场景,在日志追加上传的场景下,追加上传也能发挥作用。
操作方式 | 说明 |
---|---|
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK iOS SDK |
丰富、完整的各类语言SDK demo |
大小限制:在这种上传方式下,Object不能超过5GB。
命名限制:
使用UTF-8编码。
长度必须在1–1023字节之间。
不能以正斜线(/)或者反斜线(\)字符开头。
文件类型:只有通过追加上传创建的文件才可以后续继续被追加上传。也就是说,其他通过简单上传、表单上传、分片上传得到的文件,不能在这些文件后面追加上传新的内容。
后续操作限制:通过追加上传的文件,不能被复制,可以修改文件本身的meta信息。
为了防止第三方未经授权往您的Bucket里上传数据,MOS提供了Bucket和Object级别的访问权限控制。详情请参见
权限控制。
为了授权给第三方上传,MOS还提供了账号级别的授权。详情请参见
授权给第三方上传。
如果上传的是图片,您还可以进行 图片处理 。如果上传是音频或者视频文件,您还可以进行 音视频转码。
说明 追加上传不支持上传回调操作。
MOS支持使用RTMP协议推送H264编码的视频流和AAC编码的音频流到MOS。推送到MOS的音视频数据可以点播播放;在对延迟不敏感的应用场景,也可以做直播用途。
通过RTMP协议上传音视频数据有以下限制:
只能使用RTMP推流的方式,不支持拉流。
上传的音视频数据中必须包含视频流,且视频流格式为H264。
上传的音视频数据中可选择是否包含音频流。若包含音频流,则只支持AAC格式的音频流,其他格式的音频流会被丢弃。
转储只支持HLS协议。
一个LiveChannel同时只能有一个客户端向其推流。
下面分别介绍如何推送音视频流到MOS,以及如何点播和直播播放。
获得推流地址
使用SDK调用PutLiveChannel接口,创建一个LiveChannel,并获取对应的推流地址。如果Bucket的权限控制(ACL)为公共读写(public-read-write),那么可以直接使用得到的推流地址进行推流;否则需要进行签名操作。
以Python SDK为例,获取未签名以及签名推流地址的代码如下:
from MOS2 import *
from MOS2.models import *
host = "MOS-cn-hangzhou.moduyuncs.com" #just for example
accessid = "your-access-id"
accesskey = "your-access-key"
bucket_name = "your-bucket"
channel_name = "test-channel"
auth = Auth(accessid, accesskey)
bucket = Bucket(auth, host, bucket_name)
channel_cfg = LiveChannelInfo(target = LiveChannelInfoTarget())
channel = bucket.create_live_channel(channel_name, channel_cfg)
publish_url = channel.publish_url
signed_publish_url = bucket.sign_rtmp_url("test-channel", "playlist.m3u8", 3600)
获得的推流地址示例如下:
publish_url = rtmp://your-bucket.MOS-cn-hangzhou.moduyuncs.com/live/test-channel
signed_publish_url = rtmp://your-bucket.MOS-cn-hangzhou.moduyuncs.com/live/your-channel?MOSAccessKeyId=LGarxxxxxxHjKWg6&playlistName=t.m3u8&Expires=1472201595&Signature=bjKraZTTyzz9%2FpYoomDx4Wgh%2FlM%3D"
使用ffmpeg进行推流
可以使用ffmpeg推送本地的视频文件到MOS,命令如下:
ffmpeg -i 1.flv -c copy -f flv "rtmp://your-bucket.MOS-cn-hangzhou.moduyuncs.com/live/test-channel?MOSAccessKeyId=LGarxxxxxxHjKWg6&Expires=1472199095&Signature=%2FAvRo7FTss1InBKgwn7Gz%2FUlp9w%3D"
使用OBS进行推流
首先单击Settings,在URL文本框中输入前面步骤获取的推流地址,然后单击OK开始推流。
如下图所示,请注意推流地址的拆分方式:
直播场景
在推流的过程中,可以通过HLS协议播放正在推送的内容。各个平台的播放方法如下:
在Android、iOS等移动平台,直接在浏览器输入LiveChannel对应的播放地址即可。
Mac OS可以使用safari浏览器进行播放。
PC端可以安装vlc播放器进行播放。
为了直播流畅,可以设置比较小的FragDuration,例如2s;另外,GOP的大小最好固定且与LiveChannel的FragDuration配置一致。OBS的GOP
(即keyframe
Interval)设置方法如下:
点播场景
推流的过程中,MOS总是以直播流的方式推送/更新M3U8。所以对于点播的场景,需要在推流结束后,调用PostVodPlaylist接口来组装一个点播用的m3u8文件,然后使用该文件地址来播放。
对于点播的场景,可以设置较大的GOP来减少ts文件数,降低码率。
简单下载是通过MOS API的GetObject接口,下载已经上传的文件(Object),Object下载是使用HTTP的GET请求来完成的。
说明
简单下载的API接口详细信息请参见GetObject。
Object的URL生成规则请参考MOS的访问。
如果需要使用自定义域名来访问Object,请参考自定义域名访问MOS。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
图形化工具MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK Android SDK iOS SDK Node.js SDK Browser.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
为了防止第三方未经授权从您的Bucket里下载数据,MOS提供了Bucket和Object级别的访问权限控制。详情请参见
权限控制。
如果希望将私有Bucket的Object提供给第三方进行下载,请参考
授权给第三方下载。
如果需要实现断点下载请参考 断点续传下载。
MOS提供了从Object指定的位置开始下载的功能,在下载大的Object的时候,可以分多次下载。如果下载中断,重启的时候也可以从上次完成的位置开始继续下载。
和简单上传类似,您也需要对该Object有读权限。通过设置参数Range来支持断点续传,对于比较大的Object建议使用该功能。Range的定义请参见HTTP
RFC。如果在请求头中使用Range参数,则返回消息中会包含整个文件的长度和此次返回的范围。例如:Content-Range: bytes
0–9/44,表示整个文件长度为44,此次返回的范围为0~9。如果不在范围内,则传送整个文件,并且不在结果中提及Content-Range,返回码为206。
操作方式 | 说明 |
---|---|
Java SDK Python SDK Go SDK C SDK iOS SDK |
丰富、完整的各类语言SDK demo |
为了防止第三方未经授权从您的Bucket里下载数据,MOS提供了Bucket和Object级别的访问权限控制。详情请参见
权限控制。
如果希望将私有Bucket的Object提供给第三方进行下载,请参考
授权给第三方下载。
当您希望将私有Bucket内部的Object授权给第三方下载的时候, 不应该直接将AccessKey提供给下载者,而应该使用URL签名或临时访问凭证授权给第三方下载。
MOS提供了签名下载的方法。您可以在URL中加入签名信息, 把该URL转给第三方实现授权访问。第三方用户只需要使用HTTP的Get请求访问此URL即可下载Object。
示例
http://< bucket>.< region>.moduyuncs.com/< object>?MOSAccessKeyId=< user access_key_id>&Expires=< unix time>&Signature=< signature_string>< /signature_string>
此链接需要进行URL编码。在URL中实现签名,必须至少包含MOSAccessKeyId、Expires、Signature三个参数:
MOSAccessKeyId:您的AccessKey ID。
Expires:您期望URL过期的时间。
Signature:您签名的字符串,具体请参见在URL中包含签名。
操作方法
控制台
Java SDK
Python SDK
PHP SDK
Go SDK
C SDK
C++ SDK
.NET SDK
Node.js
Browser.js
Android SDK
iOS SDK
MOS可以通过摩杜云STS(Security Token
Service)进行临时授权访问。通过STS,您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。这种授权方式适合移动场景的下载。详情请参见STS临时授权访问MOS。
实现方式
第三方用户向App服务器请求,获取STS颁发的AccessKey ID、AccessKey Secret以及STS
Token,并以此去请求开发者的Object资源。
操作方法
Java SDK
Python SDK
PHP SDK
Go SDK
C SDK
C++ SDK
.NET SDK
Node.js
Browser.js
Android SDK
iOS SDK
通过 MOS Select,您可以使用简单的结构化查询语言(SQL)语句选取 MOS 中文件的内容,仅获取需要的数据。使用 MOS Select 可以减少从 MOS 传输的数据量,从而提高数据获取效率,节约时间。
说明 您可以在请求中将 SQL 表达式传递给 MOS。有关 MOS Select 支持的 SQL 语句和限制,请参考SelectObject。
控制台:选取内容
MOS SDK(目前 Java 和 Python 的 SDK 已支持 MOS Select)
文件格式:目前支持 RFC 4180 标准的 CSV(包括 TSV 等类 CSV 文件,文件的行列分隔符以及 Quote 字符都可自定义)和 JSON
文件,且文件编码为 UTF-8。
加密方式:MOS Select 支持 MOS 完全托管和通过 KMS 托管主密钥进行加密的文件。
摩杜云DataLakeAnalytics
Spark使用MOS Select加速数据查询
您可以通过MOS API中的GetBucket (ListObjects)或GetBucketV2 (ListObjectsV2) 接口列举您存储空间(Bucket)中的文件(Object)。
说明 GetBucket (ListObjects)接口已修订为GetBucketV2 (ListObjectsV2)。建议您在开 发应用程序时使用较新的版本GetBucketV2 (ListObjectsV2)。为保证向后兼容性,MOS继续 支持GetBucket (ListObjects)。有关GetBucketV2 (ListObjectsV2)的详情,请参见GetBucketV2 (ListObjectsV2)。
操作方式 | 说明 |
---|---|
控制台 | 可在控制台对应Bucket的文件管理内直接查看 |
图形化工具 MOSbrowser | 图形化工具,易操作 |
命令行工具 MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK Node.js SDK Browser.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
您可以调用GetBucketV2 (ListObjectsV2)或GetBucket
(ListObjects)接口,一次性列举某个Bucket下最多1000个Object。您可以通过以下参数实现多种列举功能:
GetBucketV2 (ListObjectsV2)
参数 | 说明 |
---|---|
Delimiter | 对Object名称进行分组的字符。所有Object名称包含指定 的前缀,第一次出现Delimiter字符之间的Object作为 一组元素(即CommonPrefixes)。 |
Start-after |
设定从Start-after之后按字母排序开始返回Object。 Start-after用来实现分页显示效果,参数的长度必须小于1024字节。 做条件查询时,即使Start-after在列表中不存在,也会从符合Start-after字母排序的下一个开始打印。 |
Continuation-token |
设定从此token开始返回Object。如果Max-keys的设定 无法一次完成列举,返回结果会附加 < NextContinu ationToken>作为下一次列举的Continuation-token。 |
Max-keys |
指定返回Object的最大数。 取值:0~1000 默认值:100 |
Prefix |
限定返回文件的Key必须以Prefix作为前缀。 如果把Prefix设为某个文件夹名,则列举以此Prefix开头的文件,即该文件夹下递归的所有文件和子文件夹。 在设置Prefix的基础上,将Delimiter设置为正斜线(/)时,返回值就只列举该文件夹下的文件,文件夹下的子文件夹名返回在CommonPrefixes中,子文件夹下递归的所有文件和文件夹不显示。 例如,一个Bucket中有三个Object ,分别为fun/test.jpg、 fun/movie/001.avi和fun/movie/007.avi。若设定Prefix为fun/, 则返回三个Object;如果在Prefix设置为fun/的基础上,将Delimiter设置为正斜 线(/),则返回fun/test.jpg和fun/movie/。
说明
|
Fetch-owner |
指定是否在返回结果中包含owner信息。 合法值:true、false。 true:表示返回结果中包含owner信息。 false:表示返回结果中不包含owner信息。 |
GetBucket (ListObjects)
参数 | 说明 |
---|---|
Delimiter |
对Object名称进行分组的字符。所有Object名称包含指定的前缀, 第一次出现Delimiter字符之间的Object作为一组元素(即CommonPrefixes)。 |
Marker |
设定从Marker之后按字母排序开始返回Object。 Marker用来实现分页显示效果,参数的长度必须小于1024字节。 做条件查询时,即使Marker在列表中不存在,也会从符合Marker字母排序的下一个开始打印。 |
Max-keys |
指定返回Object的最大数。 取值:0~1000 默认值:100 |
Prefix |
限定返回文件的Key必须以Prefix作为前缀。 如果把Prefix设为某个文件夹名,则列举以此Prefix开头 的文件,即该文件夹下递归的所有文件和子文件夹。 在设置Prefix的基础上,将Delimiter设置为正斜线(/)时,返回值就只列举该 文件夹下的文件,文件夹下的子文件夹名返回在CommonPrefixes中,子文件夹下递归的所 有文件和文件夹不显示。
说明
|
MOS是没有文件夹这个概念的,所有元素都是以Object来存储。创建模拟文件夹本质上来说是创建一个文件名以正斜线(/)结尾,大小为0
KB的Object。这个Object可以被上传和下载,只是控制台会对以正斜线(/)结尾的Object以文件夹的方式展示。
您可以通过Delimiter和Prefix参数的配合实现文件夹功能:
如果把Prefix设为某个文件夹名,就可以列举以此Prefix开头的文件,即该文件夹下递归的所有的文件和子文件夹(目录)。文件名在Contents中显示。
如果再把Delimiter设置为正斜线(/)时,返回值就只列举该文件夹下的文件和子文件夹(目录),该文件夹下的子文件名(目录)返回在CommonPrefixes部分,子文件夹下递归的文件和文件夹不被显示。
示例:
在名为MOS-sample的Bucket下有如下Object:
文件D
目录A/文件C
目录A/文件D
目录A/目录B/文件B
目录A/目录B/目录C/文件A
目录A/目录C/文件A
目录A/目录D/文件B
目录B/文件A
列出第一层目录和文件
将Prefix设置为空,Delimiter为正斜线(/)。返回结果如下:
< ?xml version="1.0" encoding="UTF-8"?>
< ListBucketResult>
< Name>MOS-sample< /Name>
< Prefix>< /Prefix>
< Marker>< /Marker>
< MaxKeys>1000< /MaxKeys>
< Delimiter>/< /Delimiter>
< IsTruncated>false< /IsTruncated>
< Contents>
< Key>文件D< /Key>
< LastModified>2015-11-06T10:07:11.000Z< /LastModified>
< ETag>"8110930DA5E04B1ED5D84D6CC4DC9080"< /ETag>
< Type>Normal< /Type>
< Size>3340< /Size>
< StorageClass>Standard< /StorageClass>
< Owner>
< ID>MOS< /ID>
< DisplayName>MOS< /DisplayName>
< /Owner>
< /Contents>
< CommonPrefixes>
< Prefix>目录A/< /Prefix>
< /CommonPrefixes>
< CommonPrefixes>
< Prefix>目录B/< /Prefix>
< /CommonPrefixes>
< /ListBucketResult>
Contents返回的是第一层的文件“文件D”;CommonPrefixes返回的是第
一层的目录“目录A/” 和“目录B/”,而“目录A/” 和“目录B/”下的文件名不显示。
列出目录A下的第二层目录和文件
将Prefix设置目录A,Delimiter为正斜线(/)。返回结果如下:
< ?xml version="1.0" encoding="UTF-8"?>
< ListBucketResult>
< Name>MOS-sample< /Name>
< Prefix>目录A/< /Prefix>
< Marker>< /Marker>
< MaxKeys>1000< /MaxKeys>
< Delimiter>/< /Delimiter>
< IsTruncated>false< /IsTruncated>
< Contents>
< Key>目录A/文件C< /Key>
< LastModified>2015-11-06T09:36:00.000Z< /LastModified>
< ETag>"B026324C6904B2A9CB4B88D6D61C81D1"< /ETag>
< Type>Normal< /Type>
< Size>2< /Size>
< StorageClass>Standard< /StorageClass>
< Owner>
< ID>MOS< /ID>
< DisplayName>MOS< /DisplayName>
< /Owner>
< /Contents>
< Contents>
< Key>目录A/文件D< /Key>
< LastModified>2015-11-06T09:36:00.000Z< /LastModified>
< ETag>"B026324C6904B2A9CB4B88D6D61C81D1"< /ETag>
< Type>Normal< /Type>
< Size>2< /Size>
< StorageClass>Standard< /StorageClass>
< Owner>
< ID>MOS< /ID>
< DisplayName>MOS< /DisplayName>
< /Owner>
< /Contents>
< CommonPrefixes>
< Prefix>目录A/目录B/< /Prefix>
< /CommonPrefixes>
< CommonPrefixes>
< Prefix>目录A/目录C/< /Prefix>
< /CommonPrefixes>
< CommonPrefixes>
< Prefix>目录A/目录D/< /Prefix>
< /CommonPrefixes>
< /ListBucketResult>
Contents返回的是第二层的文件“目录A/文件C”、“目录A/文件D”;CommonPr efixes返回的是第二层的目录“目录A/目录B/”、“目录A/目录C/”和“目录A/目录D/”,而目录下的文件名不会被显示。
拷贝文件是指在不改变文件内容的情况下,将某个存储空间(Bucket)内的一些文件(Object)复制到另外一个 Bucket 中。
说明
1GB 以下的文件使用简单拷贝,MOS API 接口为 CopyObject。
1GB 以上的文件使用分片拷贝,MOS API 接口为 UploadPartCopy。
操作方式 | 说明 |
---|---|
图形化工具 MOSbrowser |
图形化工具,易操作
注意 仅可以用于拷贝 5GB 以下的文件。 |
命令行工具 MOSutil | 命令行工具,性能好 |
Java SDK |
丰富、完整的各类语言 SDK demo |
您可以在以下场景中使用拷贝文件功能:
备份 Object
当您需要将您的 Object 备份保存的时候,可以调用 CopyObject 接口,将 Object 拷贝至同地域的另一个 Bucket 中。
重命名 Object
由于 MOS 不提供重命名功能,如果您需要对 Object 进行重命名,可以调用 CopyObject 接口先将原来的 Object
拷贝后重新命名保存,之后删除源 Object。
修改 Object 的 meta 信息
如果您仅需要修改某个 Object 的 Meta 信息,同样可以调用 CopyObject 接口,将 Object 复制后保存在同样的位置,同时修改
meta 信息,这样 MOS
就会仅更新 Object Meta 信息。Object Meta 信息可以参考 Object Meta。
拷贝文件时,有以下注意事项:
您需要有源 Object 的读取权限及目标 Bucket 的读写权限,否则会无法完成操作。
不支持跨 Region 拷贝数据。例如不支持将杭州 Bucket 里的 Object 拷贝到青岛的 Bucket 中。
不能对追加上传产生的 Object 进行拷贝。
拷贝文件时默认会覆盖同名文件, 为防止文件被意外覆盖,您可以通过以下方式保护您的文件。
开启版本控制功能
开启版本控制功能后,被删除或覆盖的文件会以历史版本的形式保存下来。您可以随时恢复历史版本文件。详情请参见版本控制介绍。
在拷贝请求中携带禁止覆盖同名文件的参数
在拷贝请求的 header 中携带 x-MOS-forbid-overwrite,并指定其值为
true。当您拷贝的文件在目的端存在同名文件时,该文件会拷贝失败,并返回FileAlreadyExists错误。更多详情请参见 CopyObject。
当不携带此参数或此参数的值为false时,同名文件会被覆盖。
您在访问归档存储或冷归档存储类型的文件(Object)之前,需要先通过RestoreObject接口解冻文件。本文介绍如何解冻文件。
说明 解冻文件的API接口的详细信息请参见RestoreObject。
归档存储类型的文件在执行解冻前后的状态变换过程如下:
i.归档存储类型文件初始时处于冷冻状态。
ii.提交一次解冻请求后,文件处于解冻中的状态,完成解冻任务通常需要1分钟。
iii.服务端完成解冻任务后,文件进入解冻状态,此时您可以对文件进行任何操作。解冻状态默认持续24小时,24小时内再次调用RestoreObject接口可将解冻状态延长24小时,最多可延长至7天。
iv.解冻状态结束后,文件再次返回到冷冻状态。
冷归档类型的文件在执行解冻前后的状态变换过程如下:
i.冷归档类型的文件初始时处于冷冻状态。
ii.提交一次解冻请求后,文件处于解冻中的状态。不同优先级的首字节取回时间如下:
高优先级(Expedited):1小时以内
标准(Standard):2~5小时
批量(Bulk):5~12小时
iii.服务端完成解冻任务后,文件进入解冻状态,此时您可以读取文件。您可以指定解冻的天数,最短是1天,最长是7天。
iv.解冻状态结束后,文件再次返回到冷冻状态。
解冻归档存储和冷归档存储类型文件会产生数据取回费用。详情请参见数据处理费用。
解冻状态最多可保持7天,延长解冻时间的操作不会产生数据取回费用。
解冻状态结束后,文件又回到冷冻状态,再次执行解冻操作会收取数据取回费用。
冷归档存储类型文件在数据解冻时会生成一份标准存储类型的文件副本用于访问。该文件在解冻时间结束前会以标准存储的存储费率计算临时存储费用。
删除文件即删除上传到存储空间(Bucket)中的文件(Object)。
MOS允许您执行如下删除动作:
单个删除:指定某个Object进行删除。
批量删除:一次最多可指定1000个Object进行删除。
自动删除:如果需要删除的Object数目很多,而且删除的Object有一定的规律,比如定期删除某些天之前的Object,或者是要清空整个Bucket,推荐使用生命
周期管理来自动删除Object。设置了生命周期规则之后,MOS会根据规则自动删除到期的Object,从而极大减少您发送删除请求的次数,提高删除效率。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
图形化工具MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Android SDK iOS SDK Node.js SDK Browser.js SDK Ruby SDK | 丰富、完整的各类语言SDK demo |
当您的用户向您的对象存储MOS请求的数据不存在时,本应返回404错误。若您设置了回源规则,填写了数据的正确地址,用户可以通过回源规则从MOS获取到正确的数据。
回源类型分为镜像和重定向两种方式,可以满足您对于数据热迁移、特定请求的重定向等需求。配置回源规则的API接口详细信息,请参见PutBucketWebsite。
回源规则最多配置20条,按RuleNumber的先后顺序依次匹配。如果命中当前规则,则后续规则不再匹配。规则未命中表示没有匹配回源条件,与回源后是否成功获取目标文件无关。
回源地址不能设置为内网地址。
回源规则和版本控制功能无法同时配置,若存储空间已开启版本控制,则无法配置回源规则。
对于镜像回源,中国各地域默认QPS为2000、流量为2 Gbit/s;海外各地域默认QPS为1000、流量为1 Gbit/s。
对于镜像回源,回源地址中支持增加图片处理参数,但不支持增加视频截帧参数。
镜像回源默认超时时间为10秒。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
当客户端通过GetObject请求Bucket中的某个文件不存在时,MOS会向回源 地址请求这个文件。获取到该文件后,MOS会将文件存入目标Bucket,并返回给用户。具体流程如下图所示。
使用场景
镜像回源主要用于数据无缝迁移到MOS的场景。例如某服务已经在自己建立的源站或者在其他云产品上运行。现因业务发展,需要将数据迁移到MOS上,但是又不能停止服务,此时可以在迁移数据的同时,使用镜像回源功能保证业务的正常进行。详细案例请参见互联网公司业务无缝迁移至摩杜云MOS。
细节分析
回源规则触发条件
只有当GetObject本应该返回404的情况下,MOS才会执行镜像回源,向源站请求文件。
回源文件命名规则
MOS向源站请求的URL为http(s)://MirrorURL+ObjectName,回源到MOS的文件名为ObjectName。例如某Bucket设置的回源地址为https://www.moduyun.com,某用户请求的文件example.jpg不在该Bucket中。则MOS会通过https://www.moduyun.com/example.jpg获取文件,存储到MOS的文件名为example.jpg。
回源请求失败返回规则
如果镜像源也不存在此文件,即镜像源返回给MOS的HTTP状态码为404,那么MOS也会返回404给用户。如果是其他非200的状态码(包括因为网络原因等获取不到文件的错误情况),MOS将返回424
MirrorFailed给用户。
x-MOS-tag响应头
通过镜像回源的文件会添加一个x-MOS-tag响应头,值为MIRROR。格式为x-MOS-tag:MIRROR。
文件回源到MOS后,只要文件不被覆盖,每次下载这个文件都会添加这个头部,用于表示这个文件来源于镜像回源。
回源文件更新规则
若某个文件已经通过镜像回源到MOS,源站的源文件发生了变化,MOS不会更新该文件。
回源文件元信息
MOS会将源站返回的以下HTTP头存为MOS文件的元信息:
Content-Type
Content-Encoding
Content-Disposition
Cache-Control
Expires
Content-Language
Access-Control-Allow-Origin
HTTP请求规则
传给MOS的Header信息不会传递给源站,QueryString信息是否会传递给源站取决于控制台回源规则中的配置。
如果源站是chunked编码返回,那么MOS返回给用户的也是chunked编码。
重定向功能的作用是根据设置的回源条件,以及相应的跳转的配置,向用户返回一个3xx跳转。具体流程如下图所示。
使用场景:
其他数据源向MOS的无缝迁移
用户异步的从自己的数据源向MOS迁移数据,在此过程中未迁移到MOS的数据通过URL
rewrite的方式返回给用户一个302重定向请求,用户的客户端根据302中的Location从自己的数据源读回数据。
配置页面跳转功能
例如用户希望隐藏自己的某些前缀开头的Object,给访问者返回一个特殊的页面。
配置发生404或500错误时的跳转页面
发生以上错误的时候用户可以看到一个预先设定的页面,不至于系统发生错误的时候向用户完全暴露MOS的错误。
MOS支持使用对象标签(Object Tagging)对存储的对象(Object)进行分类,您可以针对同标签的Object设置生命周期规则、访问权限等。
说明 使用对象标签会收取一定的费用,详情请参见MOS产品定价。
对象标签使用一组键值对(Key-Value)标记对象,您可以在上传文件时添加标签,也可以为现有文件添加标签。
单个文件最多可设置10个标签,Key不可重复。
每个Key长度不超过128字节,每个Value长度不超过256字节。
Key和Value区分大小写。
标签合法字符集包括大小写字母、数字、空格和以下符号:
+‑=._:/
只有Bucket拥有者和授权用户拥有读写对象标签的权限,该权限不受对象ACL控制。
跨区域复制时,对象标签也会复制到目的端。
对象标签不受文件目录限制,您可以批量操作拥有指定标签的对象,例如:
设置针对指定标签的生命周期规则。例如,周期性生成的非长期保存的文件,可以在上传时设置指定的标签,之后通过生命周期规则,将拥有这个标签的文件定期删除。
设置RAM权限,允许访问拥有指定标签的Object。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK Go SDK C++ SDK |
丰富、完整的各类语言SDK demo |
对象标签涉及的API接口
PutObjectTagging:设置对象的标签。若对象已有标签,则覆盖原标签。
GetObjectTagging:读取对象的标签。
DeleteObjectTagging:删除某个对象关联的标签。
PutObject:用户可在上传对象时通过x‑MOS‑tagging请求头指定对象标签。
InitiateMultipartUpload:用户可在初始化分片上传时,通过x‑MOS‑tagging请求头指定对象标签。
CopyObject:复制对象时可通过x-MOS-tagging-directive请求头指定是否复制源对象标签,通过x‑MOS‑tagging请求头指定目标对象标签。
GetObject:当用户拥有读取对象标签的权限时,响应头中会带有x‑MOS‑tagging‑count标识对象的标签个数。
HeadObject:当用户拥有读取对象标签的权限时,响应头中会带有x‑MOS‑tagging‑count标识对象的标签个数。
权限说明
能够进行Tag相关操作的用户、角色、服务,必须具有如下相关权限:
GetObjectTagging:获取对象标签的权限。拥有此权限,可以查看到文件的已有标签。
PutObjectTagging:设置对象标签的权限。拥有此权限,可以为文件设置标签。
DeleteObjectTagging:删除对象标签的权限。拥有此权限,可以删除文件的标签。
在生命周期规则配置中,您可以指定生命周期规则生效的条件。生命周期规则可针对前缀或对象标签生效,您也可以同时指定两者作为条件。
Tag条件中,标签的Key和Value必须同时匹配。
同一个规则中,若同时配置了前缀和多个对象标签,则对象需满足前缀且同时匹配规则中所有对象标签,才视为适用于该规则。
示例:
< LifecycleConfiguration>
< Rule>
< ID>r1< /ID>
< Prefix>rule1< /Prefix>
< Tag>< Key>xx< /Key>< Value>1< /Value>< /Tag>
< Tag>< Key>yy< /Key>< Value>2< /Value>< /Tag>
< Status>Enabled< /Status>
< Expiration>
< Days>30< /Days>
< /Expiration>
< /Rule>
< Rule>
< ID>r2< /ID>
< Prefix>rule2< /Prefix>
< Tag>< Key>xx< /Key>< Value>1< /Value>< /Tag>
< Status>Enabled< /Status>
< Transition>
< Days>60< /Days>
< StorageClass>Archive< /StorageClass>
< /Transition>
< /Rule>
< /LifecycleConfiguration>
以上规则中:
以rule1为前缀且同时拥有标签xx=1和yy=2的对象在30天后被删除。
以rule2为前缀且拥有标签xx=1的对象在60天后被转换为Archive(归档存储)。
说明 更多信息请参见管理文件生命周期。
您可以授权您的RAM用户拥有管理对象标签权限,也可以授权RAM用户管理拥有指定对象标签的Object的权限。
授予RAM用户管理对象标签的权限
您可以授予RAM用户操作所有对象标签的权限,也可以授予RAM用户仅可以操作指定对象标签的权限。例如,授予用户A可以设置的对象标签为allow=yes,则该用户仅可以给对象增加allow=yes的标签,
RAM策略如下。
{
"Version": "1",
"Statement": [
{
"Action": "MOS:PutObjectTagging",
"Effect": "Allow",
"Resource": "*",
"Condition": {
"StringEquals": {
"MOS:RequestObjectTag/allow": [
"yes"
]
}
}
}
]
}
注意 授予RAM用户可以设置指定对象标签后,该用户仅可针对已有对象设置指定标签,无法在上传对象时设置指定标签。
授予RAM用户管理拥有指定标签的对象
您可以授权RAM用户操作所有拥有指定标签的Object。例如,授予用户A可以访问对象标签为allow=yes的所有Object,RAM策略如下。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "MOS:GetObject",
"Resource": "*",
"Condition": {
"StringEquals": {
"MOS:ExistingObjectTag/allow": [
"yes"
]
}
}
}
]
}
与传统文件系统中的层级结构不同,MOS内部使用扁平结构存储数据。即所有数据均以对象(Object)的形式保存 在存储空间(Bucket)中。为方便您对Object进行分组并简化权限管理,您可以创建目录,然后将目标文件存放至指定目录。
MOS将以正斜线(/)结尾的Object视为目录。例如目标存储空间examplebucket下的目录及文件结构如下图所示:
examplebucket
└── log/
├── date1.txt
├── date2.txt
├── date3.txt
└── destfolder/
└── 2021/
├── photo.jpg
以上结构示意图表明:
以log为前缀的文件共有三个,分别为log/date1.txt、log/date2.txt和log/date3.txt。控制台会显示名为log的目录,如果您在控制台中打开该目录,将看到三个文件,分别为date1.txt、date2.txt
和 date3.txt。
以destfolder为前缀的文件为destfolder/2021/photo.jpg。控制台将显示名为destfolder的目录,其中包含子目录2021,子目录下包含文件photo.jpg。
例如,您希望授予第三方用户对上述示例的目标存储空间examplebucket下不同目录或者文件有不同的访问权限,您可以通过以下方式来实现:
log目录的三个文件log/date1.txt、log/date2.txt和log/date3.txt,分别用于存储某用户近三天访问MOS的日志。经发现近三天出现了访问速度下降、上传文件失败的情况,该用户希望相关技术支持人员可以查看log目录下的所有文件,以协助排查并解决问题。此时,您可以通过Bucket
Policy授权用户访问指定资源,具体步骤请参见配置Bucket Policy。
destfolder/2021/photo.jpg文件为公司全员2021年外出春游合照,希望公司全员都可以查看。此时,您可以将文件读写权限ACL设置为公共读,具体步骤请参见设置文件读写权限ACL。
仅允许通过控制台、图形化管理工具MOSbrowser以及命令行工具MOSutil创建目录。 目录创建完成后,您可以将文件上传到指定目录。当您不希望保留该目录时,也可以通过以上三种方式删除目录。
操作 | 方式 |
---|---|
创建目录 |
控制台 命令行管理工具MOSutil 图形化管理工具MOSbrowser |
删除目录 |
控制台 命令行管理工具MOSutil 图形化管理工具MOSbrowser |
MOS不支持通过API的方式新建或删除目录。但是您可以在使用各语言SDK时,通过添加正斜线(/)或指定Prefix的形式模拟目录的创建或删除操作。
通过将保存到MOS的文件名称ObjectName或Key设置为以正斜线(/)分隔的形式来创建目录。例如当您将本地文件localfile.txt上传至目标存储空间examplebucket时,如果ObjectName设置为destfolder/localfile.txt,则examplebucket下将创建大小为0的目录destfolder,目录下包含了文件localfile.txt。以Java
SDK为例,具体步骤请参见上传文件。
通过指定Prefix的方式删除目录及目录下的所有文件。例如Prefix指定为log,则所有以log开头的目录或文件都会被删除。以Java
SDK为例,具体步骤请参见删除文件。
您可以使用SelectObject用目标文件执行SQL语句,返回执行结果。
目前Hadoop
3.0已经支持MOS在EMR上运行Spark、Hive、Presto等服务,以及摩杜云自研的MaxCompute、HybridDB以及新上线的Data Lake
Analytics都支持从MOS直接处理数据。
MOS提供的GetObject接口决定了大数据平台只能把MOS数据全部下载到本地然后进行分析过滤,在很多查询场景下浪费了大量带宽和客户端资源。
SelectObject接口是对上述问题的解决方案。其核心思想是大数据平台将条件、Projection下推到MOS层,让MOS做基本的过滤,从而只返回有用的数据。客户端一方面可以减少网络带宽,另一方面也减少了数据的处理量,从而节省了CPU和内存用来做其他更多的事情。这使得基于MOS的数据仓库、数据分析成为一种更有吸引力的选择。
以下内容是对SelectObject支持的文件类型、支持的SQL语法等的详细介绍。
SelectObject支持的文件类型
说明 SelectObject和Normal类型文件配合性能更佳。 Multipart以及Appendable类型的文件由于其内部结构差异导致性能较差。
RFC 4180标准的CSV(包括TSV等类CSV文件,文件的行列分隔符以及Quote字符都可自定义)。
JSON文件,且文件编码为UTF-8。JSON支持DOCUMENT和LINES两种文件。
DOCUMENT是指整个文件是单一的JSON对象。
LINES表示整个文件由一行行的JSON对象组成,每一行是一个JSON对象(但整个文件本身并不是一个合法的JSON对象),行与行之间以换行分隔符隔开。MOS
Select可以支持常见的\n,\r\n等分隔符,且无需用户指定。
标准存储类型和低频访问存储类型的文件。归档存储和冷归档存储类型文件需要先执行解冻操作。
MOS完全托管加密、KMS托管主密钥加密的文件。
支持的SQL语法
SQL 语句: Select From Where
数据类型:string、int(64bit)、double(64bit), decimal(128) 、timestamp、bool
操作: 逻辑条件(AND,OR,NOT), 算术表
达式(+-*/%), 比较操作(>,=, < ,>=, <=, !=),String 操作 (LIKE, || )
注意 like模糊匹配时对字母大小写敏感。
分片查询
和GetObject提供的基于Byte的分片下载类似,SelectObject也提供了分片查询的机制,包括以下两种分片方式:
按行分片:常用的分片方式,然而对于稀疏数据来说,按行分片可能会导致分片时负载不均衡。
按Split分片:Split是MOS用于分片的一个概念,一个Split包含多行数据,每个Split的数据大小大致相等。
注意 按Spit分片比按行分片更加高效。
数据类型
MOS中的CSV数据默认都是String类型,用户可以使用CAST函数实现数据转换,比如下面的SQL查询将_1和_2转换为int后进行比较。
Select * from MOSOBject where cast (_1 as int) > cast(_2 as
int)
同时,对于SelectObject支持在Where条件中进行隐式的转换,比如下面的语句中第一列和第二列将被转换成int:
Select _1 from MOSobject where _1 + _2 > 100
对于JSON文件,如果在SQL中未指定cast函数,则其类型根据JSON数据的实际类型而定,标准JSON内建的数据类型包括null、bool、int64、double、string等类型。
常见的SQL用例包括CSV及JSON两种。
常见的SQL用例(CSV)
应用场景 | SQL语句 |
---|---|
返回前10行数据 | select * from MOSobject limit 10 |
返回第1列和第3列的整数,并且第1列大于第3列 | select _1, _3 from MOSobject where cast(_1 as int) > cast(_3 as int) |
返回第1列以'陈'开头的记录的个数(注:此处like后的中文需要用UTF-8编码) | select count(*) from MOSobject where _1 like '陈%' |
返回所有第2列时间大于2018-08-09 11:30:25且第3列大于200的记录 s | elect * from MOSobject where _2 > cast('2018-08-09 11:30:25' as timestamp) and _3 > 200 |
返回第2列浮点数的平均值,总和,最大值,最小值 | select AVG(cast(_2 as double)), SUM(cast(_2 as double)), MAX(cast(_2 as double)), MIN(cast(_2 as double)) |
返回第1列和第3列连接的字符串中以'Tom'为开头以’Anderson‘结尾的所有记录 | select * from MOSobject where (_1 || _3) like 'To>m%Anderson' |
返回第1列能被3整除的所有记录 | select * from MOSobject where (_1 % 3) = 0 |
返回第1列大小在1995到2012之间的所有记录 | select * from MOSobject where _1 between 1995 and 2012 |
返回第5列值为N,M,G,L的所有记录 | select * from MOSobject where _5 in ('N', 'M', 'G', 'L') |
返回第2列乘以第3列比第5列大100以上的所有记录 | select * from MOSobject where _2 * _3 > _5 + 100 |
常见的SQL用例(JSON)
假设JSON文件如下:
{
"contacts":[
{
"firstName": "John",
"lastName": "Smith",
"isModuve": true,
"age": 27,
"address": {
"streetAddress": "21 2nd Street",
"city": "New York",
"state": "NY",
"postalCode": "10021-3100"
},
"phoneNumbers": [
{
"type": "home",
"number": "212 555-1234"
},
{
"type": "office",
"number": "646 555-4567"
},
{
"type": "mobile",
"number": "123 456-7890"
}
],
"children": [],
"spouse": null
},…… #此处省略其他类似的节点
]}
SQL用例如下:
应用场景 | SQL语句 |
---|---|
返回所有age是27的记录 | select * from MOSobject.contacts[*] s where s.age = 27 |
返回所有的家庭电话 | select s.number from MOSobject.contacts[*].phoneNumbers[*] s where s.type = “home” |
返回所有单身的记录 | select * from MOSobject s where s.spouse is null |
返回所有没有孩子的记录 | select * from MOSobject s where s.children[0] is
null
说明 目前没有专用的空数组的表示方法,用以上语句代替。 |
SelectObject通常用于大文件分片查询、JSON文件查询、日志文件分析等场景。
大文件分片查询
如果确定该CSV文件列中不含有换行符,则基于Bytes的分片由于不需要创建Meta,其使用最为简便。如果列中包含换行符或者是JSON文件时,则使用以下步骤:
i.调用CreateSelectObjectMeta
API获得该文件的总的Split数。理想情况下如果该文件需要用SelectObject,则该API最好在查询前进行异步调用,这样可以节省扫描时间。
ii.根据客户端资源情况选择合适的并发度n,用总的Split数除以并发度n得到每个分片查询应该包含的Split个数。
iii.在请求Body中用诸如split-range=1-20的形式进行分片查询。
iv.合并结果。
查询JSON文件时,在SQL的From 语句中尽可能的缩小From后的JSON Path 范围。
如下是JSON文件示例:
{ contacts:[
{“firstName”:”John”, “lastName”:”Smith”, “phoneNumbers”:[{“type”:”home”, “number”:”212-555-1234”}, {“type”:”office”, “number”:”646-555-4567”}, {“type”:”mobile”, “number”:”123 456-7890”}], ”address”:{“streetAddress”: “21 2nd Street”, “city”:”New York”, “state”:NY, “postalCode”:”10021-3100”}
}
]}
如果要查找所有postalCode为 10021开头的streetAddress,SQL可以写为 select
s.address.streetAddress from MOSobject.contacts[*] s where
s.address.postalCode like
‘10021%’或者select s.streetAddress from MOSobject.contacts[*].address
s where
s.postalCode like ‘10021%’
由于select s.streetAddress from MOSobject.contacts[*].address s
where
s.postalCode like ‘10021%’的JSON Path更加精确,因此性能更优。
在JSON文件中处理高精度浮点数
在JSON文件中需要进行高精度浮点数的数值计算时,建议设置ParseJsonNumberAsString选项为true,
同时将该值cast成Decimal。比如一个属性a值为123456789.123456789,用select s.a from
MOSobject s where
cast(s.a as decimal) > 123456789.12345就可以保持原始数据的精度不丢失。
文件元信息是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定 义元数据(User Meta)两种。您可以通过设置文件HTTP头来自定义HTTP请求的策略, 例如文件(Object)缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。
MOS将为上传至Bucket中的每个Object保留如下HTTP标准属性。
名称 | 描述 |
---|---|
Content-Type | 指定Object的内容类型。内容类型决定浏览器将以什么形式、什么编码读取文 件。如果没有指定内容类型,则根据文件的扩展名生成。如果文件没有扩展名,则 内容类型的默认值application/octet-stream。Content-Type的常见 设置请参见MOS如何设置Content-Type(MIME)? |
Content-Encoding |
声明Object的编码方式。您需要按照Object
的实际编码类型填写,否则可能造成客户端(浏览器)解析编码失败或Object下载失败。若Object未编码,请置空此项。取值如下:
identity(默认值):表示Object未经过压缩或编码。 gzip:表示Object采用Lempel-Ziv(LZ77)压缩算法以及32位CRC校验的编码方式。 compress:表示Object采用Lempel-Ziv-Welch(LZW)压缩算法的编码方式。 deflate:表示Object采用zlib结构和deflate压缩算法的编码方式。 br:表示Object采用Brotli算法的编码方式。 |
Content-Language | 声明Object内容使用的语言。 |
Content-Disposition |
指定Object的展示形式。取值如下:
inline:预览Object。 attachment:将Object下载到本地。例如attachment; filename="example.jpg",表示下载Object到本地并以example.jpg文件名进行保存。
说明
|
Cache-Control |
指定Object的缓存行为。取值如下:
no-cache:不可直接使用缓存,而是先到服务端验证Object是否已更新。如果Object已更新,表明缓存已过期,需从服务端重新下载Object;如果Object未更新,表明缓存未过期,此时将使用本地缓存。 no-store:所有内容都不会被缓存。 public:所有内容都将被缓存。 private:所有内容只在客户端缓存。 max-age=< seconds>:缓存内容的相对过期时间,单位为秒。此选项仅在HTTP 1.1中可用。 |
Expires | 缓存内容的绝对过期时间,格式是格林威治时间(GMT)。例如2022-1 0-12T00:00:00.000Z。如果Cache-Control设置了max-age=< seconds> ,以max-age=< seconds>为准。 |
Last-Modified | Object的最后修改时间。 |
Content-Length | Object的大小,单位为字节。 |
您可以在上传Object时,为Object添加自定义元数据(User Meta),用于标识Object的用途或属性等。
一个Object可以有多个自定义元数据,但所有的自定义元数据总大小不能超过8 KB。
自定义元数据是一组键值对,元数据名称必须以x-MOS-meta-开头。例如x-MOS-meta-last-modified:20210506,可用于记录本地文件最后修改时间为2021年5月6日。
调用GetObject或者HeadObject接口时,将在HTTP头部返回自定义元数据。
您可以选用如下任意方式设置、获取以及修改文件元信息。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
图形化工具 MOSbrowser | 图形化工具,易操作。 |
命令行工具 MOSutil | 命令行工具,性能好。 |
Java SDK |
丰富、完整的各类语言 SDK demo。 |
客户端访问MOS内的文件时会占用较大带宽,在一些不容易做流控的客户端上可能会对其他应用造成影响。 为避免这种问题,您可以通过MOS提供的单链接限速功能在上传、下载、拷贝文件时进行流量控制,以保证其他应用的网络带宽。
移动端、Web端等不易实现客户端限速的场景,可以通过单链接限速限制访问MOS的带宽,以保证其他应用的正常使用。
当您需要分享MOS内的文件给他人访问时,可以通过单链接限速限制此次访问的带宽,以保证您其他业务或其他用户的正常访问。
您可以在PutObject、AppendObject、PostObject、CopyObject、UploadPart、UploadPartCopy、GetObject请求中增加x-MOS-traffic-limit参数,并指定限速值,MOS将按照指定的限速值对此次请求进行限速。限速值范围为819200
bit/s~838860800 bit/s。具体操作方式如下:
分享文件时进行限速
您可以在分享给他人的文件URL中加入限速参数,当访问者使用该URL访问目标文件时会被限速。
分享公共读或公共读写文件
对于公共读或公共读写文件,您需要在分享的文件URL后面加入限速参数x-MOS-traffic-limit=< value>
。例如https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/video.mp4?x-MOS-traffic-limit=819200表示下载video.mp4文件时限速为100
KB/s。限速效果如下图所示:
分享私有文件
对于私有文件,您需要在生成签名URL时,将限速参数加入签名中一起计算。以Java SDK生成带限速参数的文件签名URL为例,代码如下:
// 目标Bucket所在地域的Endpoint,以华东1(杭州)地域为例。
String endpoint = "http://MOS-cn-hangzhou.moduyuncs.com";
// 拥有目标Bucket访问权限的AccessKey。摩杜云账号的AccessKey拥有所有资源的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 目标Bucket名称。
String bucketName = "yourBucketName"
// 目标文件名称。需填写包含文件路径在内的完整文件名,例如examplefolder/example.txt。
String objectName = "yourObjectName"
// 限速819200 bit/s,即100 KB/s。
int limitSpeed = 100 * 1024 * 8;
// 创建MOSClient实例。
MOS MOSClient = new MOSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 生成有效期为60秒的签名URL。
Date date = new Date();
date.setTime(date.getTime() + 60 * 1000);
GeneratePresignedUrlRequest request = new GeneratePresignedUrlRequest(bucketName, objectName, HttpMethod.GET);
request.setExpiration(date);
request.setTrafficLimit(limitSpeed);
URL signedUrl = MOSClient.generatePresignedUrl(request);
MOSClient.shutdown();
更多语言的SDK示例请参见:
Java SDK:使用签名URL方式上传下载限速
Python SDK:使用签名URL方式上传下载限速
Go SDK:使用签名URL方式上传下载限速
C++ SDK:使用签名URL方式上传下载限速
.NET SDK:使用签名URL方式上传下载限速
Node.js SDK:使用签名URL方式上传下载限速
客户端发起请求时限速
以Java SDK进行简单上传时限速为例,代码如下:
// 目标Bucket所在地域的Endpoint,以华东1(杭州)地域为例。
String endpoint = "http://MOS-cn-hangzhou.moduyuncs.com";
// 拥有目标Bucket访问权限的AccessKey。摩杜云账号的AccessKey拥有所有资源的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维。
String accessKeyId = "yourAccessKeyId";
String accessKeySecret = "yourAccessKeySecret";
// 目标Bucket名称。
String bucketName = "yourBucketName"
// 上传后的文件名称。需填写包含文件路径在内的完整文件名,例如examplefolder/example.txt。
String objectName = "yourObjectName"
// 本地文件路径。需填写包含文件路径在内的完整文件名。
String localFileName = "yourLocalFileName"
// 限速819200 bit/s,即100 KB/s。
int limitSpeed = 100 * 1024 * 8;
// 创建MOSClient实例。
MOS MOSClient = new MOSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
// 上传文件。
InputStream inputStream = new FileInputStream(localFileName);
PutObjectRequest PutObjectRequest = new PutObjectRequest(bucketName, key, inputStream);
PutObjectRequest.setTrafficLimit(limitSpeed);
MOSClient.putObject(PutObjectRequest);
MOSClient.shutdown();
更多语言的SDK示例请参见:
Java SDK:普通上传下载限速
Python SDK:普通上传下载限速
Go SDK:普通上传下载限速
C++ SDK:普通上传下载限速
.NET SDK:普通上传下载限速
Node.js SDK:普通上传下载限速
对象存储MOS提供丰富的访问和管理文件(Object)的方式,本文介绍如何批量管理Object。
您可以使用以下方法,批量上传文件:
MOSimport工具
支持从服务器本地、第三方云存储(S3、Azure、腾讯COS等)、MOS等数据源将数据批量迁移到MOS,
特别适合数据量很大的情况。详情请参见
说明及配置。
MOSutil工具
使用MOSutil工具的cp命令,结合-r(--recursive)选项,可批量上传文件到MOS。详情请参见
上传文件。
MOSbrowser工具
使用MOSbrowser工具批量选中文件后上传到MOS。详情请参见
上传文件。
MOS控制台
使用MOS控制台批量选中文件后上传到MOS。详情请参见
上传文件。
您可以使用以下方法,批量下载文件:
MOSutil工具
使用MOSutil工具的cp命令,结合-r(--recursive)选项,将指定文件目录内的文件批量下载到本地。详情请参见
下载文件。
MOSbrowser工具
使用MOSbrowser工具勾选多个文件或文件目录,将文件或文件目录批量下载到本地。详情请参见
下载文件。
MOS控制台
使用MOS控制台勾选多个文件,将文件批量下载到本地。详情请参见
下载文件。
文件打包后下载
结合函数计算服务,您可以将批量文件打包后下载到本地。详情请参见使用函数计算打包下载MOS文件。
您可以使用以下方法,批量复制文件:
跨区域复制
通过跨区域复制可以对指定前缀文件进行批量复制。您还可以选择是否同步历史数据、是否同步删除操作。详情请参见设置跨区域复制。
MOSutil工具
使用MOSutil工具的cp命令,结合-r(--recursive)选项,将指定文件目录内的文件批量复制到另一个文件目录或同账号下的另一个存储空间内。详情请参见复制文件。
MOSbrowser工具
使用MOSbrowser工具勾选多个文件夹或文件,将一个或多个文件复制到另一个文件目录或同账号下另一个存储空间内。详情请参见复制文件。
您可以使用以下方法,批量删除文件:
警告 文件删除后不可恢复,请谨慎操作。
MOS SDK
使用SDK批量删除文件。
Java SDK
Python SDK
Go SDK
C++ SDK
更多语言的SDK示例请参见SDK 参考。
MOS API
通过MOS的DeleteMultipleObjects接口可批量删除文件。详情请参见DeleteMultipleObjects。
MOSutil工具
使用MOSutil的rm命令,结合-r(--recursive)选项,将指定前缀的文件批量删除。详情请参见
删除文件。
MOSbrowser工具
使用MOSbrowser工具勾选多个文件或文件目录,批量删除。详情请参见
删除文件。
MOS控制台
使用MOS控制台勾选多个文件,批量删除。详情请参见
删除文件。
您也可以直接删除某个文件目录,文件目录内的文件会同时被删除。
使用MOS控制台的碎片管理功能,批量删除碎片。详情请参见管理碎片。
生命周期规则
通过生命周期规则批量自动删除您的文件。详情请参见
生命周期规则介绍。
您可以使用以下方法,批量修改文件的存储类型:
MOSutil工具
使用MOSutil的set-meta命令,结合-r(--recursive)选项,批量修改指定文件的存储类型。详情请参见set-meta。
生命周期规则
通过生命周期规则批量自动修改文件的存储类型。详情请参见生命周期规则介绍。
您可以通过MOSutil工具批量修改文件ACL:
使用set-acl命令,结合-r(--recursive)选项,批量修改指定文件的ACL。详情请参见set-acl。
使用set-meta命令结合-r(--recursive)选项,通过修改指定文件的meta信息来修改文件的ACL。详情请参见set-meta。
您可以使用以下方法,批量将归档存储“冷冻”状态的文件恢复为可读:
MOSutil工具
使用restore命令,结合-r(--recursive)选项,批量恢复冷冻状态的文件为可读状态。详情请参见restore。
MOSbrowser工具
使用MOSbrowser工具勾选需要解冻的文件,批量解冻。
您可以使用以下方法,批量修改文件的Meta信息:
MOSutil工具
使用MOSutil的set-meta命令,结合-r(--recursive)选项,批量修改指定文件的meta信息。详情请参见set-meta。
此命令可用于批量修改文件的存储类型及文件访问权限。
MOS控制台
在控制台上勾选需要修改Http head信息的文件,批量设置文件的Meta信息。详情请参见设置文件HTTP头。
针对存放在Bucket的Object的访问,MOS提供了以下权限控制策略:
ACL |
MOS为权限控制提供访问控制列表(ACL)。ACL是基于资源的授权策略,可授予Bucket和Object访问权限。 您可以在创建Bucket或上传Object时设置 ACL,也可以在创建Bucket或上传Object 后的任意时间内修改ACL。 |
RAM Policy | RAM(Resource Access Management)是摩杜云提供的资源访问控制服务。 RAM Policy是基于用户的授权策略。通过设置RAM Policy,您可以集中管理您的用户(比如员工、系统或应用程序), 以及控制用户可以访问您名下哪些资源的权限,比如限制您的用户只拥有对某一个Bucket的读权限。 |
Bucket Policy | Bucket Policy是基于资源的授权策略。相比于RAM Policy,Bucket Policy操作简 单,支持在控制台直接进行图形化配置,并且Bucket拥有者直接可以进行访问授权,无需具备RAM操作权限。 Bucket Policy支持向其他账号的RAM用户授予访问权限,以及向匿名用户授予带特定IP条件限制的访问权限。 |
STS临时授权 | MOS可以通过摩杜云STS(Security Token Service)进行临时授权访问。通过STS, 您可以为第三方应用或子用户(即用户身份由您自己管理的用户)颁发一个自定义时效和权限的访问凭证。 |
防盗链 | MOS支持对存储空间(Bucket)设置防盗链,即通过对访问来源设置白名单的机制,避免MOS资源被其他人盗用。 |
当Bucket同时存在多个权限控制策略时,策略优先级如下:
不通过浏览器访问
若同时存在RAM Policy、Bucket Policy及防盗链时,可忽略防盗链配置。针对某个Object,RAM Policy和Bucket
Policy的所有策略都允许访问则为允许;任一策略禁止,则为禁止。
通过浏览器访问
若同时存在RAM Policy、Bucket Policy及防盗链时,针对某个Object,所有策略都允许访问则为允许;任一策略禁止,则为禁止。
默认情况下,为保证存储在MOS中数据的安全性,MOS资源(包括Bucket和Object)默认为 私有权限,只有资源拥有者或者被授权的用户允许访问。如果要授权他人访问或使用自己 的MOS资源,可以通过多种权限控制策略向他人授予资源的特定权限。仅当所 有的权限策略通过MOS鉴权后允许访问授权资源。
收到用户请求时,MOS会通过身份验证、基于角色的会话策略、基于身 份的策略(RAM Policy)、Bucket Policy、Object ACL、Bucket ACL等鉴权结果来判断是允许或拒绝该请求。
以上鉴权流程包含的权限状态说明如下:
Allow:允许访问请求,即比对Policy命中了Allow规则。
Explicit Deny:显式拒绝访问请求,即比对Policy命中了Deny规则
Implicit Deny:隐式拒绝访问请求,即Policy不存在、或比对Policy没有命中Allow或Deny规则。
1.检查身份验证是否成功
用户请求进入MOS后,MOS会对请求携带的签名和服务端计算的签名进行比对。
请求签名不匹配,则拒绝访问。
请求签名匹配,则继续判断是否为基于角色的会话策略。
2.判断是否为基于角色的会话策略
如果判断结果是基于角色的会话策略,则MOS会对Session Policy进行权限比对。
比对结果为Explicit Deny或Implicit Deny,则拒绝访问。
比对结果为Allow,则继续检查RAM Policy和Bucket Policy。
如果判断结果不是基于角色的会话策略,也会继续检查RAM Policy和Bucket Policy。
3.分别检查RAM Policy和Bucket Policy
RAM Policy是基于身份的策略。您可以使用RAM
Policy控制用户可以访问您名下哪些资源的权限。对于用户级别的访问,需要根据请求的账号类别判断允许或拒绝访问请求。
如果使用摩杜云账号AccessKey访问,直接返回Implicit Deny。
如果使用RAM用户AccessKey或STS的AccessKey访问,但是访问的Bucket不属于摩杜云账号或者RAM角色Owner,直接返回Implicit
Deny。
调用RAM服务提供的鉴权接口对普通请求进行身份鉴权,MOS支持RAM服务通过账号和Bucket所属资源组进行鉴权。检查返回结果为Allow、Explicit
Deny或Implicit
Deny。
Bucket Policy是基于资源的授权策略,Bucket Owner可以通过Bucket
Policy为RAM用户或其他帐号授权Bucket或Bucket内资源精确的操作权限。
如果未设置Bucket Policy,则直接返回Implicit Deny。
如果设置了Bucket Policy,则检查Bucket Policy返回结果是Allow、Explicit Deny或者Implicit
Deny。
4.合并结果中是否存在Explicit Deny策略
如果存在,则拒绝访问。如果不存在,则检查是否存在Allow策略。
检查RAM Policy或Bucket Policy中是否存在Allow策略。
如果存在Allow策略,则允许访问。如果不存在Allow策略,则判断请求来源。
判断请求来源。
如果是管控类API请求,则拒绝访问。如果为数据类API请求,则继续Object ACL或Bucket ACL的鉴权。
管控类API请求包括Service操作(GetService
(ListBuckets))、Bucket相关操作(例如PutBucket、GetBucketLifecycle等)、LiveChannel相关操作(例如PutLiveChannel、DeleteLiveChannel等)。
数据类API请求包括Object相关操作,例如PutObject、GetObject等。
5.鉴权Object ACL和Bucket ACL
根据Object ACL进行鉴权时,需要结合请求用户是否为Bucket Owner,以及请求类型为读请求或写请求进行判断。
如果判断结果是Allow,则允许访问。
如果判断结果是Deny,则拒绝访问。
如果Object ACL为继承Bucket,则继续检查Bucket ACL。
根据Bucket ACL进行鉴权时,需要结合请求用户是否为Bucket Owner进行判断。
如果判断结果是Allow,则允许访问。
如果判断结果是Deny,则拒绝访问。
MOS为权限控制提供访问控制列表(ACL)。ACL是授予Bucket和Object访问权限的访问策略。 您可以在创建存 储空间(Bucket)或上传文件(Object)时配置ACL,也可以在创建Bucket或上传Object后的任意时间内修改ACL。
说明
基于读写权限ACL的MOS API接口详细信息请参考:
设置Bucket ACL:PutBucketACL
获取Bucket ACL:GetBucketACL
设置Object ACL:PutObjectACL
获取Object ACL:GetObjectACL
Bucket ACL介绍
Bucket ACL是Bucket级别的权限访问控制。目前有三种访问权限:public-read-write、public-read和private,含义如下:
权限值 | 中文名称 | 权限对访问者的限制 |
---|---|---|
public-read-write | 公共读写 | 任何人(包括匿名访问)都可以对该Bucket中 的Object进行读、写、删除操作;所有这些操作产生的费用由该Bucket的Owner承担,请慎用该权限。 |
public-read | 公共读,私有写 | 只有该Bucket的Owner或者授权对象可以对 存放在其中的Object进行写、删除操作;任何人(包括匿名访问)可以对Object进行读操作。 |
private | 私有读写 | 只有该Bucket的Owner或者授权对象可以对存放在 其中的Object进行读、写、删除操作;其他人在未经授权的情况下无法访问该Bucket内的 Object。 |
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
图形化工具MOSbrowser | 图形化工具,易操作。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo。 |
Object ACL介绍
Object
ACL是Object级别的权限访问控制。目前有四种访问权限:private、public-read、public-read-write、default。PutObjectACL
操作通过 Put 请求中的x-MOS-object-acl头来设置,这个操作只有Bucket Owner有权限执行。
Object ACL的四种访问权限含义如下:
权限值 | 中文名称 | 权限对访问者的限制 |
---|---|---|
public-read-write | 公共读写 | 该ACL表明某个Object是公共读写 资源,即所有用户拥有对该Object的读写权限。 |
public-read | 公共读,私有写 | 该ACL表明某个Object是公共读资源, 即非Object Owner只有该Object的读权限,而Object Owner拥有该Object的读写权限。 |
private | 私有读写 | 该ACL表明某个Object是私有资源,即只有该Object的Owner拥有该Object的读写权限,其他的用户没有权限操作该Object。 |
default | 默认权限 | 该ACL表明某个Object是遵循Bucket读写权限的资源,即Bucket是什么权限,Object就是什么权限。 |
说明
如果没有设置Object的权限,即Object的ACL为default,Object的权限和Bucket权限一致。
如果设置了Object的权限,Object的权限大于Bucket权限。例如,设置了Object的权限是public-read,则无论Bucket是什么权限,该Object都可以被身份验证访问和匿名访问。
操作方式
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
图形化工具MOSbrowser | 图形化工具,易操作。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK Python SDK PHP SDK Go SDK C SDK .NET SDK |
丰富、完整的各类语言SDK demo。 |
Bucket Policy是摩杜云MOS推出的针对Bucket的授权策略,您可以通过Bucket Policy授权其他用户访问您指定的MOS资源。
Bucket Policy通常应用于以下场景的授权访问:
需要进行跨账号或对匿名用户授权访问或管理整个Bucket或Bucket内的部分资源。
需要对同账号下的不同RAM用户授予访问或管理Bucket资源的不同权限,例如只读、读写或完全控制的权限。
您可以选用以下多种操作方式配置不同场景的Bucket Policy。
操作方式 | 说明 |
---|---|
控制台 |
通过控制台图形化界面的方式配置Bucket Policy 通过策略语法的方式配置Bucket Policy 基于Bucket Policy实现跨部门数据共享 基于Bucket Policy实现跨账号访问MOS |
命令行工具MOSutil |
bucket-policy(授权策略) |
不同语言SDK |
Java SDK PHP SDK Node.js SDK Python SDK .NET SDK Go SDK C++ SDK |
企业不同部门或项目之间需要共享数据, 本部门允许其他部门的用户下载共享数据, 禁止写入和删除数据,以降低共享数据被误删、篡改的风险。
部门A将存储在example-bucket存储空间(Bucket)中的数据共享给部门B的用户,并允许部门B的用户下载数据。 本文介绍如何以最小权限原则对共享数据进行权限控制。在本场景下两个部门的管理员、用户与共享存储空间之间的逻辑关系如下图所示:
在此场景下,A部门的管理员可以通过配置Bucket Policy, 授予B部门用户允许下载,但禁止写入和删除共享数据的权限。具体配置流程如下:
步骤1:创建Bucket
A部门管理员创建一个用于共享数据的Bucket(example-bucket)。
步骤2:授予上传权限
A部门管理员通过Bucket Policy,授权本部门用户上传共享数据的权限。
步骤3:授予允许下载、禁止写入和删除的权限
A部门管理员通过配置Bucket Policy,授权B部门用户允许下载、禁止写入和删除的权限。
步骤4:上传数据
A部门用户上传数据到example-bucket。
步骤5:验证权限
验证B部门用户对共享数据仅拥有下载权限、但无法对共享数据进行写入和删除操作。
企业账号已通过访问控制RAM创建A部门管理员用户及其普通用户、B部门管理员用户及其普通用户。
有关创建RAM用户的详情,请参见
创建RAM用户。
已获取RAM用户UID。
有关查看RAM用户基本信息,例如UID等,详情请参见
查看RAM用户基本信息。
已为RAM用户授权
在创建管理员用户时,A部门的管理员由于要执行创建Bucket、配置Bucket
Policy等操作,因此需要管理员所属用户组具有ModuyunMOSFullAccess权限。有关RAM用户授权详情,请参见
为RAM用户授权。
A部门管理员创建Bucket的具体步骤如下:
1.使用A部门管理员账号登录
MOS管理控制台。
2.单击Bucket列表,之后单击创建Bucket。
3.在创建Bucket页面配置Bucket参数。
结合本示例场景,请将Bucket命名为example-bucket。有关配置Bucket其他各项参数的详情,请参见
创建存储空间。
4.单击确定。
部门A的管理员为本部门的用户配置允许上传共享数据的权限,具体步骤如下:
1.单击步骤1中创建的example-bucket。
2.单击权限管理 > Bucket授权策略 > 设置。
3.在授权对话框,单击新增授权。
4.在新增授权页面,结合本示例场景配置各项参数说明如下:
配置项 | 说明 |
---|---|
授权资源 | 选择整个Bucket,授权策略对整个Bucket生效。 |
授权用户 |
选择选择子账号。
您可以从下拉菜单中选择部门A管理员账号下允许上 传数据的用户账号。若部门A管理员下的用户账号较多时,您也可以直接在搜索框输入子账号名称,搜索支持模糊匹配。 |
授权操作 |
选择读/写。
表示被授权用户可以对指定资源执行读取和写入操作。 |
5.单击确定。
此时,允许A部门用户上传数据的权限配置完成。
部门A的管理员为部门B的用户配置允许下载共享数据的权限。具体步骤如下:
1.单击步骤1中创建的example-bucket。
2.单击权限管理 > Bucket授权策略 > 设置。
3.在授权对话框,单击新增授权。
4.在新增授权页面,结合本示例场景配置各项参数说明如下:
配置项 | 说明 |
---|---|
授权资源 | 选择整个Bucket,授权策略对整个Bucket生效。 |
授权用户 | 选择其他账号:输入被授权下载共享数据B用户的UID |
授权操作 |
选择只读。
表示对共享资源example-bucket中的数据拥有查看、列举及下载权限,但无法对共享数据执行写入和删除操作。 |
5.单击确定。
此时,部门A的管理员为部门B的用户配置授予允许下载、禁止写入和删除的权限已完成。
A部门用户上传数据到example-bucket。具体步骤如下:
1.使用A部门用户账号登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket(example-bucket)。
3.单击文件管理 > 上传文件。
4.在上传文件页面,设置上传文件的参数。
选择将文件上传至example-bucket当前目录。有关上传文件的ACL、以及文件上传方式的说明请参见上传文件。
5.在上传任务页面等待任务完成,之后关闭对话框。
此时,A用户已完成将数据上传至共享Bucket。
权限授予成功后,通过MOS控制台验证B部门用户对共享数据仅拥有下载权限、但无法对共享数据进行写入和删除操作。
1.使用B部门用户账号 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket(example-bucket)。
3.单击文件管理。
4.验证权限。
i.验证B部门用户对共享数据的下载权限。
单击example-bucket中任意目标文件右侧的更多 > 下载。
下载失败,表示下载权限配置失败,请检查权限配置是否正确。
下载成功,表示下载权限配置成功。
ii.验证B部门用户对共享数据的上传权限。
参考步骤4上传文件。
上传失败,表示上传权限配置成功。
上传成功,表示上传权限配置失败,请检查权限配置是否正确。
iii.验证B部门用户对共享数据的删除权限。
单击example-bucket中任意目标文件右侧的更多 > 删除。
删除失败,表示删除权限配置成功。
删除成功,表示删除权限配置失败,请检查权限配置是否正确。
摩杜云MOS的资源默认都是私有的,若您希望您的 合作伙伴可以访问您的MOS资源,可以通过Bucket Policy授予合作伙伴访问Bucket的权限。
公司A希望其合作公司B可以访问自己的MOS资源,但又不方便开放RAM用户给B公司。此时,A公司可以通过B ucket Policy授予合作伙伴访问Bucket的权限。B公司账号获得授权之后,可以在控制台添加A公司MOS资源的访问路径进行访问。
B公司账号
i.登录RAM访问控制台,创建RAM用户。
详细配置方法请参见创建RAM用户。
ii.在RAM访问控制台,单击用户。
iii.单击刚刚创建的RAM用户的用户名,查看并记录RAM用户的UID号。
A公司账号
i.登录 MOS管理控制台。
ii.单击Bucket列表,之后单击目标Bucket名称。
iii.单击文件管理 > 授权 > 新增授权。
说明 您也可以单击权限管理 > Bucket授权策略 > 设置 > 新增授权。
iv.在新增授权的对话框,填写授权策略。其中,授权用户选择其他账号,并填写B公司RAM用户的UID号。其他参数请参考Bucket Policy。
v.单击确定。
Bucket Policy添加完成之后,您还需要登录B公司RAM用户账号,添加A公司的Bucket访问路径。配置步骤如下:
1.通过RAM账号登录链接登录B公司RAM用户。
2.打开 MOS管理控制台。
3.单击左侧菜单栏我的访问路径后的加号(+),添加A公司授权访问的Bucket路径信息。
区域:下拉选择A公司授权访问的Bucket所在地域。
Bucket:输入A公司授权访问的Bucket名称。
访问路径:添加A公司授权访问的Bucket访问路径。例如,仅允许访问根目录abc下test目录,则添加abc/test。
您也可以创建AccessKey,并通过AccessKey使用MOSutil、MOSbrowser等工具访问被授权的Bucket。
RAM Policy是基于用户的授权策略。您可以使用RAM Policy控制用户可以访问您名下哪些资源的权限。
RAM Policy语法和结构
RAM
Policy包含版本号(Version)、授权语句(Statement)、每条授权语句包括授权效力(Effect)、操作(Action)、资源(Resource)以及限制条件(Condition,可选项)。有关权限策略的语法和结构的详情,请参见权限策略语法和结构。
其中MOS中Version、Statement以及Effect的应用规则与RAM相同。MOS的Action、Resource以及Condition说明请参见:
MOS Action分类
MOS Resource说明
MOS Condition说明
MOS常用的权限策略
ModuyunMOSFullAccess:为RAM用户授予MOS的完全管理权限。
ModuyunMOSReadOnlyAccess:为RAM用户授予MOS的只读访问权限。
MOS访问控制方式
有关MOS包含的访问控制方式的更多信息,请参见访问控制概述。
Action分为Service级别操作、Bucket级别操作以及Object级别的操作。各API接口功能描述的更多信息,请参见API概览。
Service级别
Service级别操作对应的是GetService (ListBuckets)接口,用来列举所有属于该用户的Bucket列表。
API | Action |
---|---|
GetService (ListBuckets) | MOS:ListBuckets |
Bucket级别
操作的对象均为Bucket,其Action名称和相应的接口名称一一对应。
API | Action |
---|---|
PutBucket | MOS:PutBucket |
GetBucket (ListObjects) | MOS:ListObjects |
GetBucketVersions (ListObjectVersions) | MOS:ListObjectVersions |
PutBucketVersioning | MOS:PutBucketVersioning |
GetBucketVersioning | MOS:GetBucketVersioning |
PutBucketAcl | MOS:PutBucketAcl |
GetBucketAcl | MOS:GetBucketAcl |
DeleteBucket | MOS:DeleteBucket |
GetBucketLocation | MOS:GetBucketLocation |
GetBucketInfo | MOS:GetBucketInfo |
GetBucketLogging | MOS:GetBucketLogging |
PutBucketLogging | MOS:PutBucketLogging |
DeleteBucketLogging | MOS:DeleteBucketLogging |
GetBucketWebsite | MOS:GetBucketWebsite |
PutBucketWebsite | MOS:PutBucketWebsite |
DeleteBucketWebsite | MOS:DeleteBucketWebsite |
GetBucketReferer | MOS:GetBucketReferer |
PutBucketReferer | MOS:PutBucketReferer |
GetBucketLifecycle | MOS:GetBucketLifecycle |
PutBucketLifecycle | MOS:PutBucketLifecycle |
DeleteBucketLifecycle | MOS:DeleteBucketLifecycle |
ListMultipartUploads | MOS:ListMultipartUploads |
PutBucketCors | MOS:PutBucketCors |
GetBucketCors | MOS:GetBucketCors |
DeleteBucketCors | MOS:DeleteBucketCors |
PutBucketPolicy | MOS:PutBucketPolicy |
GetBucketPolicy | MOS:GetBucketPolicy |
DeleteBucketPolicy | MOS:DeleteBucketPolicy |
PutBucketTags | MOS:PutBucketTagging |
GetBucketTags | MOS:GetBucketTagging |
DeleteBucketTags | MOS:DeleteBucketTagging |
PutBucketEncryption | MOS:PutBucketEncryption |
GetBucketEncryption | MOS:GetBucketEncryption |
DeleteBucketEncryption | MOS:DeleteBucketEncryption |
PutBucketRequestPayment | MOS:PutBucketRequestPayment |
GetBucketRequestPayment | MOS:GetBucketRequestPayment |
PutBucketReplication | MOS:PutBucketReplication |
GetBucketReplication | MOS:GetBucketReplication |
DeleteBucketReplication | MOS:DeleteBucketReplication |
GetBucketReplicationLocation | MOS:GetBucketReplicationLocation |
GetBucketReplicationProgress | MOS:GetBucketReplicationProgress |
Object级别
操作对象均为Object,各Action名称与接口的对应关系如下所示。
API | Action |
---|---|
PutObject PostObject InitiateMultipartUpload UploadPart CompleteMultipart AppendObject CompleteMultipartUpload PutSymlink |
MOS:PutObject |
GetObject HeadObject GetObjectMeta SelectObject GetSymlink |
MOS:GetObject |
DeleteObject DeleteMultipleObjects |
MOS:DeleteObject |
CopyObject UploadPartCopy |
MOS:GetObject,MOS:PutObject |
ListParts | MOS:ListParts |
GetObjectAcl | MOS:GetObjectAcl |
PutObjectAcl | MOS:PutObjectAcl |
RestoreObject | MOS:RestoreObject |
PutObjectTagging | MOS:PutObjectTagging |
GetObjectTagging | MOS:GetObjectTagging |
DeleteObjectTagging | MOS:DeleteObjectTagging |
GetObject(请求参数中指定versionId) | MOS:GetObjectVersion |
PutObjectACL(请求参数中指定versionId) | MOS:PutObjectVersionAcl |
GetObjectAcl(请求参数中指定versionId) | MOS:GetObjectVersionAcl |
RestoreObject(请求参数中指定versionId) | MOS:RestoreObjectVersion |
DeleteObject(请求参数中指定versionId) | MOS:DeleteObjectVersion |
PutObjectTagging(请求参数中指定versionId) | MOS:PutObjectVersionTagging |
GetObjectTagging(请求参数中指定versionId) | MOS:GetObjectVersionTagging |
DeleteObjectTagging(请求参数中指定versionId) | MOS:DeleteObjectVersionTagging |
PutLiveChannel | MOS:PutLiveChannel |
ListLiveChannel | MOS:ListLiveChannel |
DeleteLiveChannel | MOS:DeleteLiveChannel |
PutLiveChannelStatus | MOS:PutLiveChannelStatus |
GetLiveChannelInfo | MOS:GetLiveChannel |
GetLiveChannelStat | MOS:GetLiveChannelStat |
GetLiveChannelHistory | MOS:GetLiveChannelHistory |
PostVodPlaylist | MOS:PostVodPlaylist |
GetVodPlaylist | MOS:GetVodPlaylist |
ProcessImm | MOS:ProcessImm |
ImgSaveAs | MOS:PostProcessTask |
AbortMultipartUpload | MOS:AbortMultipartUpload |
在MOS中,Resource指代某个具体资源或者某些资源,支持通配符星号(*)。单个RAM Policy允许包含多个Resource。
Resource规则:acs:MOS:{region}:{bucket_owner}:{bucket_name}/{object_name}
针对Bucket级别的Resource设置,不需要在{bucket_name}之后添加正斜线(/)以及{object_name},即acs:MOS:{region}:{bucket_owner}:{bucket_name}。region字段当前仅支持设置为通配符星号(*)。
Condition代表Policy授权的条件。MOS支持的Condition如下:
Condition | 说明 |
---|---|
acs:SourceIp | 指定普通IP网段,支持通配符星号(*)。 |
acs:UserAgent |
指定HTTP User-Agent头。
类型:字符串 |
acs:CurrentTime |
请求到达MOS服务端的时间。
格式:ISO8601 |
acs:SecureTransport | 请求的协议类型。如果请求是HTTP协议,则为HTTP,如果请求是HTTPS协议,则为HTTPS。 |
MOS:Prefix | 用于ListObjects请求时,列举指定前缀的Object。 |
MOS:Delimiter | 用于ListObjects请求时,对Object名字进行分组的字符。 |
acs:AccessId | 请求中携带的AccessId。 |
MOS:BucketTag |
存储空间标签(BucketTag)。
单个BucketTag可以作为一个Condition。当设置多个BucketTag时,需在每个BucketTag前加上MOS:BucketTag/,组成多个Condition。 |
acs:MFAPresent |
是否启用了多因素认证MFA(Multi-factor authentication)。
取值:
true:已启用多因素认证。 false:未启用多因素认证。 |
MOS:ExistingObjectTag |
请求的Object已存在标签。
单个ObjectTag可以作为一个Condition。当设置多个ObjectTag时,需在每个ObjectTag前加上MOS:ExistingObjectTag/,组成多个Condition。 主要针对GetObject、HeadObject等读取文件接口以及PutObjectTagging、GetObjectTagging等ObjectTagging接口。 |
MOS:RequestObjectTag |
请求中携带的对象标签。
单个ObjectTag可以作为一个Condition。当设置多个ObjectTag时,需在每个ObjectTag前加上MOS:RequestObjectTag/,组成多个Condition。 主要针对PutObject、PostObject等写入文件接口以及PutObjectTagging、GetObjectTagging等ObjectTagging接口。 |
您可以使用RAM Policy实现不同场景下的用户权限策略。更多信息,请参见RAM Policy常见示例。
通过RAM Policy,您可以集中管理您的用户(例如员工、系统或应用程序), 以及控制用户可以访问您名下哪些资源的权限,例如授权RAM用户列举并读取某个存储空间(Bucket)的资源。
1.创建自定义的RAM Policy。
您可以结合实际使用场景,选用下文列举的常见授权示例,然后通过脚本配置方式创建自定义的RAM Policy。具体操作,请参见创建自定义策略。
2.为RAM用户授权RAM Policy。
为RAM用户授权步骤1中创建好的RAM Policy。具体操作,请参见为RAM用户授权。
以下示例为授权RAM用户对名为myphotos的Bucket拥有完全控制的权限。
警告 对于移动应用来说,授予用户对Bucket的完全控制权限有极高风险,应尽量避免。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "MOS:*",
"Resource": [
"acs:MOS:*:*:myphotos",
"acs:MOS:*:*:myphotos/*"
]
}
]
}
授权RAM用户通过MOS SDK或MOS命令行工具列举并读取某个Bucket的资源 以下示例为授权RAM用户通过MOS SDK或MOS命令行工具列举并读取名为myphotos存储空间中的资源:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "MOS:ListObjects",
"Resource": "acs:MOS:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": "MOS:GetObject",
"Resource": "acs:MOS:*:*:myphotos/*"
}
]
}
授权RAM用户通过MOS控制台列举并读取某个Bucket的资源 以下示例为授权RAM用户通过MOS控制台列举并读取名为myphotos存储空间中的资源:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:ListBuckets",
"MOS:GetBucketStat",
"MOS:GetBucketInfo",
"MOS:GetBucketTagging",
"MOS:GetBucketLifecycle",
"MOS:GetBucketWorm",
"MOS:GetBucketVersioning",
"MOS:GetBucketAcl"
],
"Resource": "acs:MOS:*:*:*"
},
{
"Effect": "Allow",
"Action": [
"MOS:ListObjects",
"MOS:GetBucketAcl"
],
"Resource": "acs:MOS:*:*:myphotos"
},
{
"Effect": "Allow",
"Action": [
"MOS:GetObject",
"MOS:GetObjectAcl"
],
"Resource": "acs:MOS:*:*:myphotos/*"
}
]
}
以下示例用于授权RAM用户禁止删除名为myphotos存储空间的权限:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": "MOS:*",
"Resource": [
"acs:MOS:*:*:myphotos",
"acs:MOS:*:*:myphotos/*"
]
},
{
"Effect": "Deny",
"Action": [
"MOS:DeleteBucket"
],
"Resource": [
"acs:MOS:*:*:myphotos"
]
}
]
}
假设用于存放照片的Bucket为myphotos,该Bucket下有一些目录,代表照片的拍摄地,每个拍摄地目录下还包含了年份子目录。
myphotos[Bucket]
├── beijing
│ ├── 2014
│ └── 2015
├── hangzhou
│ ├── 2013
│ ├── 2014
│ └── 2015
└── qingdao
├── 2014
└── 2015
若要授权RAM用户访问myphotos/hangzhou/2014/和myphotos/hangzhou/2015/目录的只读权限。目录级别的授权属于授权的高级功能,根据使用场景不同,授权策略的复杂程度也不同,以下几种场景可供参考。
场景1:授予RAM用户仅拥有读取目录myphotos/hangzhou/2014/和myphotos/hangzhou/2015/中文件内容的权限
由于RAM用户知道文件的完整路径,建议直接使用完整的文件路径来读取目录下的文件内容。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:GetObject"
],
"Resource": [
"acs:MOS:*:*:myphotos/hangzhou/2014/*",
"acs:MOS:*:*:myphotos/hangzhou/2015/*"
]
}
]
}
场景2:授权RAM用户使用MOS命令行工具访问目录myphotos/hangzhou/2014/和myphotos/hangzhou/2015/并列举目录中文件的权限
RAM用户不清楚目录中有哪些文件,可以使用MOS命令行工具或API直接获取目录信息,此场景下需要添加ListObjects权限。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:GetObject"
],
"Resource": [
"acs:MOS:*:*:myphotos/hangzhou/2014/*",
"acs:MOS:*:*:myphotos/hangzhou/2015/*"
]
},
{
"Effect": "Allow",
"Action": [
"MOS:ListObjects"
],
"Resource": [
"acs:MOS:*:*:myphotos"
],
"Condition":{
"StringLike":{
"MOS:Prefix": [
"hangzhou/2014/*",
"hangzhou/2015/*"
]
}
}
}
]
}
场景3: 授予RAM用户使用MOS控制台访问目录
使用MOS控制台访问目录myphotos/hangzhou/2014/和myphotos/hangzhou/2015/时,RAM用户可以从根目录开始,逐层进入要访问的目录。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:ListBuckets",
"MOS:GetBucketStat",
"MOS:GetBucketInfo",
"MOS:GetBucketTagging",
"MOS:GetBucketLifecycle",
"MOS:GetBucketWorm",
"MOS:GetBucketVersioning",
"MOS:GetBucketAcl"
],
"Resource": [
"acs:MOS:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"MOS:GetObject",
"MOS:GetObjectAcl"
],
"Resource": [
"acs:MOS:*:*:myphotos/hangzhou/2014/*",
"acs:MOS:*:*:myphotos/hangzhou/2015/*"
]
},
{
"Effect": "Allow",
"Action": [
"MOS:ListObjects"
],
"Resource": [
"acs:MOS:*:*:myphotos"
],
"Condition": {
"StringLike": {
"MOS:Delimiter": "/",
"MOS:Prefix": [
"",
"hangzhou/",
"hangzhou/2014/*",
"hangzhou/2015/*"
]
}
}
}
]
}
以下示例用于授权RAM用户禁止删除名为myphotos的存储空间下任意文件的权限:
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"MOS:DeleteObject"
],
"Resource": [
"acs:MOS:*:*:myphotos/*"
]
}
]
}
以下为添加Deny策略,用于拒绝RAM用户访问存储空间examplebucket下对象标签为status:ok以及key1:value1的Object。
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": [
"MOS:GetObject"
],
"Resource": [
"acs:MOS:*:1746495857602745:examplebucket/*"
],
"Condition": {
"StringEquals": {
"MOS:ExistingObjectTag/status":"ok",
"MOS:ExistingObjectTag/key1":"value1"
}
}
}
]
}
在Allow授权中增加IP地址限制
以下示例为在Allow授权中增加IP地址限制,授权RAM用户仅允许通过192.168.0.0/16、172.12.0.0/16两个IP地址段读取名为myphotosBucket中的资源。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:ListBuckets",
"MOS:GetBucketStat",
"MOS:GetBucketInfo",
"MOS:GetBucketTagging",
"MOS:GetBucketAcl"
],
"Resource": [
"acs:MOS:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"MOS:ListObjects",
"MOS:GetObject"
],
"Resource": [
"acs:MOS:*:*:myphotos",
"acs:MOS:*:*:myphotos/*"
],
"Condition":{
"IpAddress": {
"acs:SourceIp": ["192.168.0.0/16", "172.12.0.0/16"]
}
}
}
]
}
在Deny授权中增加IP地址限制
以下示例为在Deny授权中增加IP地址限制,授权RAM用户的源IP地址若不在192.168.0.0/16范围内,则禁止对MOS执行任何操作。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:ListBuckets",
"MOS:GetBucketStat",
"MOS:GetBucketInfo",
"MOS:GetBucketTagging",
"MOS:GetBucketAcl"
],
"Resource": [
"acs:MOS:*:*:*"
]
},
{
"Effect": "Allow",
"Action": [
"MOS:ListObjects",
"MOS:GetObject"
],
"Resource": [
"acs:MOS:*:*:myphotos",
"acs:MOS:*:*:myphotos/*"
]
},
{
"Effect": "Deny",
"Action": "MOS:*",
"Resource": [
"acs:MOS:*:*:*"
],
"Condition":{
"NotIpAddress": {
"acs:SourceIp": ["192.168.0.0/16"]
}
}
}
]
}
说明 由于权限策略的鉴权规则是Deny优先,所以访问者从192.168.0.0/16以外的IP地址访问myphotos中的内容时,MOS会提示没有权限。
通过RAM或STS服务向其他用户授权的场景说明如下:
把用户自己名下的mybucket和mybucket/file*资源授权给相应的用户。
允许其他用户执行GetBucketAcl、GetBucket、PutObject、GetObject和DeleteObject操作。
Condition中的条件表示UserAgent为java-sdk,源IP地址为192.168.0.1的鉴权被允许,此时被授权的用户拥有相关资源的访问权限。
仅列举Prefix为foo的Object。
符合上述场景的RAM Policy示例如下:
{
"Version": "1",
"Statement": [
{
"Action": [
"MOS:GetBucketAcl",
"MOS:ListObjects"
],
"Resource": [
"acs:MOS:*:177530505652XXXX:mybucket"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:UserAgent": "java-sdk",
"MOS:Prefix": "foo"
},
"IpAddress": {
"acs:SourceIp": "192.168.0.1"
}
}
},
{
"Action": [
"MOS:PutObject",
"MOS:GetObject",
"MOS:DeleteObject"
],
"Resource": [
"acs:MOS:*:177530505652XXXX:mybucket/file*"
],
"Effect": "Allow",
"Condition": {
"StringEquals": {
"acs:UserAgent": "java-sdk"
},
"IpAddress": {
"acs:SourceIp": "192.168.0.1"
}
}
}
]
}
本教程示例详细演示了如何使用RAM Policy控制用户 对MOS存储空间(Bucket)、文件夹以及文件夹下文件(Object)的访问权限。
RAM Policy是基于用户的授权策略。通过设置RAM
Policy,您可以集中管理您的用户(例如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限,例如限制您的用户只拥有对某一个Bucket的读权限。
RAM Policy为JSON格式。各字段定义如下:
Statement:授权语句,一个权限策略可以有多条授权语句。
Effect:授权效力,包括允许(Allow)和拒绝(Deny)两种。
说明 当权限策略中既有Allow又有Deny的授权语句时,遵循Deny优先的原则。
Action:对具体资源的操作权限。
如果您选择使用RAM Policy,建议您通过官方工具RAM策略编辑器快速生成RAM策略。
相比于RAM Policy,Bucket Policy支持在控制台直接进行图形化配置操作,并且Bucket拥有者可以直接进行授权访问。详情请参见使用Bucket
Policy授权其他用户访问MOS资源。
摩杜云MOS的数据模型为扁平型结构,所有文件都直接隶属于其对应的存储空间。因此,MOS缺少文件系统中类似于目录与子文件夹的层次结构。 但是,您可以在MOS控制台上模拟文件夹层次结构。在该控制台中,您可以按文件夹对相关文件进行分组、分类和管理,如下图所示。
MOS提供使用键值(key)对格式的分布式对象存储服务。您可以根据其唯一的key(对象名)检索对象的内容。例如,名为ramtest-bucket的存储空间有三个文件夹,分别为Development、Marketing和Private,以及一个对象MOS-dg.pdf。
在创建Development文件夹时,控制台会创建一个key为Development/的对象,文件夹的key包括分隔符/。
当您将名为ProjectA.docx 的对象上传到Development
文件夹中时,控制台会上传该对象并将其key设置为Development/ProjectA.docx。
在该key中,Development为前缀,而/为分隔符。您可以从存储空间中获取具有特定前缀和分隔符的所有对象的列表。在控制台中,单击Development
文件夹时,控制台会列出文件夹中的对象,如下图所示。
说明 当控制台列举ramtest-bucket存储空间中的 Development文件夹时,它会向MOS发送一个用于指定前缀 Development和分隔符/的请求。因此, 存储空间ramtest-bucket有三个对象,其key分别为Development/Moduyun Cloud.pdf、Development/ProjectA.docx及Development/ProjectB.docx。
在本教程开始之前,您还需要了解根级存储空间内容的概念。假设ramtest-bucket存储空间包含以下对象:
Development/Moduyun Cloud.pdf
Development/ProjectA.docx
Development/ProjectB.docx
Marketing/data2020.xlsx
Marketing/data2021.xlsx
Private/2017/images.zip
Private/2017/promote.pptx
MOS-dg.pdf
这些对象的key构建了一个以Development、Marketing和Private作为根级文件夹并以 MOS-dg.pdf作为根级对象的逻辑层次结构。当您单击MOS控制台中的存储空间名时,控制台会将一级前缀和一 个分隔符,例如Development/、Marketing/和Private/显示为根级文件夹。对象MOS-dg.pdf 没有前缀,因此显示为根级别项。
在授予RAM用户相关权限之前,您需要了解单击某个存储空间的名字时控制台向MOS发送请求、MOS返回响应,以及控制台如何解析该响应的逻辑。
请求某个存储空间
单击ramtest-bucket存储空间时,控制台会将GetBucket (ListObjects)请求发送至MOS。
请求示例
GET /?prefix=&delimiter=/ HTTP/1.1
Host: ramtest-bucket.MOS-cn-hangzhou.moduyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: MOS qn6qrrqxo2oawuk53otf****:DNrnx7xHk3sgysx7I8U9I9IY****
此请求包括prefix和delimiter参数,其中prefix的值为空字符串,delimiter的值为正斜线(/)。
响应示例
HTTP/1.1 200 OK
x-MOS-request-id: 534B371674E88A4D8906****
Date: Fri, 7 Aug 2020 08:43:27 GMT
Content-Type: application/xml
Content-Length: 712
Connection: keep-alive
Server: moduyunMOS
< ?xml version="1.0" encoding="UTF-8"?>
< ListBucketResult xmlns=¡±http://doc.MOS-cn-hangzhou.moduyuncs.com¡±>
< Name>ramtest-bucket< /Name>
< Prefix>< /Prefix>
< Marker>< /Marker>
< MaxKeys>100< /MaxKeys>
< Delimiter>/< /Delimiter>
< IsTruncated>false< /IsTruncated>
< Contents>
< Key>MOS-dg.pdf< /Key>
...
< /Contents>
< CommonPrefixes>
< Prefix>Development< /Prefix>
< /CommonPrefixes>
< CommonPrefixes>
< Prefix>Marketing< /Prefix>
< /CommonPrefixes>
< CommonPrefixes>
< Prefix>Private< /Prefix>
< /CommonPrefixes>
< /ListBucketResult>
控制台解析
控制台会解析此结果并显示如下的根级别项:
请求存储空间下的某个文件夹
单击Development/文件夹,控制台会将GetBucket (ListObjects)请求发送至MOS。此请求包括以下参数:
请求示例
GET /?prefix=Development/&delimiter=/ HTTP/1.1
Host: MOS-example.MOS-cn-hangzhou.moduyuncs.com
Date: Fri, 24 Feb 2012 08:43:27 GMT
Authorization: MOS qn6qrrqxo2oawuk53otf****:DNrnx7xHk3sgysx7I8U9I9IY****
此请求包括prefix和delimiter参数,其中prefix的值为Development/,delimiter的值为正斜线(/)。
响应示例
作为响应,MOS返回以指定前缀开头的key:
HTTP/1.1 200 OK
x-MOS-request-id: 534B371674E88A4D8906****
Date: Fri, 7 Aug 2020 08:43:27 GMT
Content-Type: application/xml
Content-Length: 712
Connection: keep-alive
Server: moduyunMOS
< ?xml version="1.0" encoding="UTF-8"?>
< ListBucketResult xmlns=¡±http://doc.MOS-cn-hangzhou.moduyuncs.com¡±>
< Name>ramtest-bucket< /Name>
< Prefix>Development/< /Prefix>
< Marker>< /Marker>
< MaxKeys>100< /MaxKeys>
< Delimiter>/< /Delimiter>
< IsTruncated>false< /IsTruncated>
< Contents>
< Key>ProjectA.docx< /Key>
...
< /Contents>
< Contents>
< Key>ProjectB.docx< /Key>
...
< /Contents>
< Contents>
< Key>moduyun Cloud.pdf< /Key>
...
< /Contents>
< /ListBucketResult>
控制台解析
控制台会解析此结果并显示如下的key:
假设您是目标存储空间ramtest-bucket的Owner,且该Bucket下所有的文件或目录读写 权限ACL默认为私有。现在,您希望授予RAM用户Anne访问该Bucket下文件夹Development及其子文件夹和文件的读写权限, RAM用户Leo访问文件夹Marketing及其子文件夹和文件的只读权限,以及当前摩杜云账号下的所有RAM用户均无权访问文件夹Private的权限。
1.创建存储空间ramtest-bucket。
i.使用摩杜云账号登录
MOS管理控制台。
ii.创建名为ramtest-bucket的存储空间。具体操作,请参见
创建存储空间。
2.创建目录Development、Marketing和Private。具体操作,请参见
创建目录。
3.按如下要求将文件上传至指定路径。
将MOS-dg.pdf文件上传至ramtest-bucket的根目录。
将文件moduyun Cloud.pdf、ProjectA.docx以及ProjectB.docx上传至Development目录。
将文件data2020.xlsx和data2021.xlsx上传至Marketing目录。
将文件images.zip和promote.pptx上传至Private目录。
具体操作,请参见
上传文件。
通过RAM控制台创建RAM用户Anne和Leo为例。有关创建RAM用户的详情,请参见创建RAM用户。
1.创建自定义权限策略AllowAnneToReadAndWriteF olderDevelopment,并授予RAM用户Anne拥有文件夹Development及文件夹下所有文件的读写权限。
i.在左侧导航栏的权限管理菜单下,单击权限策略管理。
ii.单击创建权限策略。
iii.在新建自定义权限策略页面,策略名称填写为AllowAnneToReadAndWriteFolderDevelopment,配置模式选择脚本配置,策略内容配置如下:
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"MOS:ListObjects"
],
"Resource":[
"acs:MOS:*:*:ramtest-bucket"
],
"Condition":{
"StringEquals":{
"MOS:Prefix":[
"Development",
"Development/*"
]
}
}
},
{
"Effect":"Allow",
"Action":[
"MOS:GetObject",
"MOS:PutObject",
"MOS:GetObjectAcl"
],
"Resource":[
"acs:MOS:*:*:ramtest-bucket/Development/*"
]
}
]
}
iv.单击确定。
2.为RAM用户Anne添加自定义权限策略AllowAnneToReadAndWriteFolderDevelopment。具体操作,请参见为RAM用户授权。
参见步骤三创建自定义权限策略AllowLeoToReadAndWriteFold erMarketing,并授予RAM用户Leo只读访问文件夹Marketing及文件夹下所有文件的权限。其策略内容配置如下:
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"MOS:ListObjects"
],
"Resource":[
"acs:MOS:*:*:ramtest-bucket"
],
"Condition":{
"StringEquals":{
"MOS:Prefix":[
"Marketing",
"Marketing/*"
]
}
}
},
{
"Effect":"Allow",
"Action":[
"MOS:GetObject",
"MOS:GetObjectAcl"
],
"Resource":[
"acs:MOS:*:*:ramtest-bucket/Marketing/*"
]
}
]
}
1.创建用户组并添加用户组成员。
创建用户组的具体操作,请参见创建用户组。用户组创建完成后,将当前摩杜云账号下的所有RAM用户添加到该用户组。具体操作,请参见为用户组添加RAM用户。
2.创建自定义权限策略DenyAllRamToAccessFolderPrivate,并授予当前摩杜云账号下的所有RAM用户拒绝访问Private文件夹的权限。
i.在左侧导航栏的权限管理菜单下,单击权限策略管理。
ii.单击创建权限策略。
iii.在新建自定义权限策略页面,策略名称填写为DenyAllRamToAccessFolderPrivate,配置模式选择脚本配置,策略内容配置如下:
{
"Version":"1",
"Statement":[
{
"Effect":"Deny",
"Action":[
"MOS:*"
],
"Resource":[
"acs:MOS:*:*:ramtest-bucket/Private/*"
],
"Condition":{
}
},
{
"Effect":"Deny",
"Action":[
"MOS:ListObjects"
],
"Resource":[
"acs:MOS:*:*:*"
],
"Condition":{
"StringEquals":{
"MOS:Prefix":[
"Private/",
"Private/*"
]
}
}
}
]
}
iv.单击确定。
3.为用户组添加自定义权限策略DenyAllRamToAccessFolderPrivate。具体操作,请参见为用户组授权。
添加权限策略后,用户组中的任何RAM用户都不能访问您存储空间ramtest-bucket中的文件夹Private
且当RAM用户请求列举Private文件夹下的Private/2017/images.zip、Private/2017/promote.pptx文件时,MOS也将返回错误响应。
摩杜云MOS的资源默认都是私有的,若您希望您的合作伙伴可以访问您的MOS资源,可以通过RAM角色实现跨账号访问。
某公司A希望其合作公司B可以访问自己名下MOS内的数据,但又不方便开放RAM账号给公司B。 此时,公司A可创建一个RAM角色,并授权RAM角色MOS的访问权限。公司B可用RAM用户扮演这个RAM角色,实现跨账号访问的目的。
公司A需要先创建一个拥有MOS访问权限的RAM角色,提供给公司B的RAM用户扮演。
1.公司A登录RAM控制台。
2.单击RAM角色管理 > 创建RAM角色。
3.在创建RAM角色面板的选择类型步骤,选择可信任实体类型为摩杜云账号,之后单击下一步。
4.在配置角色步骤,配置如下参数:
角色名称:填写角色名称。本示例设为:admin-MOS。
备注:角色的备注信息,选填。本示例置空此项。
选择云账号:选择其他云账号,并配置公司B的摩杜云账号UID。本示例设为:17464958576******。
5.单击完成。
6.在创建完成步骤,单击为角色授权。
7.在添加权限面板选择策略为系统策略,找到并单击moduyunMOSReadOnlyAccess(只读访问对象存储服务(MOS)的权限)策略。在右侧已选择列表看到该策略后,单击确定。
moduyunMOSReadOnlyAccess为访问MOS下所有Bucket的策略,若您仅希望您的客户访问部分Bucket或部分目录,可创建自定义策略。更多信息,请参见基于RAM
Policy的权限控制。
如果您需要指定该RAM角色只能被指定的RAM用户扮演, 可修改RAM角色的信任策略。操作步骤,请参见修改RAM角色的信任策略。
公司B需要创建一个可以扮演角色的RAM用户,用以扮演公司A创建的RAM角色。
1.公司B登录RAM控制台。
2.单击人员管理 > 用户 > 创建用户。
3.在创建用户页面填写登录名称和显示名称,并选中控制台登录,根据您的需要配置控制台的登录信息。
4.单击确定。
5.在跳转的用户信息列表选中刚创建的用户,单击添加权限。
注意保存RAM用户信息,防止丢失。
6.在添加权限面板选择策略为系统策略,找到并单击moduyunSTSAssumeRoleAccess(调用STS服务AssumeRole接口的权限)策略。在右侧已选择列表看到该策略后,单击确定。
公司B需使用刚创建的RAM用户登录摩杜云控制台,并切换身份为公司A创建的RAM角色。
1.公司B使用RAM用户登录摩杜云控制台,步骤请参见RAM用户登录控制台。
2.鼠标移至右上角的头像上,单击切换身份。
3.在角色切换页面输入RAM角色信息后,单击切换。
RAM角色信息如下:
企业别名/默认域名:填写公司A的企业别名或默认域名,详情请参见基本概念。
本示例以默认域名为例,输入默认域名为1178810717******.onmoduyun.com,1178810717******为公司A摩杜云账号的UID。
角色名:输入公司A创建的RAM角色admin-MOS。
4.打开MOS管理控制台即可管理公司A的MOS资源。
您也可以通过Bucket Policy实现以上需求。操作步骤,请参见教程示例:基于Bucket Policy实现跨账号访问MOS。
您可以通过STS服务给其他用户颁发一个临时访问凭证。 该用户可使用临时访问凭证在规定时间内访问您的MOS资 源。临时访问凭证无需透露您的长期密钥,使您的MOS资源访问更加安全。
假设您是一个移动App开发者,希望使用摩杜云MOS服务来保存App的终端用户数据,并且要保证每个App用户之间的数据隔离。此时,您可以使用STS授权用户直接访问MOS。
使用STS授权用户直接访问MOS的流程如下:
1.App用户登录。App用户和云账号无关,它是App的终端用户,App服务器支持App用户登录。对于每个有效的App用户来说,需要App服务器能定义出每个App用户的最小访问权限。
2.App服务器请求STS服务获取一个安全令牌(SecurityToken)。在调用STS之前,App服务器需要确定App用户的最小访问权限(用RAM
Policy来自定义授权策略)以及凭证的过期时间。然后通过扮演角色(AssumeRole)来获取一个代表角色身份的安全令牌(SecurityToken)。
3.STS返回给App服务器一个临时访问凭证,包括一个安全令牌(SecurityToken)、临时访问密钥(AccessKeyId和AccessKeySecret)以及过期时间。
4.App服务器将临时访问凭证返回给App客户端,App客户端可以缓存这个凭证。当凭证失效时,App客户端需要向App服务器申请新的临时访问凭证。例如,临时访问凭证有效期为1小时,那么App客户端可以每30分钟向App服务器请求更新临时访问凭证。
5.App客户端使用本地缓存的临时访问凭证去请求MOS API。MOS收到访问请求后,会通过STS服务来验证访问凭证,正确响应用户请求。
1.登录RAM控制台。
2.在左侧导航栏的人员管理菜单下,单击用户。
3.单击新建用户。
4.输入登录名称和显示名称。
5.在访问方式区域下,选择编程访问,然后单击确定。
6.单击复制,保存访问密钥(AccessKey ID 和 AccessKey Secret)。
1.单击已创建RAM用户右侧对应的添加权限。
2.在添加权限页面,选择moduyunSTSAssumeRoleAccess权限。
3.单击确定。
1.在左侧导航栏,单击RAM角色管理。
2.单击创建RAM角色,选择可信实体类型为摩杜云账号,单击下一步。
3.在创建RAM角色页面,RAM角色名称填写为RamMOSTest,选择云账号为当前云账号。
4.单击完成。角色创建完成后,单击关闭。
5.在RAM角色管理页面,搜索框输入角色名称RamMOSTest。
6.单击复制,保存角色的ARN。
1.在左侧导航栏的权限管理菜单下,单击权限策略管理。
2.单击创建权限策略。
3.在新建自定义权限策略页面,填写策略名称,配置模式选择脚本配置,并在策略内容中赋予角色向目标存储空间examplebucket下的目录exampledir上传文件的权限。
警告 以下示例仅供参考。您需要根据实际需求配置更细粒度的授权策略 ,防止出现权限过大的风险。关于更细粒度的授权策略配置详情,请参见通过RAM或STS服务向其他用户授权。
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"MOS:PutObject"
],
"Resource": [
"acs:MOS:*:*:examplebucket/exampledir",
"acs:MOS:*:*:examplebucket/exampledir/*"
]
}
]
}
4.单击确定。
您可以通过调用STS服务接口AssumeRole 或者使用各语言STS SDK来获取临时访问凭证。
以Java SDK为例:
package com.moduyun.sts.sample;
import com.moduyuncs.DefaultAcsClient;
import com.moduyuncs.exceptions.ClientException;
import com.moduyuncs.http.MethodType;
import com.moduyuncs.profile.DefaultProfile;
import com.moduyuncs.profile.IClientProfile;
import com.moduyuncs.sts.model.v20150401.AssumeRoleRequest;
import com.moduyuncs.sts.model.v20150401.AssumeRoleResponse;
public class StsServiceSample {
public static void main(String[] args) {
// STS接入地址,例如sts.cn-hangzhou.moduyuncs.com。
String endpoint = "< sts-endpoint>";
// 填写步骤1生成的访问密钥AccessKey ID和AccessKey Secret。
String AccessKeyId = "< yourAccessKeyId>"";
String accessKeySecret = "< yourAccessKeySecret>";
// 填写步骤3获取的角色ARN。
String roleArn = "< yourRoleArn>";
// 自定义角色会话名称,用来区分不同的令牌,例如可填写为SessionTest。
String roleSessionName = "< yourRoleSessionName>";
// 以下Policy用于限制仅允许使用临时访问凭证向目标存储空间examplebucket上传文件。
// 临时访问凭证最后获得的权限是步骤4设置的角色权限和该Policy设置权限的交集,即仅允许将文件上传至目标存储空间examplebucket下的exampledir目录。
String policy = "{\n" +
" \"Version\": \"1\", \n" +
" \"Statement\": [\n" +
" {\n" +
" \"Action\": [\n" +
" \"MOS:PutObject\"\n" +
" ], \n" +
" \"Resource\": [\n" +
" \"acs:MOS:*:*:examplebucket/*\" \n" +
" ], \n" +
" \"Effect\": \"Allow\"\n" +
" }\n" +
" ]\n" +
"}";
try {
// 添加endpoint。
DefaultProfile.addEndpoint("", "", "Sts", endpoint);
// 构造default profile。
IClientProfile profile = DefaultProfile.getProfile("", AccessKeyId, accessKeySecret);
// 构造client。
DefaultAcsClient client = new DefaultAcsClient(profile);
final AssumeRoleRequest request = new AssumeRoleRequest();
request.setMethod(MethodType.POST);
request.setRoleArn(roleArn);
request.setRoleSessionName(roleSessionName);
request.setPolicy(policy); // 如果policy为空,则用户将获得该角色下所有权限。
request.setDurationSeconds(3600L); // 设置临时访问凭证的有效时间为3600秒。
final AssumeRoleResponse response = client.getAcsResponse(request);
System.out.println("Expiration: " + response.getCredentials().getExpiration());
System.out.println("Access Key Id: " + response.getCredentials().getAccessKeyId());
System.out.println("Access Key Secret: " + response.getCredentials().getAccessKeySecret());
System.out.println("Security Token: " + response.getCredentials().getSecurityToken());
System.out.println("RequestId: " + response.getRequestId());
} catch (ClientException e) {
System.out.println("Failed:");
System.out.println("Error code: " + e.getErrCode());
System.out.println("Error message: " + e.getErrMsg());
System.out.println("RequestId: " + e.getRequestId());
}
}
}
说明
临时访问凭证有效时间单位为秒,最小值为900,最大值以当前角色设定的最大会话时间为准。详情请参见设置角色最大会话时间。
有关角色会话名称roleSessionName的命名规范,请参见AssumeRole。
以Java SDK为例,将本地D:\\localpath路径下的exampletest.txt文件上传至存储空间examplebucket下的exampledir目录的示例代码如下:
import com.moduyun.MOS.MOSClient;
import com.moduyun.MOS.model.PutObjectRequest;
import java.io.File;
public class upload {
public static void main(String[] args) {
// 填写步骤五获取的临时访问密钥(AccessKey ID和AccessKey Secret)。
String AccessKeyId = "< yourAccessKeyId>";
String accessKeySecret = "< yourAccessKeySecret>";
// 填写步骤五获取的安全令牌SecurityToken。
String securityToken = "< yourSecurityToken>";
// 创建MOSClient实例。
MOSClient MOSClient = new MOSClient(endpoint, AccessKeyId, accessKeySecret, securityToken);
// 将本地文件exampletest.txt上传至目标存储空间examplebucket下的目录exampledir。
PutObjectRequest putObjectRequest = new PutObjectRequest("examplebucket", "exampledir/exampletest.txt", new File("D:\\localpath\\exampletest.txt"));
// 如果需要上传时设置存储类型与访问权限,请参考以下示例代码。
// ObjectMetadata metadata = new ObjectMetadata();
// metadata.setHeader(MOSHeaders.MOS_STORAGE_CLASS, StorageClass.Standard.toString());
// metadata.setObjectAcl(CannedAccessControlList.Private);
// putObjectRequest.setMetadata(metadata);
// 上传文件。
MOSClient.putObject(putObjectRequest);
// 关闭MOSClient。
MOSClient.shutdown();
}
}
更多语言的SDK示例请参见:
Java SDK
Python SDK
Go SDK
C++ SDK
PHP SDK
C SDK
.NET SDK
Node.js SDK
Browser.js SDK
Android SDK
iOS SDK
报错The security token you provided is invalid.如何处理?
请确保完整填写步骤五获取到的SecurityToken。
报错The MOS Access Key Id you provided does not exist in our records.如何处理?
临时访问凭证已过期,过期后自动失效。请使用临时访问密钥(AccessKeyId和AccessKeySecret)向App服务器申请新的临时访问凭证。具体操作,请参见步骤五。
获取STS时报错NoSuchBucket如何处理?
出现这种报错通常是STS的endpoint填写错误。请根据您的地域,填写正确的STS接入地址。各地域的STS接入地址请参见接入地址。
对象存储MOS支持对存储空间(Bucket)设置防盗链,即通过对访问来源设置白名单的机制,避免MOS资源被其他人盗用。
防盗链功能通过设置Referer白名单以及是否允许空Referer,限制仅白名单中的域名可以访问您Bucket内的资源。MOS支持基于HTTP和HTTPS
header中表头字段Referer的方法设置防盗链。
是否进行防盗链验证的具体场景如下:
仅当通过签名URL或者匿名访问Object时,进行防盗链验证。
当请求的Header中包含Authorization字段,不进行防盗链验证。
防盗链通过请求Header中的Referer地址判断访问来源。当浏览器向Web服务器发送请求的时候,请求Header中将包含Referer,用于告知Web服务器该请求的页面链接来源。MOS根据浏览器附带的Referer与用户配置的Referer规则来判断允许或拒绝此请求,如果Referer一致,则MOS将允许该请求的访问;如果Referer不一致,则MOS将拒绝该请求的访问。例如,某个Bucket设置了Referer为https://10.10.10.10.com:
用户A在https://10.10.10.10.com嵌入test.jpg图片,当浏览器请求访问此图片时会带上https://10.10.10.10.com的Referer,此场景下MOS将允许该请求的访问。
用户B盗用了test.jpg的图片链接并将其嵌入https://127.0.0.1.com,当浏览器请求访问此图片时会带上https://127.0.0.1.com的Referer,此场景下MOS将拒绝该请求的访问。
防盗链的API接口详细信息请参见 PutBucketReferer。
当您需要限定符合特定条件的用户能够访问您Bucket内的全部或部分资源、对资源授予相关操作权限等,建议您使用Bucket
Policy。例如您可以通过配置Bucket
Policy的来源IP,限制符合指定IP或IP地址段的用户才能访问某个Bucket。有关Bucket
Policy的详情请参见添加Bucket授权策略(Bucket Policy)。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK
Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
以下内容详细介绍如何配置Referer,配置Referer时使用了通配符的具体示例,以及配置Referer后的效果。
配置Referer
单个Bucket支持配置多个Referer。通过控制台设置Referer时,使用回车作为换行符分隔;通过API设置Referer时,使用英文逗号(,)分隔。
Referer参数支持通配符星号(*)和问号(?)。
通配符星号(*)表示使用星号代替0个或多个字符。若Referer白名单配置为*.moduyun.com,且不允许空Referer的情况下,则只有HTTP或HTTPS
header中包含Referer字段的请求才能访问MOS资源,例如help.moduyun.com、www.moduyun.com等;若Referer白名单配置为*.moduyun.com,且允许空Referer的情况下,则Referer为空的请求也允许访问MOS资源。
通配符问号(?)表示使用问号代替一个字符。若Referer白名单配置为moduyun?.com,且不允许空Referer的情况下,则只有HTTP或HTTPS
header中包含Referer字段的请求才能访问MOS资源,例如moduyuna.com、moduyunb.com等;若Referer白名单配置为moduyun?.com,且允许空Referer的情况下,则Referer为空的请求也允许访问MOS资源。
更多Referer配置示例,请参见设置防盗链。
Referer效果
如果Referer白名单为空,则所有的请求都会被允许。
如果Referer白名单不为空,且不允许Referer字段为空,则只有Referer属于白名单的请求被允许,其他请求(包括Referer为空的请求)会被拒绝。
如果Referer白名单不为空,但允许Referer字段为空,则Referer为空的请求和符合白名单的请求会被允许,其他请求都会被拒绝。
验证防盗链是否生效请参见MOS验证Refer 防盗链是否生效。
防盗链功能常见问题请参见MOS防盗链(Referer)配置及错误排除。
MOS采用多可用区(AZ)机制,将用户的数据分散存放在同一地域(Region)的3个可用区。当某个可用区不可用时,仍然能够保障数据的正常访问。MOS同城冗余存储提供99.9999999999%(12个9)的数据设计持久性以及99.995%的服务可用性。
同城冗余存储能够提供机房级容灾能力。当发生断网、断电或者灾难事件导致某个机房不可用时,MOS仍能继续提供强一致性的服务。整个故障切换过程用户无感知,业务不中断、数据不丢失,满足关键业务系统对于“恢复时间目标(RTO)”以及“恢复点目标(RPO)”等于0的强需求。
目前仅支持在创建Bucket时开启同城冗余存储。对于已创建的Bucket,您可以利用迁移工具(如MOSimport、在线迁移服务等),将现有Bucket中的数据迁移到已开启同城冗余存储的Bucket中。
您可以通过以下方式在创建Bucket时开启同城冗余存储:
操作方式 | 说明 |
---|---|
控制台 | Web 应用程序,直观易用 |
图形化工具 MOSbrowser | 图形化工具,易操作 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK |
丰富、完整的各类语言 SDK demo |
支持地域
华南1(深圳)、华北2(北京)、华东1(杭州)、华东2(上海)、中国(香港)、新加坡地域已支持同城冗余存储。
计费说明
相对于本地冗余存储,同城冗余存储会产生更高的存储费用。更多信息,请参见MOS产品定价。
MOS的同城冗余存储目前支持标准存储类型、低频访问存储类型。这两种存储类型的各项对比指标如下:
对比指标 | 标准存储类型 | 低频访问存储类型 |
---|---|---|
数据设计持久性 | 99.9999999999%(12个9) | 99.9999999999%(12个9) |
服务可用性 | 99.995% | 99.50% |
对象最小计量单位 | 无 | 64 KB |
最短存储时间 | 无 | 30天 |
数据取回费用 | 无 | 按实际获取的数据量收取,单位GB |
数据访问 | 实时访问,毫秒延迟 | 实时访问,毫秒延迟 |
图片处理 | 支持 | 支持 |
跨区域复制(CrMOS-Region Replication)是跨不同MOS数据中心(地域)的存储空间(Bucket)自动、异步(近实时)复制文件(Object),它会将Object的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。
MOS目前支持通过MOS管理控制台和Java SDK配置跨区域复制规则:
控制台
Java SDK
跨区域复制功能满足Bucket跨区域容灾或用户数据复制的需求。目标Bucket中的Object是源Bucket中Object的精确副本,它们具有相同的Object名、版本信息、元数据以及内容,例如创建时间、拥有者、用户定义的元数据、Object
ACL、Object内容等。您可以通过配置跨区域复制规则实现以下场景需求。
合规性要求
虽然MOS默认对每个存储的Object在物理盘上有多份副本,但合规性要求所规定的数据需要跨一定距离保存一份副本。通过跨区域复制,可以在远距离的MOS数据中心之间复制数据以满足这些合规性要求。
最大限度减少延迟
客户处于两个地理位置。为了最大限度缩短访问Object时的延迟,可以在地理位置与用户较近的MOS数据中心维护Object副本。
数据备份与容灾
您对数据的安全性和可用性有极高的要求,对所有写入的数据,都希望在另一个数据中心显式地维护一份副本,以备发生特大灾难(如地震、海啸等)导致一个MOS数据中心损毁时,还能启用另一个MOS数据中心的备份数据。
数据迁移
由于业务原因,需要将数据从MOS的一个数据中心迁移到另一个数据中心。
操作原因
您在两个不同数据中心中拥有分析同一组Object的计算集群。您可以选择在两个不同区域中维护Object副本。
跨区域复制支持特性如下:
不同地域Bucket之间的数据同步
源Bucket中的数据可以同步到多个目标Bucket。单个Bucket关联的复制规则数量不能超过100条。这些规则中,该Bucket既可以作为源Bucket,也可以作为目标Bucket。
如果您的业务场景涉及更大数量的复制规则,请联系技术支持。
实时同步数据
对于数据的增加、删除、修改能够实时监控并同步到目标地域Bucket。对于2 MB以下文件,能够做到分钟级别信息同步,保证两边数据的最终一致。
历史数据迁移
迁移历史数据,让源Bucket中历史数据也能进行同步,形成相同的两份数据。
实时获取同步进度
能够针对实时同步数据展示最近同步的时间节点,针对历史数据的迁移展示迁移的百分比。
版本控制
对同时处于开启版本控制状态的源Bucket和目标Bucket,保证其数据版本的最终一致性。如果数据同步方式为写(增、改)同步,则源Bucket指定版本删除的操作不会同步到目标Bucket,源Bucket创建的删除标记会同步到目标Bucket。
传输加速
支持通过传输加速功能提高中国内地各地域与非中国内地各地域之间进行跨区域复制时的数据传输速度。传输加速功能详情请参见传输加速。
复制加密数据
支持复制未加密的Object和使用SSE-KMS、SSE-MOS方式进行服务器端加密的Object。详情请参见跨区域复制结合服务器端加密。
配置事件通知以及实时日志查询
您可以通过以下两种方式准确获取跨区域复制过程中源Bucket以及目标Bucket内Object的新增、更新、删除、覆盖等变化情况。
在设置事件通知规则中将事件类型配置为ObjectReplication:ObjectCreated、ObjectReplication:ObjectRemoved以及ObjectReplication:ObjectModified。详情请参见事件通知。
在MOS管理控制台开启实时日志查询,获取Object操作的统计信息。详情请参见实时日志查询。
使用跨区域复制时,有如下限制:
地域限制
中国内地各地域与非中国内地各地域之间进行跨区域复制时,必须开启传输加速功能。
目前仅在以下地域进行跨区域复制时支持设置标签规则:
源地域为华东1(杭州),目标地域为除华东1(杭州)以外的任意地域。
源地域为澳大利亚(悉尼),目标地域为除中国内地和澳大利亚(悉尼)以外的任意地域。
相关费用
开启跨区域复制后,主从两个地域的Bucket在复制文件时会产生跨区域间的数据流量,MOS会收取跨区域复制流量费用。费用详情请参见流量费用。
每同步1个Object,MOS会累计计算请求次数并进行按量计费。费用详情请参见请求费用。
若开启传输加速功能,会额外产生传输加速费用。费用详情请参见传输加速费用。
复制时间
跨区域复制采用异步(近实时)复制,数据复制到目标Bucket需要一定的时间,通常几分钟到几小时不等,取决于数据的大小。
操作限制
仅允许同时处于非版本化或启用版本控制状态的两个Bucket开启数据同步。
处于同步状态下的两个Bucket不允许改变其版本控制状态。
对于处于同步状态的两个Bucket,由于您可以同时操作这两个Bucket,源Bucket复制过去的Object可能存在覆盖目标Bucket中同名Object的风险。
本文介绍跨区域复制结合版本控制、生命周期、服务器端加密、合规保留策略等特殊场景的复制行为。
跨区域复制结合版本控制的使用场景中,有如下限制:
仅允许同时处于非版本控制或启用版本控制状态的两个存储空间(Bucket)开启跨区域复制。处于数据同步状态下的两个Bucket不允许改变其版本控制状态。
数据同步过程中不允许暂停源或目标Bucket的版本控制,如有需要,您可以先删除跨区域复制规则再暂停版本控制。
从已开启版本控制的源Bucket中删除对象(Object)时,会出现以下几种情况:
请求方式 | 数据同步策略 | 结果 |
---|---|---|
发出Delete请求但未指定Object版本ID | 写同步(增/改) | MOS将在源Bucket中创建删除标记(Delete Marker),且源Bucket创建的删除标记会同步到目标Bucket。 |
发出Delete请求但未指定Object版本ID | 增/删/改同步 | MOS将在源Bucket中创建删除标记(Delete Marker),且源Bucket创建的删除标记会同步到目标Bucket。 |
发出Delete请求且指定了Object版本ID | 写同步(增/改) | 源Bucket删除的操作不会同步到目标Bucket。 |
发出Delete请求且指定了Object版本ID | 增/删/改同步 | 源Bucket删除的操作将同步到目标Bucket。 |
有关如何在启用版本控制的Bucket中配置数据同步策略的详情,请参见设置跨区域复制。
跨区域复制结合版本控制的使用场景,使得目标Bucket中存在Object的多个历史版本,产生较多的存储消耗。如果您希望减少目标Bucket由于跨区域复制和版本控制带来的存储成本,建议通过生命周期规则实现存储成本控制和自定义数据保留策略。
跨区域复制结合生命周期的使用场景中,有如下注意事项:
跨区域复制时仅将源Bucket生命周期规则作用的结果同步至目标Bucket,而不会将源Bucket的生命周期规则配置同步到目标Bucket。如果您希望目标Bucket中的Object副本能够遵循和源Bucket一样的生命周期规则,请在目标Bucket添加与源Bucket相同的生命周期规则。
如果您对目标Bucket设置了生命周期规则,需要注意跨区域复制后的对象副本的创建时间为对象在源Bucket中的创建时间,而非出现在目标Bucket中的时间。
如果您在源Bucket中设置了生命周期规则,某个Object正在进行跨区域复制的同时被生命周期规则删除,则Object的跨区域复制行为可能仍会继续,目标Bucket中的Object副本仍然保留。
跨区域复制支持复制未加密的对象和使用KMS托管密钥加密、MOS完全托管加密(SSE-MOS)进行服务器端加密的对象,详情请参见服务器端加密。
跨区域复制结合服务器端加密的使用场景中,会出现以下几种情况:
源Object的加密情况 | 目标Bucket的加密方式 | 是否使用KMS加密目标对象 | 目标Object的加密方式 |
---|---|---|---|
未加密 | 未加密 | 不影响 | 保留未加密状态 |
未加密 | SSE-MOS | 不影响 | SSE-MOS |
未加密 | SSE-KMS,不指定CMK ID | 不影响 | SSE-KMS,不指定CMK ID |
未加密 | SSE-KMS,指定CMK ID | 是 | SSE-KMS,指定CMK ID |
未加密 | SSE-KMS,指定CMK ID | 否 | 不涉及(源Object无法复制到目标Bucket) |
MOS完全托管加密(SSE-MOS) | 无限制 | 不影响 | SSE-MOS |
KMS托管密钥加密(SSE-KMS,不指定CMK ID) | 无限制 | 不影响 | SSE-KMS,不指定CMK ID |
KMS托管密钥加密(SSE-KMS,指定CMK ID) | 无限制 | 是 | SSE-KMS,指定CMK ID |
KMS托管密钥加密(SSE-KMS,指定CMK ID) | 无限制 | 否 | 不涉及(源Object无法复制到目标Bucket) |
有关如何在配置跨区域复制规则时使用KMS加密目标Object的详情,请参见设置跨区域复制。
当Bucket的合规保留策略(WORM)被锁定后,您可以在Bucket中上传和读取Object,但是在Object的保留时间到期之前,无法修改(覆写)或删除Object。
有关合规保留策略的更多详情,请参见合规保留策略。
跨区域复制结合合规保留策略的使用场景中,会出现以下几种情况:
源Object是否处于WORM保护期 | 源Bucket中允许的操作 | 目标Object是否处于WORM保护期 | 是否同步到目标Bucket |
---|---|---|---|
否 | 新增Object | 是 | 否 |
否 | 覆写Object | 是 | 否 |
否 | 删除Object | 是 | 否 |
否 | 新增Object | 否 | 是 |
否 | 覆写Object | 否 | 是 |
否 | 删除Object | 否 | 是 |
是 | 新增Object | 不影响 | 是 |
对象存储MOS支持服务器端加密功能。上传文件(Object)时,MOS对收到的文件进行加密,再将得到的加密文件持 久化保存;下载文件时,MOS自动将加密文件解密后返回给用户,并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。
注意 无法使用Bucket的默认加密方式自动加密镜像回源的文件。
MOS通过服务器端加密机制,提供静态数据保护。适合于对于文件存储有高安全性或者合规性要求的应用场景。例如,深度学习样本文件的存储、在线协作类文档数据的存储。
同一对象在同一时间内仅可以使用一种服务器端加密方式。MOS针对不同使用场景提供了两种服务器端加密方式,您可以根据实际使用场景选用。
使用KMS(Key Management Service)托管密钥进行加解密(SSE-KMS)
使用KMS托管的默认CMK(Customer Master
Key)或指定CMK进行加解密操作。数据无需通过网络发送到KMS服务端进行加解密,是一种低成本的加解密方式。
说明
使用KMS密钥功能会产生少量的KMS密钥使用费用。费用详情,请参见KMS计费标准。
用于加密Object的密钥也会被加密,并写入Object的元信息中。
KMS托管密钥的服务器端加密方式仅加密Object数据,不加密Object的元数据。
使用MOS完全托管密钥进行加解密(SSE-MOS)
使用MOS完全托管的密钥加密每个Object。为了提升安全性,MOS还会使用定期轮转的主密钥对加密密钥本身进行加密。该方式适合于批量数据的加解密。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
命令行工具MOSutil
配置Bucket默认加密方式 上传文件并指定加密方式 |
命令行工具,性能好。 |
Java SDK Python SDK Go SDK |
丰富、完整的各类语言SDK demo。 |
使用KMS托管的用户主密钥CMK生成加密密钥加密数据,通过信封加密机制,可进一步防止未经授权的数据访问。借助KMS,您可以专注于数据加解密、电子签名验签等业务功能,无需花费大量成本来保障密钥的保密性、完整性和可用性。
SSE-KMS加密方式的逻辑示意图如下。
使用SSE-KMS加密方式时,可使用如下密钥:
使用MOS默认托管的KMS密钥
MOS使用默认托管的KMS
CMK生成不同的密钥来加密不同的Object,并且在下载时自动解密。首次使用时,MOS会在KMS平台创建一个MOS托管的CMK。
配置方式如下:
配置Bucket默认加密方式
配置Bucket默认加密方式为KMS,指定加密算法为AES256或SM4,但不指定具体的CMK
ID。此后,所有上传至此Bucket的Object都会被加密。
为指定Object配置加密方式
上传Object或修改Object的meta信息时,在请求中携带x-MOS-server-side-encryption参数,并设置参数值为KMS。此时,MOS将使用默认托管的KMS
CMK,并通过AES256加密算法加密Object。如需修改加密算法为SM4,您还需增加x-MOS-server-side-data-encryption参数,并指定值为SM4。更多详情,请参见PutObject。
使用自带密钥BYOK(Bring Your Own Key)
您在KMS控制台使用BYOK材料生成CMK后,MOS可使用指定的KMS CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK
ID记录到Object的元数据中,只有具有解密权限的用户下载Object时才会自动解密。
BYOK材料来源有两种:
由摩杜云提供的BYOK材料:在KMS平台创建密钥时,选择密钥材料来源为摩杜云KMS。
使用用户自有的BYOK材料:在KMS平台创建密钥时,选择密钥材料来源为外部,并按照要求导入外部密钥材料。导入外部密钥可参考文档导入密钥材料。
配置方式如下:
配置Bucket默认加密方式
配置Bucket默认加密方式为KMS,指定加密算法为AES256或SM4,并指定具体的CMK
ID。此后,所有上传至此Bucket的Object都会被加密。
为目标Object配置加密方式
上传Object或修改Object的meta信息时,在请求中携带x-MOS-server-side-encryption参数,并设置参数值为KMS;携带x-MOS-server-side-encryption-key-id参数,并设置参数值为指定CMK
ID。此时,MOS将使用指定的KMS
CMK,并通过AES256加密算法加密Object。如需修改加密算法,您还需增加x-MOS-server-side-data-encryption参数,并设置参数值为SM4。更多详情,请参见PutObject。
MOS负责生成和管理数据加密密钥,并采用高强度、多因素的安全措施进行保护。数据加密的算法采用行业标准的AES256(即256位高级加密标准)和国密SM4算法。
配置方式如下:
配置Bucket默认加密方式
配置Bucket默认加密方式为MOS完全托管,并指定加密算法为AES256或SM4。此后,所有上传至此Bucket的Object都会默认被加密。
为目标Object配置加密方式
上传Object或修改Object的meta信息时,在请求中携带x-MOS-server-side-encryption参数,并设置参数值为AES256或SM4。此时,目标Object将使用MOS完全托管的密钥进行加密。更多详情,请参见PutObject。
RAM用户在如下场景中使用服务端加解密时,需要具有以下权限:
设置Bucket默认加密方式
具有对目标Bucket的管理权限。
具有PutBucketEncryption和GetBucketEncryption权限。
若设置加密方式为SSE-KMS,且指定了CMK
ID,还需要ListKeys、Listmoduas、ListmoduasesByKeyId以及DescribeKeys权限。此场景下的RAM
Policy授权策略如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey"
],
"Resource": [
"acs:kms:*:1416614965936597:*" //示例表示允许调用该账号下所有的KMS密钥,如果仅允许使用某个CMK,此处可输入对应的CMK ID。
]
}
]
}
上传文件至设置了默认加密方式的Bucket
具有目标Bucket的上传文件权限。
若设置加密方式为KMS,并指定了CMK
ID,还需要ListKeys、Listalias、ListAliasesByKeyId、DescribeKeys以及GenerateDataKey权限。此场景下的RAM
Policy授权策略如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:List*",
"kms:DescribeKey",
"kms:GenerateDataKey"
],
"Resource": [
"acs:kms:*:1416614965936597:*"//示例表示允许调用该账号下所有的KMS密钥,如果仅允许使用某个CMK,此处可输入对应的CMK ID。
]
}
]
}
从设置了默认加密方式的Bucket中下载文件
具有目标Bucket的文件访问权限。
若设置加密方式为KMS,并指定了CMK ID,还需要Decrypt权限。此场景下的RAM Policy授权策略如下:
{
"Version": "1",
"Statement": [
{
"Effect": "Allow",
"Action": [
"kms:Decrypt"
],
"Resource": [
"acs:kms:*:1416614965936597:*"//示例表示具有当前所有KMS的解密权限。若要针对某个KMS密钥进行解密,此处可输入对应的CMK ID。
]
}
]
}
配置Bucket默认加密方式后,MOS会对历史文件进行加密吗?
MOS只对服务器端加密配置生效后上传的Object进行加密,不会加密历史文件。若您需要加密历史文件,可通过CopyObject覆写历史文件。
客户端加密是指将文件(Object)发送到对象存储MOS之前在本地进行加密,本文介绍客户端加密的方式与流程。
使用客户端加密功能时,您需要对主密钥的完整性和正确性负责。因您维护不当导致主密钥用错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。
在对加密数据进行复制或者迁移时,您需要对加密元信息的完整性和正确性负责。因您维护不当导致加密元信息出错或丢失,从而导致加密数据无法解密所引起的一切损失和后果均由您自行承担。
使用客户端加密时,会为每个Object生成一个随机数据加密密钥,用该随机数据加密密钥明文对Object的数据进行对称加密。主密钥用于生成随机的数据加密密钥,加密后的内容会当作Object的meta信息保存在服务端。解密时先用主密钥将加密后的随机密钥解密出来, 再用解密出来的随机数据加密密钥明文解密Object的数据。主密钥只参与客户端本地计算,不会在网络上进行传输或保存在服务端,以保证主密钥的数据安全。
说明
客户端加密支持分片上传超过5 GB的文件。在使用分片方式上传文件时,需要指定上传文件的总大小和分片大小,
除了最后一个分片外,每个分片的大小要一致,且分片大小目前必须是16的整数倍。
调用客户端加密上传文件后,加密元数据会被保护,无法通过CopyObject修改Object meta信息。
对于主密钥的使用,目前支持如下两种方式:
使用KMS托管用户主密钥
使用用户自主管理密钥
当使用KMS托管用户主密钥用于客户端数据加密时,无需向 MOS加密客户端提供任何加密密钥,只需要在上传对象时指 定KMS用户主密钥ID(也就是CMK ID)。具体工作原理如下图所示。
加密并上传Object
i.获取加密密钥。
通过使用CMK ID,客户端首先向KMS发送一个请求,申请1个用于加密Object的数据密钥(Data
Key)。作为响应,KMS会返回一个随机生成的数据明文密钥(Data
Key)以及一个数据密文密钥(Encrypted Data Key)。
ii.加密数据并上传至MOS。
本地客户端接收到KMS返回的数据明文密钥以及数据密文密钥后,将使用数据明文密钥进行本地加密,并且将加密后的对象以及数据密文密钥上传至MOS。
i.下载并解密Object
下载Object。
客户端从MOS服务端下载加密的Object以及作为对象元数据存储的数据密文密钥。
ii.解密Object。
客户端将数据密文密钥以及CMK ID发送至KMS服务器。作为响应,KMS将使用指定的CMK解密,并且将数据明文密钥返回给本地加密客户端。
说明
本地加密客户端为每一个上传的对象获取一个唯一的数据加密密钥。
为了保证数据的安全性,建议CMK定期轮换或者更新。
您需要维护CMK ID与Object之间的映射关系。
使用用户自主管理密钥时,需要您自主生成并保管加密密钥。当本地客户端 加密Object时,由用户自主上传加密密钥(对称加密密钥或者非对称加密密钥)至本地加密客户端。其具体加密过程如下图所示。
加密并上传Object
i.用户向本地加密客户端提供1个用户主密钥(对称密钥或者非对称密钥)。
ii.本地加密客户端在本地生成一个一次性的对称密钥,即数据密钥(Data
Key)。它将用于加密单个对象(针对每个对象,客户端都会随机生成1个数据密钥)。
iii.客户端使用数据密钥加密对象,并使用用户提供的主密钥来加密数据密钥。
iv.客户端将加密的数据密钥(Encrypted Data Key)作为对象元数据的一部分上传至MOS。
下载并解密Object
i.客户端从MOS下载加密的对象以及元数据。
ii.通过使用元数据中的材料,客户端将授权确定使用对应主密钥来解密数据密钥,之后使用解密后的数据密钥来解密对象。
说明
MOS本地加密客户端不会将用户主密钥以及未加密的数据发送至MOS。所以,请务必妥善保管加密密钥,如果密钥丢失,将无法解密数据。
数据密钥由本地加密客户端随机生成。
客户端加密是指将文件(Object)发送到对象存储MOS之前在本地进行加密,本文介绍客户端加密的方式与流程。
使用版本控制时,有如下注意事项:
费用说明
版本控制功能本身不收取任何费用,但对当前版本和所有历史版本的文件都会收取存储费用。为避免不必要的存储费用,请及时删除不需要的历史版本文件;此外,若您对历史版本文件进行下载或恢复等操作,还会产生相应的请求费用、流量费用等。计费详情,请参见计量项与计费项。
权限说明
只有Bucket的拥有者及授予了PutBucketVersioning权限的RAM用户才能配置版本控制。
功能互斥
同一Bucket中,版本控制与合规保留策略或镜像回源无法同时配置。
如果Bucket已开启版本控制,上传文件时附加的覆盖同名文件请求头x-MOS-forbid-overwrite将不生效。更多信息,请参见请求头。
您可以通过以下几种方式配置版本控制:
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
命令行工具MOSutil | 命令行工具,性能好 |
Java SDK Python SDK C++ SDK Go SDK .NET Node.js |
丰富、完整的各类语言SDK demo |
Bucket包含三种版本控制状态,分别为未开启、开启或者暂停。
默认情况下,Bucket版本控制状态为“未开启”。一旦Bucket处于“开启”版本状态,将无法返回至“未开启”状态。但是,您可以暂停Bucket的版本控制状态。
当Bucket版本控制处于“开启”状态时,MOS将为新上传的Object生成全局唯一的随机字符串版本ID。有关启用版本控制状态下Object的相关操作详情,请参见开启版本控制。
当Bucket版本控制处于“暂停”状态时,MOS将为新上传的Object生成特殊字符串为“null”的版本ID。有关暂停版本控制状态下Object的相关操作详情,请参见暂停版本控制。
说明 当Bucket版本控制处于“开启”状态时,由于Object的每个版本都被保存下来,每个版本都会占 用存储空间,MOS会对Object的所有版本收取存储费用。建议结合您的使用场景通过生命周期规则, 将当前版本或历史版本Object转换为低频或归档存储类型或删除不再需要的历史版本,以降低您的存储费用,详情请参见版本控制最佳实践。
建议您在以下场景中使用版本控制,为您的数据安全提供更好的保障。
数据误删除
当前MOS不提供回收站功能。您删除MOS数据后想要找回时,可使用版本控制功能,恢复已删除的数据。
文件被覆盖
对于网盘、在线协作类产品,文件会被频繁修改,针对文件的编辑会产生大量的临时版本。您可以使用版本控制功能找回某个时间点的版本。
以下表格详细阐述了不同版本控制状态下,MOS对覆盖和删除Object的处理逻辑,帮助您了解版本控制状态下的数据保护机制。
版本控制状态 | 覆盖Object | 删除Object |
---|---|---|
未开启 | 已有Object被直接覆盖,且无法恢复,只能获取最新版本Object。 | 直接删除,无法再获取此Object。 |
开启 | 为此Object添加新的版本ID,历史版本不受影响。 | 为此Object添加删除标记(Delete Marker), 删除标记将携带一个全局唯一的版本ID,历史版本不受影响。 |
暂停 |
为此Object产生版本ID为“null”的新版本。
历史版本里若已存在版本号为“null”的Object或删除标记,则将会被新的“null”版本Object覆盖,其他非“null”版本的Object或删除标记不受影响。 |
为此Object产生版本ID为“null”的删除标记。
历史版本里若已存在版本号为“null”的Object或删除标记,则将会被新的删除标记覆盖,其他非“null”版本的Object或删除标记不受影响。 |
以下以图示的方法说明在Bucket版本控制状态处于“开启”和“暂停”时,上传同名Object或删除Object时MOS的处理行为。图示中的版本号均以简短版本号代替。
开启版本控制下的Object覆盖操作
在开启版本控制的Bucket中连续执行上传Object操作,Object虽然被多次覆盖,但每次覆盖操作均会产生一个独立的版本ID。
开启版本控制下的Object删除操作
在开启版本控制下的Bucket中删除Object时,历史版本Object不会被真
正删除,而是产生一个删除标记来标识Object的当前版本是删除状态。如果再重复上传同名Object,将产生新的版本ID。
暂停版本控制下的Object覆盖操作
在暂停版本控制状态Bucket中上传Object时,历史版本
数据继续保留,新上传的Object版本号为“null”。如果再重复上传同名Object,将产生新的“null”版本,并自动把前一次的“null”版本覆盖。
暂停版本控制下的Object删除操作
在暂停版本控制下的Bucket中删除Object时,历史版本Object不会被真正删除,而是产生一个删除标记来标识Object的当前版本是删除状态。
从上述信息得知,当您的Bucket处于版本控制状态时,针对数据的覆盖和 删除操作将会以历史版本的形式保存下来。您在错误覆盖或者删除Object后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。
存储空间(Bucket)开启版本控制后,MOS会为Bucket中所有文件(Object)的每个版本指定唯一的ID值,且Bucket中 现有Object的内容、权限保持不变。开启版本控制后,还能够防止意外覆盖或者删除Object ,并允许查询、恢复Object的历史版本。
当您在开启了版本控制的Bucket中进行上传文件、列举文件、下载文件、删除文件、恢复文件等操作时,有如下注意事项:
开启版本控制的Bucket会维护一个当前版本Object,以及零个或零个以上历史版本Object。
如果在Bucket开启版本控制前上传了Object,则MOS将Object的版本ID值置为null。
以下图示中的版本ID均以简短版本ID代替。
在开启了版本控制的Bucket上传Object时,MOS会为这些上传的Object自动添加唯一的版本ID。
说明 PutObject、PostObject、CopyObject 、MultipartUpload等操作都会为新生成的Object自动添加唯一的版本ID。
通过PUT操作上传Object(key=example.jpg)时,MOS为该Object指定了唯一的版本号(ID=111111),如下图所示。
通过PUT操作第一次上传同名Object(key=example.jpg)时,原始Object版本(ID=111111)作为历史版本,生成的新版本(ID=222222)将作为当前版本保存在Bucket中。当再次上传同名Object时,原始Object版本 (包括ID=111111以及ID=222222)将作为历史版本,而生成的新版本(ID=333333)则作为当前版本保存在Bucket中,如下图所示。
您可以通过cp命令、Java SDK、PHP SDK、Node.js SDK、Python SDK、.NET SDK、Go SDK、C++ SDK的方式在已开启版本控制的Bucket中上传文件。
在开启了版本控制的Bucket中,您可以使用GetBucketVersions(ListObjectVersions)接口获取Object的所有版本信息,包括删除标记(Delete
Marker)。
与GetBucketVersions(ListObjectVersions)不同的是,GetBucket(ListObject)接口仅返回Object的当前版本,且当前版本不为删除标记。
单个GetBucketVersions(ListObjectVersions)请求最多返回1000个版本Object。您可以通过发送多次请求来获取Object的所有版本。
例如,如果Bucket中包含两个Key(如example.jpg和photo.jpg),且第一个Key(example.jpg)有900个版本,第二个Key(photo.jpg)有500个版本,则单个请求将先按照Key的字母序,再按照版本的新旧顺序依次列举example.jpg的所有900个版本,另加photo.jpg的100个版本。
如下图所示,在开启了版本控制的Bucket中,调用GetBucketVersions(ListObjectVersions)接口时,返回了Bucket中所有Object的所有版本,包含当前版本为删除标记的Object
;调用GetBucket(ListObject)接口时,则仅返回Object的当前版本,且当前版本不能为删除标记,因此仅返回当前版本ID为444444的Object。
您可以通过ls命令、Java SDK、Node.js SDK、Python SDK、Go SDK的方式在开启版本控制的Bucket中列举文件。
您可以在开启了版本控制Bucket下载当前版本或指定版本的Object。
通过GET请求下载Object时,如果没有指定Object的版本ID,默认情况下返回Object的当前版本。如下图所示返回Object的当前版本(ID=333333)。
在当前版本为删除标记(Delete Marker)时执行GET操作时返回404 Not Found。
如果要下载指定的Object版本,则通过GET请求下载Object时需要指定其版本ID ,如下图所示获取指定版本ID为222222的Object。
您可以通过cp命令、Java SDK、PHP SDK、Node.js SDK、Python SDK、.NET SDK、Go SDK、Go SDK的方式在已开启版本控制的Bucket中下载文件。
开启版本控制后,您可以通过指定Object版本ID或者配置Lifecycle将Object永久删除。如果删除Object时未指定版本ID,则Bucket中将插入一个删除标记(Delete Marker)作为当前版本。
说明 开启版本控制后,若删除Object时未指定版本ID,默认不会删除Object的当前版本以及历史版本。
此外,您还可以在开启版本控制的Bucket中通过生命周期规则的Expiration元素指定对象当前版本过期,还可以通过NoncurrentVersionExpiration元素永久删除非当前版本对象,对于这两种元素的详细说明如下:
Expiration元素应用于当前对象版本,MOS通过添加删除标记将当前版本作为非当前版本保留,而不是删除当前版本对象,然后删除标记将成为对象的当前版本。
NoncurrentVersionExpiration元素适用于非当前版本对象,MOS会永久删除这些对象版本,且无法恢复永久删除的对象。
有关版本控制结合生命周期的更多信息,请参见生命周期配置元素。
以下分别说明在未指定版本ID以及指定版本ID的情况下,执行DELETE操作时Object的删除行为。
如果未指定Object的版本ID,则MOS会插入一个删除标记作为当前版本,该删除标记也会有相应的唯一版本ID,但没有相关数据和ACL等,如下图所示(当前版本为删除标记,且版本ID=444444)。
如果指定Object的版本ID,则永久删除该指定版本的Object,如下图所示(即删除版本ID=333333的Object)。
您可以通过rm命令、Java SDK、PHP SDK、Node.js SDK、 Python SDK、.NET SDK、Go SDK、C++ SDK的方式在已开启版本控制的Bucket中删除文件。
开启版本控制后,Bucket中Object的所有版本都将得以保留。您可以通过恢复指定历史版本的方式,使得任意Object的历史版本成为当前版本。
您可以通过以下两种方式将Object的历史版本恢复至当前版本:
通过CopyObject来恢复Object的历史版本
复制的Object将成为该Object的当前版本,且所有Object版本都将保留。
如下图所示,将原Object的历史版本(ID=222222)复制到同一个Bucket中,MOS将为该Object生成新的版本(ID=444444),并将其置为该Object的当前版本。因此,该Object同时具有历史版本(ID=222222)以及当前版本(ID=444444)。
通过删除Object的当前版本来恢复Object的历史版本
如下图所示,当您通过DELETE versionId的方式永久删除当前Object版本(ID=222222)后,
下一个历史版本(ID=111111)成为了该Object的当前版本。
说明 由于Object的当前版本删除后无法恢复,建议您通过CopyObject的方式来恢复Object的历史版本。
您可以通过cp命令、Java SDK、PHP SDK、Node.js SDK、Python SDK、.NET SDK、Go SDK、C++ SDK的方式在已开启版本控制的Bucket中恢复历史版本文件。
您可以暂停版本控制以停止在存储空间(Bucket ) 中继续累积同一文件(Object)的 新版本。暂停版本控制后,您可以上传文件,并通过指定版本ID(versionId)的方式对历史版本Object进行下载和删除操作。
向暂停版本控制的存储空间(Bucket)上传文件(Object)时,MOS将为新生成的Object添加versionId为null的版本,且每个Object只会保留一个versionId为null的版本。
如下图所示,向暂停版本控制的Bucket中通过PUT操作上传Object时,MOS会为上传的Object自动添加null的版本ID。
如下图所示,如果暂停版本控制的Bucket中存在开启版本控制时生成的Object版本(ID=111111),通过PUT操作向该Bucket上传同名Object时,MOS会为新 版本Object分配null的版本ID ,且该版本作为当前版本,同时开启版本控制时生成的Object版本(ID=111111)将作为历史版本保存下来。
如果暂停版本控制的Bucket中已存在版本ID为null的Object ,通过PUT操作向该Bucket上传同名Object时,原版本ID为null的版本将被覆盖。
您可以通过cp命令、Java SDK、PHP SDK、Node.js SDK、Python SDK、.NET SDK、Go SDK、C++ SDK的方式在已暂停版本控制的Bucket中上传文件。
您可以在暂停版本控制的存储空间(Bucket)中下载当前版本或指定版本的文件(Object)。
通过GET请求下载Object时:
如果没有指定Object的版本ID,默认情况下返回Object的当前版本。如下图所示返回版本ID为null的当前版本。
如果要下载指定的版本,则通过GET请求下载Object时需要指定其版本ID ,如下图所示获取的指定版本为(ID=222222)。
您可以通过cp命令、Java SDK、PHP SDK、Node.js SDK、Python SDK、.NET SDK、Go SDK、Go SDK的方式在已暂停版本控制的Bucket中下载文件。
在暂停版本控制的Bucket中执行DELETE操作时,分以下三种情形:
如果对Bucket中当前版本ID不为null的Object执行DELETE操作时,则MOS会插入版本ID为null的删除标记(Delete
Marker)作为当前版本。
如果对Bucket中当前版本ID为null的Object执行DELETE操作时,则MOS会插入版本ID为null的删除标记(Delete Marker)作 为当前版本。由于MOS保证同一个Object只允许存在一个null的版本,因此原版本ID为null的版本将被覆盖。
如果通过DELETE+versionId的方式删除Object ,则 该指定版本的Object将被永久删除,如下图所示(即删除版本ID=333333的Object )。
您可以通过rm命令、Java SDK、PHP SDK、Node.js SDK、 Python SDK、.NET SDK、Go SDK、C++ SDK的方式在已暂停版本控制的Bucket中删除文件。
您可以暂停版本控制以停止在存储空间(Bucket ) 中继续累积同一文件(Object)的 新版本。暂停版本控制后,您可以上传文件,并通过指定版本ID(versionId)的方式对历史版本Object进行下载和删除操作。
与其他任何 Object 一样,删除标记同样有文件名称(Key) 和版本 ID,但删除标记在以下方面与其他 Object 不同:
没有关联的数据。
没有关联的访问控制列表(ACL)值。
由于删除标记不包含数据,因此 GET 请求检索不到任何内容。当前版本为删除标记的 Object 时,GET 请求会引发 404 错误。
只能对删除标记执行 DELETE 操作。拥有 DeleteObjectVersion 的权限账号可以删除“删除标记” 。
对已开启版本控制或已暂停版本控制的 Bucket 发送 DeleteObject 请求时,MOS 就会创建删除标记。在 DeleteObject
请求中如果未指定 Object 的
versionId,则不会删除 Object ,而是创建删除标记作为 Object 的当前版本。
说明 无法直接删除已启用版本控制的 Bucket 中的 Object 。但删除标记可以将 Object 视为已删除。
以下内容介绍如何在开启版本控制的 Bucket 中删除“删除标记”。
如果在 DELETE 操作时未指定删除标记的版本 ID,则 MOS 不会删除“删除标记”,而是插入删除标记作为 Object
的当前版本。删除标记可以进行累积,如下图所示。
说明 在已开启版本控制的 Bucket 中,相同的 Object 可能有多个删除标记,且删除标记将对应唯一的版本 ID。
如果在 DELETE 请求中指定 versionId ,则该指定版本的 Object 将被永久删除,如下图所示(即删除 versionId=333333 的删除标记,versionId=222222 的版本成为 Object 的当前版本)。
本文介绍您在使用版本控制过程中可能遇到的问题,并提供相应的排查方法与解决方案。
版本控制功能本身不收取任何费用,但对当前版本和所有历史版本的文件(Object)都会收取存储费用。以下列场景为例,说明使用版本控制时的存储费用(假定当月有30天):
当月第1天:通过PutObject操作向某一存储空间(Bucket)上传了4 GB大小的Object,存储类型为标准存储(本地冗余)。
当月第16天:通过PutObject操作对同一个Bucket中的同一个Object写入5 GB的数据。
分析上述Object当月的存储费用时,请注意在第16天对Object写入5 GB数据时,第1天上传的4
GB的Object并未从Bucket中删除。相反,4
GB作为Object的历史版本在Bucket中存储了30天,而5 GB作为Object的最新版本在Bucket中存储了15天。
按照存储费用的按量付费计算规则得知,该Object当月的存储费用为:4 GB×0.12元/GB/月+5 GB×0.12元/GB/月÷2=0.78元。
有关不同类型的存储费用说明,请参见存储费用。
问题描述:启用版本控制后,调用GetBucket (ListObjects)接口列举当前版本Object时,为什么响应速度会显著下降?
问题原因:您的Bucket中有一个或多个Object包含大量的非当前版本Object或过期删除标记。
问题排查:
通过GetBucketVersions(ListObjectVersions)查看Object是否存在较多版本。详情请参见GetBucketVersions(ListObjectVersions)。
通过Bucket清单功能查看Bucket中Object的信息,包括版本信息、是否包含删除标记等。详情请参见存储空间清单。
解决方法:启用生命周期管理中的非当前版本过期操作(NonCurrentVersionExpiration)以及移除过期删除标记策略(ExpiredObjectDeleteMarker),以便使早期版本的对象过期,并删除在Bucket中的过期删除标记。详情请参见生命周期配置元素。
对MOS的HTTP请求可以根据是否携带身份验证信息分为匿名请求和带身份验证的请求。匿名请求指的是请求中 没有携带任何和身份相关的信息;带身份验证的请求指的是按照MOS API文档中规定的在请求头部或者在请求URL中携带签名的相关信息。
1.用户的请求被发送到MOS的HTTP服务器上。
2.MOS根据URL解析出Bucket和Object。
3.MOS检查Object ACL是否允许匿名访问。
如果允许匿名访问,则返回Object的内容给用户。
如果不允许匿名访问,则拒绝访问。
1.用户的请求被发送到MOS的HTTP服务器上。
2.MOS根据URL解析出Bucket和Object。
3.MOS检查Object ACL是否允许匿名访问。
如果允许匿名访问,则返回Object的内容给用户。
如果不允许匿名访问,则拒绝访问。
目前访问MOS使用的 AccessKey(AK)有三种类型。
摩杜云账号AK
摩杜云账号AK特指摩杜云主账号的AK,每个摩杜云账号提供的AccessKey对拥有的资源有完全控制的权限。每个摩杜云账号能够同时拥有不超过5个active或者inactive的AK对(AccessKeyId和AccessKeySecret)。
用户可以登录AccessKey管理控制台,申请新增或删除AK对。
每个AK对都有active和inactive两种状态。
Active:表明用户的AK处于激活状态,可以在身份验证的时候使用。
Inactive:表明用户的AK处于非激活状态,不能在身份验证的时候使用。
说明 为了您的数据安全,不建议直接使用摩杜云账号AccessKey,您可以创建RAM子账号之后并授权后,使用子账号的AccessKey管理您的资源。
RAM子账号AK
RAM(Resource Access
Management)是摩杜云提供的资源访问控制服务。RAM账号AK指的是通过RAM被授权的AK。这组AK只能按照RAM定义的规则去访问Bucket里的资源。通过RAM,您可以集中管理您的用户(比如员工、系统或应用程序),以及控制用户可以访问您名下哪些资源的权限。比如,能够限制您的用户只拥有对某一个Bucket的读权限。子账号是从属于主账号的,并且这些账号下不能拥有实际的任何资源,所有资源都属于主账号。
STS账号AK
STS(Security Token
Service)是摩杜云提供的临时访问凭证服务。STS账号AK指的是通过STS颁发的AK。这组AK只能按照STS定义的规则去访问Bucket里的资源。
目前主要有三种身份验证方式:
AK验证
RAM验证
STS验证
当用户以个人身份向MOS发送请求时,其身份验证的实现如下:
用户将发送的请求按照MOS指定的格式生成签名字符串。
1.用户使用AccessKeySecret对签名字符串进行加密产生验证码。
2.MOS收到请求以后,通过AccessKeyId找到对应的AccessKeySecret,以同样的方法提取签名字符串和验证码。
3.如果计算出来的验证码和提供的一样即认为该请求是有效的。
否则,MOS将拒绝处理这次请求,并返回HTTP 403错误。
使用控制台访问MOS:控制台中对用户隐藏了身份验证的细节,使用控制台访问MOS的用户无需关注细节。更多信息请参见下载文件。
使用SDK访问MOS:MOS提供了多种开发语言的SDK,SDK中实现了签名算法,只需要将AccessKey信息作为参数输入即可。
使用API访问MOS:如果您想用自己喜欢的语言来封装调用RESTful
API接口,您需要实现签名算法来计算签名。具体请参见API手册中的在Header中包含签名和在URL中包含签名。
您可以在HTTP请求中增加 Authorization 的Header来包含签名(Signature)信息,表明这个消息已被授权。
MOS SDK已经实现签名,用户使用MOS SDK不需要关注签名问题 。如果您想了解具体语言的签名实现,请参考MOS SDK的代码。MOS SDK签名实现的文件如下表:
SDK | 签名实现 |
---|---|
Java SDK | MOSRequestSigner.java |
Python SDK | auth.py |
.Net SDK | MOSRequestSigner.cs |
PHP SDK | MOSClient.php |
C SDK | MOS_auth.c |
JavaScript SDK | client.js |
Go SDK | auth.go |
Ruby SDK | util.rb |
iOS SDK | MOSModel.m |
Android SDK | MOSUtils.java |
当您自己实现签名,访问MOS报SignatureDoesNotMatch错误时,请参见自签名计算失败排除错误。
MOS SDK已经实现签名,用户使用MOS SDK不需要关注签名问题 。如果您想了解具体语言的签名实现,请参考MOS SDK的代码。MOS SDK签名实现的文件如下表:
Authorization = "MOS " + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Date + "\n"
+ CanonicmoduzedMOSHeaders
+ CanonicmoduzedResource))
细节分析如下:
AccessKeySecret表示签名所需的密钥。
VERB表示HTTP请求的Method,主要有PUT、GET、POST、HEAD、DELETE等。
\n表示换行符。
Content-MD5
表示请求内容数据的MD5值,对消息内容(不包括头部)计算MD5值获得128比特位数字,对该数字进行base64编码得出。该请求头可用于消息合法性的检查(消息内容是否与发送时一致),例如”eB5eJF1ptWaXm4bijSPyxw==”,也可以为空。详情请参见RFC2616
Content-MD5。
Content-Type表示请求内容的类型,例如”application/octet-stream”,也可以为空。
Date表示此次操作的时间,且必须为GMT格式,例如”Sun, 22 Nov 2015 08:16:38 GMT”。
CanonicmoduzedMOSHeaders表示以x-MOS- 为前缀的HTTP Header的字典序排列。
CanonicmoduzedResource表示用户想要访问的MOS资源。
说明 其中,Date和CanonicmoduzedResource不能为空。如果请求中的 Date时间和MOS服务器的当前时间差15分钟以上,MOS服务器将拒绝该请求,并返回HTTP 403错误。
所有以x-MOS-为前缀的HTTP Header被称为CanonicmoduzedMOSHeaders,它的构建方法如下:
1.将所有以 x-MOS-为前缀的HTTP请求头的名字转换成小写的形式 。例如X-MOS-Meta-Name:
TaoBao转换成x-MOS-meta-name: TaoBao。
2.如果以STS获得的AccessKeyId和AccessKeySecret发送请求时,还需要将获得的security-token值以x-MOS-security-token:security-token的形式加入到签名字符串中。
3.将步骤1中得到的所有HTTP请求头按照名字的字典序进行升序排列。
4.删除请求头和内容之间分隔符两端出现的任何空格。例如x-MOS-meta-name:
TaoBao转换成x-MOS-meta-name:TaoBao。
5.将每一个请求头和内容用\n分隔符分隔拼成最后的CanonicmoduzedMOSHeaders。
说明
CanonicmoduzedMOSHeaders可以为空,无需添加最后的分隔符\n。
如果只有一个CanonicmoduzedMOSHeaders,例如x-MOS-meta-a\n,则需要在最后加上\n。
如果有多个CanonicmoduzedMOSHeaders,例如x-MOS-meta-a:a\nx-MOS-meta-b:b\nx-MOS-meta-c:c\n,则需要在每一个CanonicmoduzedMOSHeaders之后加上\n。
用户发送请求中想访问的MOS目标资源被称为CanonicmoduzedResource,它的构建方法如下:
1.将CanonicmoduzedResource置为空字符串""。
2.设置要访问的MOS资源/BucketName/ObjectName。如果仅有BucketName而没有ObjectName,则CanonicmoduzedResource为”/BucketName/“,如果既没有BucketName也没有ObjectName,则CanonicmoduzedResource为“/”。
3.如果请求的资源包括子资源(SubResource)
,那么将所有的子资源按照字典序,从小到大排列并以&为分隔符生成子资源字符串。在CanonicmoduzedResource字符串尾添加?和子资源字符串。此时的CanonicmoduzedResource为/BucketName/ObjectName?acl&uploadId=UploadId。
MOS目前支持的子资源(SubResource)包括acl、uploads、location、cors、logging、website、referer、lifecycle、delete、append、tagging、objectMeta、uploadId、partNumber、security-token、position、img、style、styleName、replication、replicationProgress、replicationLocation、cname、bucketInfo、comp、qos、live、status、vod、startTime、endTime、symlink、x-MOS-process、response-content-type、response-content-language、response-expires、response-cache-control、response-content-disposition、response-content-encoding等。
子资源(SubResource)有以下三种类型:
资源标识,例如子资源中的acl、append、uploadId、symlink等,详见关于Bucket的操作和关于Object的操作。
指定返回Header字段,例如response-***,详见GetObject的Request Parameters。
文件(Object)处理方式,例如x-MOS-process,详见图片处理。
签名的字符串必须为UTF-8格式。含有中文字符的签名字符串必须先进行 UTF-8 编码,再与 AccessKeySecret计算最终签名。
签名的方法用RFC 2104中定义的HMAC-SHA1方法,其中Key指的是AccessKeySecret。
Content-Type和Content-MD5在请求中不是必须的,但是如果请求需要签名验证,空值的话以换行符 \n 代替。
在所有非HTTP标准定义的header中,只有以x-MOS-开头的header,需要加入签名字符串(如下方签名示例中的x-MOS-magic则需要加入签名字符串);其他非HTTP标准header将被MOS忽略。
说明
以x-MOS-开头的header在签名验证前需要符合以下规范:
header的名字需要变成小写。
header按字典序自小到大排序。
分割header name和value的冒号前后不能有空格。
每个header之后都有一个换行符“\n”,如果没有header,CanonicmoduzedMOSHeaders则设置为空。
请求 | 签名字符串计算公式 | 签名字符串 |
---|---|---|
PUT /nelson HTTP/1.0 Content-MD5: eB5eJF1ptWaXm4bijSPyxw== Content-Type: text/html Date: Thu, 17 Nov 2005 18:49:58 GMT Host: MOS-example.MOS-cn-hangzh ou.moduyuncs.com X-MOS-Meta-Author: foo@bar.com X-MOS-Magic: abracadabra |
Signature = base64(hmac-sha1(AccessKeySecret,VERB + “\n” + Content-MD5 + “\n”+ Content-Type + “\n” + Date + “\n” + CanonicmoduzedMOSHeaders+ CanonicmoduzedResource)) | “PUT\n eB5eJF1ptWaXm4bijSPyxw==\n text/html\n Thu, 17 Nov 2005 18:49:58 GMT\n x-MOS-magic:abrac adabra\nx-MOS-meta-author:foo@bar.com\n/MOS-example/nelson |
假如AccessKeyId为“44CF959******252F707”, AccessKeySecret为“OtxrzxIsfpFjA7Sw******8Bw21TLhquhboDYROV”,可用以下方法(以Python为例)计算签名(Signature):
import base64
import hmac
import sha
h = hmac.new("OtxrzxIsfpFjA7Sw******8Bw21TLhquhboDYROV",
"PUT\nODBGOERFMDMzQTczRUY3NUE3NzA5QzdFNUYzMDQxNEM=\ntext/html\nThu, 17 Nov 2005 18:49:58 GMT\nx-MOS-magic:abracadabra\nx-MOS-meta-author:foo@bar.com\n/MOS-example/nelson", sha)
Signature = base64.b64encode(h.digest())
print("Signature: %s" % Signature)
签名(Signature)计算结果应该为26NBxoKd******Dv6inkoDft/yA=,由于Authorization = “MOS”+ AccessKeyId + “:” + Signature,所以最后Authorization为 “MOS 44CF95900***BF252F707:26NBxoKd******Dv6inkoDft/yA=”,然后加上Authorization头组成最后需要发送的消息:
PUT /nelson HTTP/1.0
Authorization:MOS 44CF95900***BF252F707:26NBxoKd******Dv6inkoDft/yA=
Content-Md5: eB5eJF1ptWaXm4bijSPyxw==
Content-Type: text/html
Date: Thu, 17 Nov 2005 18:49:58 GMT
Host: MOS-example.MOS-cn-hangzhou.moduyuncs.com
X-MOS-Meta-Author: foo@bar.com
X-MOS-Magic: abracadabra
细节分析如下:
如果传入的AccessKeyId不存在或未激活,返回403 Forbidden。错误码:InvalidAccessKeyId。
若用户请求头中Authorization值的格式不对,返回400 Bad Request。错误码:InvalidArgument。
MOS所有的请求都必须使用HTTP 1.1协议规定的GMT时间格式。其中,日期的格式为:
date1 = 2DIGIT SP month SP 4DIGIT; day month year (e.g., 02 Jun 1982)
说明 上述日期格式中,“天”所占位数都是“2 DIGIT”。 因此,“Jun 2”、“2 Jun 1982”和“2-Jun-1982”都是非法日期格式。
如果签名验证的时候,头中没有传入Date或者格式不正确,返回403 Forbidden错误。错误码:AccessDenied。
传入请求的时间必须在MOS服务器当前时间之后的15分钟以内,否则返回403 Forbidden。错误码:RequestTimeTooSkewed。
如果AccessKeyId已激活,但MOS判断用户的请求发生签名错误,则返回403
Forbidden,并在返回给用户的response中告诉用户正确的用于验证加密的签名字符串。用户可以根据MOS的response来检查自己的签名字符串是否正确。
返回示例如下:
< ?xml version="1.0" ?>
< Error>
< Code>
SignatureDoesNotMatch
< /Code>
< Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
< /Message>
< StringToSignBytes>
47 45 54 0a 0a 0a 57 65 64 2c 20 31 31 20 4d 61 79 20 32 30 31 31 20 30 37 3a 35 39 3a 32 35 20 47 4d 54 0a 2f 75 73 72 65 61 6c 74 65 73 74 3f 61 63 6c
< /StringToSignBytes>
< RequestId>
1E446260FF9B****
< /RequestId>
< HostId>
MOS-cn-hangzhou.moduyuncs.***
< /HostId>
< SignatureProvided>
y5H7yzPsA/tP4+0tH1HHvPEwUv8=
< /SignatureProvided>
< StringToSign>
GET
Wed, 11 May 2011 07:59:25 GMT
/MOS-example?acl
< /StringToSign>
< MOSAccessKeyId>
AKIAIVAKMSMOY7VO****
< /MOSAccessKeyId>
< /Error>
以消息内容“123456789”为例,以下详细说明正确及错误计算该字符串的Content-MD5的方法。
正确计算示例
i.先计算MD5加密的二进制数组(128位)。
ii.对这个二进制数组进行base64编码(而不是对32位字符串编码)。
以Python为例:
>>> import base64,hashlib
>>> hash = hashlib.md5()
>>> hash.update("0123456789")
>>> base64.b64encode(hash.digest())
'eB5eJF1ptWaXm4bijSPyxw=='
hash.digest(),计算出二进制数组(128位)。
>>> hash.digest()
'x\x1e^$]i\xb5f\x97\x9b\x86\xe2\x8d#\xf2\xc7'
错误计算示例
说明 常见错误是直接对计算出的32位字符串进行base64编码。
# hash.hexdigest(),计算得到可见的32位字符串编码。
>>> hash.hexdigest()
'781e5e245d69b566979b86e28d23f2c7'
# 错误的MD5值进行base64编码后的结果:
>>> base64.b64encode(hash.hexdigest())
'NzgxZTVlMjQ1ZDY5YjU2Njk3OWI4NmUyOGQyM2YyYzc='
除了使用Authorization Header,您还可以在URL中加入签名信息,以便将该URL转给第三方实现授权访问。
使用在URL中签名的方式,会将您授权的数据在过期时间内曝露在互联网上,请预先评估使用风险。
MOS不支持同时在URL和Header中包含签名。
PUT和GET请求都支持在URL中签名。
您可以为PUT操作生成一个预签名的URL,该URL检查用户是否上传了正确的内容。SDK对请求进行预签名时,将计算请求正文的校验和,并生成包含在预签名URL中的MD5校验和。用户必须上传与SDK生成的MD5校验和相同的内容,否则操作失败。要验证MD5,只需在请求中增加Content-MD5头。
URL中添加签名的Python示例代码:
import base64
import hmac
import hashlib
import urllib
h = hmac.new("OtxrzxIsfpFjA7SwPzILwy8Bw21TLhquhboDYROV",
"GET\n\n\n1141889120\n/MOS-example/MOS-api.pdf",
hashlib.sha1)
urllib.quote (base64.encodestring(h.digest()).strip())
SS SDK中提供了URL签名方法,详细请参见SDK文档。
MOS SDK的URL签名实现,请参看下表:
SDK | URL签名方法 | 实现文件 |
---|---|---|
Java SDK | MOSClient.generatePresignedUrl | MOSClient.java |
Python SDK | Bucket.sign_url | api.py |
.Net SDK | MOSClient.GeneratePresignedUri | MOSClient.cs |
PHP SDK | MOSClient.signUrl | MOSClient.php |
JavaScript SDK | signatureUrl | Object.js |
C SDK | MOS_gen_signed_url | MOS_object.c |
C++ SDK | MOSClient::GeneratePresignedUrl | MOSClient.cc |
URL签名示例:
http://MOS-example.MOS-cn-hangzhou.moduyuncs.com/MOS-api.pdf?MOSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D
URL签名必须至少包含Signature、Expires和MOSAccessKeyId三个参数。生成签名字符串时,除Date被替换成Expires参数外,仍然包含content-type、content-md5等在Header中包含签名中定义的Header(请求中虽然仍有Date这个请求Header,但不需要将Date加入签名字符串中)。
Expires参数的值是一个Unix
time(自UTC时间1970年01月01号开始的秒数),用于标识该URL的超时时间。如果MOS接收到这个URL请求的时间晚于签名中包含的Expires参数时,则返回请求超时的错误码。例如:当前时间是1141889060,开发者希望创建一个60秒后自动失效的URL,则可以设置Expires时间为1141889120。
说明 出于安全考虑,MOS控制台中默认URL的有效时间为3600秒,最大为32400秒。
MOSAccessKeyId即密钥中的AccessKeyId。
Signature表示签名信息。所有MOS支持的请求和各种Header参数,在URL中进行签名的算法和在Header中包含签名的算法基本一样。
Signature = urlencode(base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ CONTENT-MD5 + "\n"
+ CONTENT-TYPE + "\n"
+ EXPIRES + "\n"
+ CanonicmoduzedMOSHeaders
+ CanonicmoduzedResource)))
CONTENT-MD5、CanonicmoduzedMOSHeaders、CONTENT-TYPE等值的详细说明,请参见在Header中包含签名。
说明
与Header中包含签名相比主要区别如下:
通过URL包含签名时,Header中包含签名的Date参数替换为Expires参数。
如果多次传入Signature、Expires或MOSAccessKeyId,以第一次为准。
先验证请求时间是否晚于Expires时间,然后再验证签名。
将签名字符串放到URL时,须对URL进行urlencode。
临时用户使用URL签名时,需要携带security-token,格式如下:
http://MOS-example.MOS-cn-hangzhou.moduyuncs.com/MOS-api.pdf?MOSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv4%3D&security-token=SecurityToken
错误码 | 返回消息 | 描述 |
---|---|---|
AccessDenied | 403 Forbidden | 在URL中添加签名时,Signature、Expires和O SSAccessKeyId顺序可以调换,但缺少Signature、 Expires或MOSAccessKeyId中的一个或者多个。 |
AccessDenied | 403 Forbidden | 访问的当前时间晚于请求中设定的Expires时间或时间格式错误。 |
InvalidArgument | 400 Bad Request | URL中包含Signature、Expires、 MOSAccessKeyId中的一个或者多个,并且Header中也包含签名消息。 |
本文档主要介绍 MOS 签名过程中的常见问题及解决方法。
MOS 允许在 Header 中包含签名或在 URL 中包含签名,这两种签名方式的区别如下:
Header | URL |
---|---|
不支持设置 expires | 支持设置 expires |
常用 Method 包括: GET、POST、PUT、DELETE | 常用 Method 包括:GET、PUT |
date 时间是 GMT 格式 | date 替换成 expires 变成时间戳 |
signature 不需要 URL 编码 | signature 需要 URL 编码 |
通过在 Header 或 URL 中自签名计算 signature 时, 经常遇到签名失败,报错 “The request signature we calculated does not match the signature you provided” 。以下 demo 演示了如何调用 API 自签名时上传 Object 到 MOS。
#! /us/bin/envy python
#Author: hanli
#Update: 2018-09-29
from optparse import OptionParser
import urllib, urllib2
import datetime
import base64
import hmac
import sha
import os
import sys
import time
class Main():
# Initial input parse
def __init__(self,options):
self.ak = options.ak
self.sk = options.sk
self.ed = options.ed
self.bk = options.bk
self.fi = options.fi
self.oj = options.objects
self.left = '\033[1;31;40m'
self.right = '\033[0m'
self.types = "application/x-www-form-urlencoded"
self.url = 'http://{0}.{1}/{2}'.format(self.bk,self.ed,self.oj)
# Check client input parse
def CheckParse(self):
if (self.ak and self.sk and self.ed and self.bk and self.oj and self.fi) != None:
if str(self.ak and self.sk and self.ed and self.bk and self.oj and self.fi):
self.PutObject()
else:
self.ConsoleLog("error","Input parameters cannot be empty")
# GET local GMT time
def GetGMT(self):
SRM = datetime.datetime.utcnow()
GMT = SRM.strftime('%a, %d %b %Y %H:%M:%S GMT')
return GMT
# GET Signature
def GetSignature(self):
mac = hmac.new("{0}".format(self.sk),"PUT\n\n{0}\n{1}\n/{2}/{3}".format(self.types,self.GetGMT(),self.bk,self.oj), sha)
Signature = base64.b64encode(mac.digest())
return Signature
# PutObject
def PutObject(self):
try:
with open(self.fi) as fd:
files = fd.read()
except Exception as e:
self.ConsoleLog("error",e)
try:
request = urllib2.Request(self.url, files)
request.add_header('Host','{0}.{1}'.format(self.bk,self.ed))
request.add_header('Date','{0}'.format(self.GetGMT()))
request.add_header('Authorization','MOS {0}:{1}'.format(self.ak,self.GetSignature()))
request.get_method = lambda:'PUT'
response = urllib2.urlopen(request,timeout=10)
fd.close()
self.ConsoleLog(response.code,response.headers)
except Exception,e:
self.ConsoleLog("error",e)
# output error log
def ConsoleLog(self,level=None,mess=None):
if level == "error":
sys.exit('{0}[ERROR:]{1}{2}'.format(self.left,self.right,mess))
else:
sys.exit('\nHTTP/1.1 {0} OK\n{1}'.format(level,mess))
if __name__ == "__main__":
parser = OptionParser()
parser.add_option("-i",dest="ak",help="Must fill in Accesskey")
parser.add_option("-k",dest="sk",help="Must fill in AccessKeySecrety")
parser.add_option("-e",dest="ed",help="Must fill in endpoint")
parser.add_option("-b",dest="bk",help="Must fill in bucket")
parser.add_option("-o",dest="objects",help="File name uploaded to MOS")
parser.add_option("-f",dest="fi",help="Must fill localfile path")
(options, args) = parser.parse_args()
handler = Main(options)
handler.CheckParse()
请求头:
PUT /yuntest HTTP/1.1
Accept-Encoding: identity
Content-Length: 147
Connection: close
User-Agent: Python-urllib/2.7
Date: Sat, 22 Sep 2018 04:36:52 GMT
Host: yourBucket.MOS-cn-shanghai.moduyuncs.com
Content-Type: application/x-www-form-urlencoded
Authorization: MOS B0g3mdt:lNCA4L0P43Ax
响应头:
HTTP/1.1 200 OK
Server: moduyunMOS
Date: Sat, 22 Sep 2018 04:36:52 GMT
Content-Length: 0
Connection: close
x-MOS-request-id: 5BA5C6E4059A3C2F
ETag: "D0CAA153941AAA1CBDA38AF"
x-MOS-hash-crc64ecma: 8478734191999037841
Content-MD5: 0MqhU5QbIp3Ujqqhy9o4rw==
x-MOS-server-time: 15
说明
Signature 中所有加入计算的参数都要放在 Header 中,Header 和 Signature 需保持一致。有关要签名的 Header,请参见在
Header 中包含签名。
通过 PUT 上传时,signature 计算的 Content-type 可以为 application/x-www-form-urlencoded 。
通过 Header 方式进行签名认证时无法设置 expires。只有通过 SDK 和控制台设置签名 URL 时可以设置 expires。
通过浏览器访问时的 HTTP 抓包数据如下图所示。
通过反复对比 403 和 200 的抓包数据发现通过微信小程序发出的 HTTP 请求和浏览器发起的 HTTP 请求的 URL
、signature、expires
相同,区别在于微信小程序携带了 Content-type ,而通过浏览器的请求没有携带 Content-type。
signature 计算时没有包含 Content-tpye ,而微信小程序发起的请求携带了 Content-type 。MOS 收到请求后会按照携带了
Content-type 的方式来计算
signature ,导致计算结果不一致。
遇到类似问题,建议抓包排查。如果 MOS 请求 Header 中携带了 Content-type,则 signature 计算也要加上
Content-type。
通过浏览器访问时的 HTTP 抓包数据如下图所示。
通过 tcpdump 抓包或者 Wireshark 对比得知,由于客户端发起的 Head 请求在通过 CDN 回源到 MOS 时,CDN 回源用的是 GET 请求, MOS 接收到该请求时用 GET 请求方式来计算 signature,得到的结果与客户端计算不一致,该问题可以升级摩杜云 CDN 处理。
对象存储MOS支持WORM特性,允许用户以“不可删除、不可篡改”方式保存和使用数据,符合美国证券交易委员会(SEC)和金融业监管局(FINRA)的合规要求。
MOS提供强合规策略,用户可针对存储空间(Bucket)设置基于时间的合规保留策略。当策略锁定后,用户可以在Bucket中上传和读取文件(Object),但是在Object的保留时间到期之前,任何用户都无法删除Object和策略。Object的保留时间到期后,才可以删除Object。MOS支持的WORM特性,适用于金融、保险、医疗、证券等行业。您可以基于MOS搭建“云上数据合规存储空间”。
说明 MOS是目前中国国内唯一通过Cohasset Associates审计认证的云服务,可满足严格的电子记录保留要求, 例如SEC Rule 17a-4(f)、FINRA 4511、CFTC 1.31等合规要求。详情请参见 MOS Cohasset Assessment Report。
MOS目前仅支持针对Bucket级别设置合规保留策略。
同一个Bucket中,版本控制和合规保留策略无法同时配置。若Bucket已开启版本控制功能,则无法再配置保留策略。版本控制功能详情请参见版本控制介绍。
Bucket内的Object在合规保留策略生效期间,可通过设置生命周期规则进行存储类型转化,在保证合规性的前提下,降低存储成本。
控制台:设置合规保留策略
MOS允许添加一条基于时间的合规保留策略,保护周期为1天到70年。
假设您在2013年6月1日创建一个名为examplebucket的Bucket,并且在不同时间上传了file1.txt、file2.txt、file3.txt三个Object。随后,
在2014年7月1日创建了保护周期为5年的合规保留策略。有关这三个Object的具体上传时间以及对应的Object到期时间如下:
Object名称 | 上传时间 | Object到期时间 |
---|---|---|
file1.txt | 2013年6月1日 | 2018年5月31日 |
file2.txt | 2014年7月1日 | 2019年6月30日 |
file3.txt | 2018年9月30日 | 2023年9月29日 |
生效规则
当基于时间的合规保留策略创建后,该策略默认处于“InProgress”状态,且该状态的有效期为 24
小时。在有效期24小时内,此策略对应的Bucket资源处于保护状态。
启动合规保留策略24小时内:若该策略未提交锁定,则Bucket所有者以及授权用户可以删除该策略;若该保留策略已提交锁定,则不允许删除该策略,且无法缩短策略保护周期,仅可以延长保护周期。
启动合规保留策略24小时后:若超过24小时该保留策略未提交锁定,则该策略自动失效。
Bucket内的数据处于被保护状态时,若您尝试删除或修改这些数据,MOS API将返回409 FileImmutable的错误信息。
删除规则
基于时间的合规保留策略是Bucket的一种Metadata属性。当删除某个Bucket时,该Bucket对应的合规保留策略以及访问策略也会被删除。因此当Bucket为空时,Bucket的所有者可以删除该Bucket,从而间接删除该Bucket的保留策略。
启动保留策略24小时内,若该保留策略未提交锁定,则Bucket所有者以及授权用户可以删除该策略。
若Bucket内有文件处于保护周期内,那么您将无法删除保留策略,同时也无法删除Bucket。
合规保留策略的优势
合规保留策略可提供数据合规存储,数据在合规保留策略保护周期内,任何用户都不能删除和修改。而通过RAM policy和Bucket
Policy保护的数据,则存在被修改和删除可能。
什么情况下需要配置合规保留策略
您需要长期存储且不允许修改或删除的重要数据,如医疗档案、技术文件、合同文书等,可以存放在指定的Bucket内,并通过开启合规保留策略保护您的重要数据。
是否支持针对Object设置合规保留策略
目前仅支持针对Bucket设置保留策略,不支持针对目录以及单个对象设置合规保留策略。
如何删除已开启合规保留策略的Bucket
若该Bucket内未存储文件,可以直接删除该Bucket。
若该Bucket内已存储文件,且所有文件均已过了保护期,删除该Bucket会提示失败。此时,您可以先删除该Bucket内所有文件,再删除Bucket。
若该Bucket内已存储文件,且还有文件处于保护期内,无法删除该Bucket。
如果MOS欠费,但仍有文件处于合规保留策略的保护期内,这些文件会被保留么
在未付款的情况下,摩杜云会根据您签署的合同条款和条件,应用对应的数据保留策略。
授权的子账号是否可以设置合规保留策略
合规保留策略相关API接口已全部对外开放,并且相关API操作已支持接入RAM policy。通过RAM
Policy授权的子账号可以通过控制台、API、SDK等方式创建、删除合规保留策略。
当您的 MOS Bucket 遭受攻击或通过 Bucket 分享违法内容,MOS 会自动将 Bucket 切入沙箱。沙箱中的 Bucket
仍可以正常响应请求,但服务质量将被降级,您的应用可能会有明显感知。
对于被攻击的 Bucket,MOS 会将其切入沙箱。若您的 Bucket 遭受攻击,您需要自行承担因攻击而产生的全额费用。
若您的用户通过您的 Bucket 分享涉黄、涉政、涉恐等违法内容,也会导致您的 Bucket 被切入沙箱。情节严重者,将被追究法律责任。
为防止您的 Bucket 因攻击原因被切入沙箱,您可使用高防 IP 来抵御 DDoS 攻击和 CC 攻击。如果您的业务有可能遭受攻击,可以按照如下两种方案添加预防措施。
方案一:绑定域名并配置高防 IP
i.MOS 绑定自定义域名,配置步骤请参考绑定自定义域名。
ii.根据业务情况,购买合适的高防 IP。
iii.将高防 IP 绑定到您已设置好的自定义域名上。
防护网站:填写您绑定的 MOS 自定义域名。
协议类型:按照您的实际访问方式选择。
源站IP/域名:选择源站域名,并填写您 MOS 的默认访问域名。
其他步骤及参数填写,请参考文档设置高防 IP。
方案二:配置 MCS 反向代理并配置高防 IP 基于安全考虑,Bucket 默认域名解析的 IP 是随机变化的,若您期望使用固定 IP 方式访问,推荐使用 MCS 搭建反向代理的方式进行访问 MOS。MCS 上的 EIP 可以绑定高防 IP 以抵御 DDoS 攻击和 CC 攻击。具体可以按照如下方式进行配置:
i.创建一个 CentOS 或 Ubuntu 的 MCS 实例,详情请参考创建 MCS 实例。
说明 若 Bucket 有很大的网络流量或访问请求,请提高 MCS 硬件配置或者搭建 MCS 集群。
ii.配置 MCS 反向代理方式访问 MOS,详细配置可参考配置 MOS 反向代理。
iii.根据业务情况,购买合适的高防 IP。
iv.参考方案一的步骤3。其中, 防护网站填写您 MCS 绑定的域名,源站 IP/域名填写 MCS 的外网 IP。
方案优劣势分析
方案名称 | 优势 | 劣势 |
---|---|---|
方案一:绑定域名并配置高防 IP | 配置简单:支持控制台图形化设置。 | 应用场景有局限性:只能对未进入沙箱的 Bucket 提供防护。 |
方案2:配置 MCS 反向代理并配置高防 IP |
解决方案具有通用性:能够为已进入沙箱和未进入沙箱的 Bucket 提供防护。
适合通过固定 IP 访问 MOS 的场景。 |
配置复杂:需要用户自定搭建 Nginx 反向代理。
成本高:需要额外购买 MCS 搭建反向代理。 |
为防止您的 Bucket 因分享涉黄、涉政、涉恐等违法内容被切入沙箱,建议您开通内容安全服务。摩杜云内容安全服务将定期针对您选中的 Bucket
进行检测,有效降低涉黄、涉政、涉恐的风险。
使用内容安全服务检测 Bucket 内违规内容的详细步骤请参考开通 MOS 违规检测。
针对已经进入沙箱的 Bucket,摩杜云不提供迁出服务。若您的 Bucket 被切入沙箱,请按照以下操作执行。
因攻击原因导致Bucket被切入沙箱
针对已经进入沙箱的 Bucket,请按照方案二配置安全防护措施。
说明 请在 Bucket 所在的 Region 搭建 MCS,并且 proxy_pass 填写 Bucket 内网域名地址。
若您的账号下的 Bucket 曾多次遭受攻击。那么,您后续新建的 Bucket 默认也会进入沙箱。此时,针对新建 Bucket 的安全访问措施如下:
a.购买高防 IP。
b.通过工单系统提交“新建 Bucket 默认不进入沙箱申请”。
c.申请通过后,参照方案一进行配置。
因发布违法内容导致 Bucket 被切入沙箱
针对已经入沙箱的 Bucket,请按照如下操作执行:
a.按照开通 MOS 违规检测步骤开通内容安全服务,定期检测您的 Bucket,保证不再发布违规内容。
b.请按照方案二配置 MCS 反向代理,通过代理服务器进行访问。
说明 请在 Bucket 所在的 Region 搭建 MCS,并且 proxy_pass 填写 Bucket 内网域名地址。
若您多个 Bucket 同时发布违法内容,或单个 Bucket 多次发布违法内容。那么,您后续新建的 Bucket 默认也会进入沙箱。此时,您需按如下操作执行:
a.购买内容安全产品。
b.通过工单系统提交“新建 Bucket 默认不进入沙箱申请”。
c.申请通过后,配置内容安全检测,定期检测您新建的 Bucket。
MOS高防是MOS结合DDoS高防推出的DDoS攻击代理防护服务。当受保护的存储空间(Bucket)遭受大 流量攻击时,MOS高防会将攻击流量牵引至高防集群进行清洗,并将正常访问流量回源到目标Bucket,确保业务的正常进行。
说明 MOS高防已在华东1(杭州)、华东2(上海)、华北1(青岛)、 华北2(北京)、华南1(深圳)地域公测,请联系技术支持申请试用。
DDoS攻击是近年来对企业业务危害最大的攻击手段之一。当企业遭受DDoS攻击时,可能会导致业务中断,进而导致企业的形象受损、客户流失、收益受损等,严重影响企业业务的正常运营。
为此,MOS深度结合DDoS高防产品,提供最高T级DDoS防护能力、百万QPS防护、秒级攻击切换能力,可有效抵御SYN Flood、ACK Flood、ICMP
Flood、UDP
Flood、NTP Flood 、SSDP Flood、DNS Flood、HTTP
Flood等攻击。非常适用于业务经常遭恶意攻击、勒索、刷单、刷流量等安全防护场景。
MOS高防的防护原理如下图所示:
MOS默认使用DDoS原生防护保护您的Bucket。但是,当攻击频率超出DDoS原生防护的防御阈值时,原生防护将无法提供有效防护,可能会出现Bucket访问异常的情况。
您开通了MOS高防后,当攻击频率超出DDoS原生防护的防御阈值时,MOS会自动将受攻击Bucket的所有访问流量牵引至高防集群。恶意攻击流量将在高防流量清洗中心进行清洗过滤,正常访问流量通过端口协议转发的方式返回给目标Bucket,保证Bucket在受攻击时的稳定访问。
当攻击结束后,受攻击Bucket会切回至DDoS原生防护进行保护。
高防MOS实例创建后需至少使用7天,若实例在7天内被删除,MOS会收取剩余时间的高防基础资源费用。
每个地域可以创建一个高防MOS实例,每个实例最多只能绑定同一地域下的10个Bucket。
您只需在MOS管理控制台进行简单的配置即可开启Bucket的高防保护。具体配置方式,请参见配置MOS高防。
MOS敏感数据保护是一款识别、分类、分级和保护存储空间 (Bucket)中敏感数据的原生服务,可满足数据安全、个人信息保护等相关法规的合规要求。
敏感数据主要包括个人隐私信息、密码、密钥、敏感图片等高价值数据,这些数据通常会以不同的格式存储在您的MOS
Bucket中。企业拥有大量数据,但无法准确获知这些数据中是否包含敏感信息,以及敏感数据所在的位置。
MOS的敏感数据保护能从海量数据中快速发现和定位敏感数据,精准区分敏感数据与非敏感数据。通过内置算法规则和敏感数据识别规则,对MOS存储的海量数据进行扫描、分类和分级。您可以根据扫描结果做进一步的安全防护,例如通过加密、设置访问权限等方式对数据进行安全审计或保护,从而满足数据安全、个人信息保护等相关法规的合规要求。
使用敏感数据保护功能时,有如下注意事项:
权限说明
RAM用户要扫描指定Bucket中包含的敏感数据时,需授予MOS:SddpCreateDataLimit权限。
RAM用户要查看单个Bucket扫描结果时,需授予MOS:SddpDescribeBucketInstances权限。
RAM用户要查看所有Bucket扫描结果时,需授予MOS:SddpDescribeAllBucketInstances权限。
支持地域
当前仅支持在华东1(杭州)、华东2(上海)、华北2(北京)、华南1(深圳)、华北3(张家口)、华北5(呼和浩特)以及中国(香港)地域开启敏感数据保护。
计费说明
在MOS数据初次接入扫描时,敏感数据识别对已授权的数据源执行全量扫描并收取全量扫描费用。初次扫描任务完成后,敏感数据识别仅对该数据源中新增或修改的文件收取扫描费用。扫描费用=扫描数据量(GB)×每GB单价(0.20元)。
等级 | 数据分类 |
---|---|
S1:低敏感 |
企业敏感信息:统一社会信用代码、组织机构代码、营业执照号码
个人敏感信息:SSN、SwiftCode、未校验的身份证号 位置敏感信息:城市(中国内地)、省份(中国内地) 通用敏感信息:日期 |
S2:中敏感 |
企业敏感信息:税务登记证号码
个人敏感信息:车辆识别代码、宗教、姓名(英文)、姓名(简体中文)、姓名(繁体中文)、军官证、电话号码(中国内地)、车牌号(中国内地) 密钥敏感信息:密码、AccessKeyId 设备敏感信息:URL链接、MEID、IMEI、IPv6地址、JDBC连接串、MAC地址、IP地址 位置敏感信息:地址(中国内地) |
S3:高敏感 |
个人敏感信息:电话号码(美国)、信用卡、身份证(新加坡)、身份证(马来西亚)、身份证(中国香港)、港澳通行证、护照号(中国内地)、邮箱、手机号(中国内地)、银行卡、身份证(中国内地)
密钥敏感信息:PEM证书、KEY私钥、AccessKey Secret 位置敏感信息:GPS位置 设备敏感信息:Linux-Passwd文件、Linux-Shadow文件 敏感图片信息:身份证图片(中国内地)、护照图片(中国内地) |
N/A:未知风险等级 | 未识别风险信息 |
您只需在MOS管理控制台进行简单的配置即可开启Bucket的敏感数据保护。具体操作,请参见开启敏感数据保护。
访问对象存储MOS的过程中会产生大量的访问日志,您可以通过日志转存功能将这些日志按照固定命名规则, 以小时为单位生成日志文件写入您指定的Bucket。对于已存储的日志,您可以通过摩杜云日志服务或搭建Spark集群等方式进行分析。
说明
日志转存相关API接口请参见:
设置日志转存功能:PutBucketLogging
关闭日志转存功能:DeleteBucketLogging
查看日志转存配置:GetBucketLogging
转存后的日志文件命名规则如下:
< TargetPrefix>< SourceBucket>YYYY-mm-DD-HH-MM-SS-UniqueString
字段 | 说明 |
---|---|
TargetPrefix | 日志文件的文件名前缀。 |
SourceBucket | 产生访问日志的源Bucket名称。 |
YYYY-mm-DD-HH-MM-SS | 日志文件被创建的时间。从左到右分别表示:年、月、日、小时、分钟和秒。 |
UniqueString | 系统生成的字符串,是日志文件的唯一标识。 |
日志格式
MOS的访问日志包含请求者和被访问资源的相关信息,格式如下:
RemoteIP Reserved Reserved Time "RequestURL" HTTPStatus SentBytes RequestTime "Referer" "UserAgent" "HostName" "RequestID" "LoggingFlag" "RequestermoduyunID" "Operation" "BucketName" "ObjectName" ObjectSize ServerCostTime "ErrorCode RequestLength "UserID" DeltaDataSize "SyncRequest" "StorageClass" "TargetStorageClass" "TransmissionAccelerationAccessPoint" "AccessKeyID"
字段 | 示例值 | 说明 |
---|---|---|
RemoteIP | 192.168.0.1 | 请求者的IP地址。 |
Reserved | - | 保留字段,固定值为-。 |
Reserved | - | 保留字段,固定值为-。 |
Time | 03/Jan/2021:14:59:49 +0800 | MOS收到请求的时间。 |
RequestURL | GET /example.jpg HTTP/1.0 | 包含query string的请求URL。 MOS会忽略以x-开头的query string参数,但这个参 数会被记录在访问日志中。所以您可以使用x-开头query string参数标记一个请求,然后使用这个标记快速查找该请求对应的日志。 |
HTTPStatus | 200 | MOS返回的HTTP状态码。 |
SentBytes | 999131 | 请求产生的下行流量。单位:Byte。 |
RequestTime | 127 | 完成本次请求耗费的时间。单位:ms。 |
Referer | https://www.moduyun.com/product/MOS | 请求的HTTP Referer。 |
UserAgent | curl/7.15.5 | HTTP的User-Agent头。 |
HostName | examplebucket.MOS-cn-hangzhou.moduyuncs.com | 请求访问的目标域名。 |
RequestID | 5FF16B65F05BC932307A3C3C | 请求的Request ID。 |
LoggingFlag | true |
是否已开启日志转存。取值如下:
true表示已开启日志转存。 false表示未开启日志转存。 |
RequestermoduyunID | 16571836914537**** | 请求者的用户ID。取值-表示匿名访问。 |
Operation | GetObject | 请求类型。 |
BucketName | examplebucket | 请求的目标Bucket名称。 |
ObjectName | example.jpg | 请求的目标Object名称。 |
ObjectSize | 999131 | 目标Object大小。单位:Byte。 |
ServerCostTime | 88 | MOS处理本次请求所花的时间。单位:毫秒。 |
ErrorCode | - | MOS返回的错误码。取值-表示未返回错误码。 |
RequestLength | 302 | 请求的长度。单位:Byte。 |
UserID | 16571836914537**** | Bucket拥有者ID。 |
DeltaDataSize | - | Bucket大小的变化量。取值-表示此次请求不涉及Object的写入操作。 |
SyncRequest | cdn |
请求是否为CDN回源请求。取值如下:
cdn表示请求是CDN回源请求。 -表示请求不是CDN回源请求。 |
StorageClass | Standard |
目标Object的存储类型。取值如下:
Standard表示标准存储。 IA表示低频访问存储。 Archive表示归档存储。 Cold Archive表示冷归档存储。 -表示未获取Object存储类型。 |
TargetStorageClass | - |
是否通过生命周期规则或CopyObject转换了Object的存储类型。取值如下:
Standard表示转换为标准存储。 IA表示转换为低频访问存储。 Archive表示转换为归档存储。 Cold Archive表示转换为冷归档存储。 -表示请求不涉及Object存储类型转换操作。 |
TransmissionAccelerationAccessPoint | - |
通过传输加速域名访问目标Bucket时使用的传输加速接入点。例如请求者通过华东1(杭州)的接入点访问目标Bucket时,值为cn-hangzhou。
取值-表示未使用传输加速域名或传输加速接入点与目标Bucket所在地域相同。 |
AccessKeyID | LTAI4FrfJPUSoKm4JHb5**** | 请求者的AccessKey ID。取值-表示匿名请求。 |
日志示例
192.168.0.1 - - [03/Jan/2021:14:59:49 +0800] "GET /example.jpg HTTP/1.0" 200 999131 127 "https://www.moduyun.com/product/MOS" "curl/7.15.5" "examplebucket.MOS-cn-hangzhou.moduyuncs.com" "5FF16B65F05BC932307A3C3C" "true" "16571836914537****" "GetObject" "examplebucket" "example.jpg" 999131 88 "-" 302 "16571836914537****" - "cdn" "standard" "-" "-" "LTAI4FrfJPUSoKm4JHb5****"
生成日志的源Bucket和存储日志的目标Bucket可以相同也可以不同,但是必须属于同一账号下的相同地域。
日志文件以小时为单位生成,但并不表示某个时段的日志文件记录了该时段的所有请求,部分请求可能会出现在上一时段或下一时段的日志文件中。
在您关闭日志转存功能前,MOS的日志文件会一直生成。请及时清理不再需要的日志文件,以减少您的存储费用。
您可以通过生命周期规则定期删除日志文件。更多信息,请参见生命周期规则介绍。
MOS会根据需求在日志的尾部添加一些字段,请您在开发日志处理工具时考虑兼容性的问题。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用。 |
命令行工具MOSutil | 命令行工具,性能好。 |
Java SDK
Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各语言SDK demo。 |
中断的请求能否在MOS访问日志中查询?
MOS访问日志目前不会记录中断的请求。若您是通过SDK发起的请求,可以根据SDK的返回值判断请求中断的原因。
用户在访问对象存储 MOS 的过程中,会产生大量的访问 日志。实时日志查询功能将 MOS 与日志服务 SLS 相结合, 允许您在 MOS 控制台直接查询 MOS 访问日志, 帮助您完成 MOS 访问的操作审计、访问统计、异常事 件回溯和问题定位等工作,提升您的工作效率并更好地帮助您基于数据进行决策。
实时日志查询:
3分钟内将日志实时推送到日志服务实例中,您可在 MOS 控制台直接查看实时日志。
提供日志分析服务,定制了常用的分析报表,数据查询更方便。
可实时查询和分析原始日志并可按 Bucket、Object 名称、API 操作、时间等条件过滤日志。
访问日志存储:
开启日志存储功能后,MOS 自动将访问这个 Bucket 的请求日志以小时为单位,按照固定的命名规则,生成一个 Object 写入您指定的
Bucket(目标Bucket,Target
Bucket)。
使用摩杜云 DataLakeAnalytics 或搭建 Spark 集群等方式进行分析。
可配置目标 Bucket 的生命周期管理规则,将这些日志文件转成归档存储,长期归档保存。
控制台:开启实时日志查询
MOS 实时日志查询功能,提供了以下三种查询方式:
原始日志实时查询
用户对原始日志,指定时间段和查询语句进行实时查询,轻松实现如下功能:
可快速分析某一个字段(如某个 API 操作)在一段时间内的分布情况。
按字段过滤出需要分析的记录:例如,按 Bucket、Object 名称、API 名称等过滤出近一天的文件删除操作,并可查询删除操作的时间和访问IP。
统计 MOS 访问记录:例如统计一段时间内,某个 Bucket 的 PV、UV 或最高延时等。
日志报表查询
提供了4个开箱即用的报表:
访问中心:展示总体运营状况的信息,包括PV、UV、流量以及外网访问地图分布等。
审计中心:展示文件操作的统计信息,包括文件读、写、删等操作统计。
运维中心:展示针对访问日志的统计信息,包括请求数量、失败操作的分布统计。
性能中心:展示针对性能的统计信息,包括外网下载/上传性能分布、不同网络与文件大小的传输性能、文件下载差异列表等信息。
通过日志服务控制台查询
您可以在日志服务控制台查看 MOS 的访问日志,详情请参见 MOS 访问日志。
实时日志查询免费提供最近7天的日志查询。若您设置的日志存储时间大于7天,则超过7天的部分,由日志服务单独收费。当您在外网读写日志服务时也会产生的额外费用。
实时日志查询免费提供900GB/天的日志写入额度(如果一条访问日志为1KB,约为9亿条),超过部分由日志服务单独收费。
具体收费标准,请参见日志服务计费方式。
静态网站是指所有的网页都由静态内容构成,包括客户端执行的脚本(例如JavaScript)。 您可以通过静态网站托管功能将您的静态网站托管到MOS的存储空间(Bucket),并使用Bucket的访问域名访问这个网站。
说明 配置静态网站托管的API详细信息,请参见PutBucketWebsite。
配置静态网站托管时,您需要指定网站的默认首页和默认404页:
默认首页是您通过浏览器访问静态网站域名时,MOS返回的网站首页(相当于网站的index.html)。
您为默认首页指定的文件必须是Bucket根目录下允许被匿名访问的文件,文件格式仅支持HTML。如果您还开通了子目录首页,则子目录下也应存在此文件。
默认404页是您通过浏览器访问Bucket内文件出现404错误时,MOS返回的错误页面。
您为默认404页指定的文件必须是Bucket根目录下允许被匿名访问的文件,文件格式支持HTML、JPG、PNG、BMP、WebP。
配置静态网站之后,如果您使用Bucket默认域名访问静态网站时,会将静态网站以文件的形式下载到本地。如需确保访问静态网站是预览行为,您必须为Bucket绑定自定义域名,并通过自定义域名访问您的静态网站。绑定自定义域名步骤,请参见绑定自定义域名。
例如某Bucket的文件结构如下:
Bucket
├── index.html
├── error.html
├── example.txt
└── subdir/
└── index.html
如果该Bucket绑定了自定义域名example.com,且配置的静态网站默认首页为index.html,默认404页为error.html。则通过自定义域名访问静态网站时,根据是否开通了子目录首页,访问规则如下:
未开通子目录首页
当您访问https://example.com/和https://example.com/subdir/时,MOS会返回https://example.com/index.html。
当您访问https://example.com/example.txt时,正常获取example.txt文件。
当您访问https://example.com/object时,因object不存在,MOS会返回https://example.com/error.html。
已开通子目录首页
当您访问https://example.com/时,MOS会返回https://example.com/index.html。
当您访问https://example.com/subdir/时,MOS会返回https://example.com/subdir/index.html。
当您访问https://example.com/example.txt时,正常获取example.txt文件。
当您访问https://example.com/object时,因object不存在,MOS会根据您设置的文件404规则返回对应信息:
如果文件404规则设置为Redirect(默认值),MOS会继续检查object/index.html是否存在。如果文件存在则返回302,并将访问请求重定向为https://example.com/object/index.html;如果文件不存在则返回404,并继续检查https://example.com/error.html。
如果文件404规则设置为NoSuchKey,则直接返回404,并继续检查https://example.com/error.html。
如果文件404规则设置为Index,MOS会继续检查object/index.html是否存在。如果文件存在则返回200,并直接返回文件内容。如果文件不存在,则继续检查https://example.com/error.html。
操作方式 | 说明 |
---|---|
控制台 | Web应用程序,直观易用 |
Java SDK
Python SDK PHP SDK Go SDK C SDK .NET SDK Node.js SDK Ruby SDK |
丰富、完整的各类语言SDK demo |
您可以通过存储空间(Bucket)托管静态网站,并让访问者通过B ucket绑定的自定义域名(例如example.com)访问您的网站。具体操作,请参见教程示例:使用自定义域名设置静态网站托管
您可以通过存储空间(Bucket)托管静态网站,并让访问者通过Bucket绑定的自定义域名 (例如example.com)访问您的网站。无论您是想在MOS上托管已有静态网站还是从零开始建站,都可以从此教程中获得帮助。
搭建静态网站前,您需要为网站准备一个域名。建议您使用摩杜云域名服务快速注册一个属于您的域名。详细步骤,请参见注册通用域名。
本示例使用example.com作为测试域名。
说明 若您注册的域名需绑定在中国内地的Bucket上,您还需在中国工信部备案域名。详细步骤,请参见备案。
您需要创建一个公共读的Bucket,用以设置静态网站托管及存放网站数据。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击创建Bucket。
3.在创建Bucket面板配置Bucket参数,其中:
参数 | 说明 |
---|---|
Bucket名称 | 设置Bucket名称。本示例设置为examplebucket。 |
地域 | 选择Bucket所在地域。本示例选择华东1(杭州)。 |
存储类型 | 选择标准存储。 |
读写权限 | 选择公共读。 |
其他参数保持默认配置。更多信息,请参见创建存储空间。
您需要创建静态网站首页和404错误页面的网页文件,并上传至目标Bucket。
1.在本地创建两个HTML格式的文件。
默认首页
本示例使用以下内容生成静态网站的首页文件index.html。实际环境中,请根据您的需求生成首页文件内容。
< html>
< head>
< title>Hello MOS!< /title>
< meta charset="utf-8">
< /head>
< body>
< p>开始摩杜云MOS托管< /p>
< p>这是索引页面< /p>
< /body>
< /html>
默认404页
本示例使用以下内容生成静态网站的404错误页文件error.html。实际环境中,请根据您的需求生成404错误页文件的内容。
< html>
< head>
< title>Hello MOS!< /title>
< meta charset="utf-8">
< /head>
< body>
< p>这是404错误页面< /p>
< /body>
< /html>
2.将网页文件上传至目标Bucket。
i.登录MOS管理控制台。
ii.单击Bucket列表,然后单击目标Bucket。
iii.单击文件管理,然后单击上传文件。
iv.在上传文件面板的上传文件区域,单击直接上传并选中刚刚创建的两个网页文件。其他参数均保持默认配置。
1.单击基础设置 > 静态页面。
2.单击设置,将index.html设置为默认首页;将error.html设置为默认404页。
说明 若您希望访问子目录时可以跳转到子目录下index.html文件, 您可以选择开通子目录首页。详情请参见设置静态网站托管。
3.单击保存。
现在,您已有了根域名example.com和名为examp lebucket的Bucket,接下来您需要将域名绑定到Bucket,以便能够使用您的域名访问Bucket。
1.在Bucket管理页面,单击传输管理 > 域名管理。
2.单击绑定域名。
3.在域名文本框输入example.com,并打开自动添加CNAME记录开关。
4.单击确定。
您可以使用摩杜云CDN改善网站性能。CDN可以让您的网站文件(如HTML、图像和视频)缓存至全球各 地的数据中心。当访问者从您的网站请求文件时,CDN会自动将请求重定向到最近数据中心上的文件副本,提升访问者的下载速度。
1.在Bucket管理页面,单击传输管理 > 域名管理。
2.单击目标域名右侧的未配置,跳转至CDN控制台。
3.在添加域名页面配置以下参数:
参数 | 说明 |
---|---|
加速域名 | 保持默认配置。 |
资源分组 | 选择默认资源组。 |
业务类型 | 不同的业务类型有不同的流量分配,按照您存储的内容及使用情况选择合适的业务类型。本示例选择图片小文件。 |
源站信息 | 保持默认配置 |
端口 | 选择CDN服务端口。本示例选择80端口。 |
加速区域 | 选择CDN的加速区域。本示例选择仅中国内地。 |
4.单击下一步,然后单击返回域名列表。
5.记录域名生成的CNAME值example.com.w.kunlunsl.com,然后修改绑定自定义域名时增加的CNAME记录。
i.进入云解析DNS控制台。
ii.在域名解析列表中,单击目标域名右侧的解析设置。
iii.找到绑定自定义域名时自动添加的CNAME记录,单击修改。
iv.将记录值修改为example.com.w.kunlunsl.com,其他参数保持原来配置。
v.单击确认。
6.(可选)回到域名管理页签,打开目标域名右侧的CDN缓存自动刷新开关。
如果您希望针对指定操作触发CDN缓存自动刷新,可以提交工单申请开通针对指定操作触发CDN缓存自
动刷新的功能。开通后,您需要单击目标域名右侧支持的操作,然后选中指定操作类型。支持的操作类型,请参见开启CDN缓存自动刷新。
在浏览器中访问以下URL以验证网站是否正常运行:
访问静态网站首页http://example.com,配置正确时显示如下页面:
访问Bucket中不存在的文件http://example.com/example.txt,配置正确时显示如下页面:
本教程中创建的资源仅为测试环境使用,建议您在测试完成后清理资源,以免产生不必要的费用。
CDN服务绑定的域名。操作步骤,请参见停止CDN服务。
云解析服务添加的CNAME记录。操作步骤,请参见删除记录
MOS中创建的Bucket及上传的文件。操作步骤,请参见删除文件和删除存储空间。
MOS监控服务为您提供系统基本运行状态、性能以及计量等方面的监控数据指标,并且提供自定义报警服务,帮助您跟踪请求、分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。
MOS监控指标主要分为基础服务指标、性能指标和计量指标,详见MOS监控指标参考。
高实时性能够暴露可能隐藏的峰谷问题,显示出实际的波动情况,有助于分析和评估业务场景。MOS监控指标的实时性(除了计量指标) 是按照分钟粒度采集聚合的,输出延时不超过1分钟,即每分钟内的用户信息都会聚合成一个值,并在一分钟内输出,代表这一分钟的监控情况。
为了保持和计费策略的统一,计量指标的收集和展现存在一定的特殊性,说明如下:
计量指标数据是按照小时粒度输出的,即每个小时内的资源计量信息都会聚合成一个值,代表这个小时总的计量情况。
计量指标数据会有近半个小时的延时输出。
计量指标数据的数据时间是指该数据所统计时间区间的开始时间。
计量采集截止时间是当月最后一条计量数据所统计时间区间的结束时间,如果当月没有产生任何一条计量监控数据,那么计量数据采集截止时间为当月1号0点。
计量指标数据的展示都是尽最大可能推送的,准确计量请参考费用中心—使用记录。
举个例子,假设用户只使用PutObject这个请求上传数据,每分钟平均10次。那么在2018-05-10 08:00:00到2018-05-10
09:00:00这一个小时时间区间内,用户的PUT类请求数的计量数据值为600次(10*60分钟),数据时间为2018-05-10
08:00:00,这条数据将会在2018-05-10
09:30:00左右被输出。如果这条数据是从2018-05-01
00:00:00开始到现在的最后一条计量监控数据,那么当月的计量数据采集截止时间就是2018-05-10
09:00:00。如果2018年5月该用户没有产生任何的计量数据,那么计量采集截止时间为2018-05-01 00:00:00。
每个账号最多能够设置1000项报警规则。除计量指标和统计指标,其他的监控指标均可配置为报警规则加入报警监控,并且一个监控指标可以配置为多个不同的报警规则。
报警服务相关概念请参见报警服务概览。
MOS报警服务使用指南请参见使用报警服务。
MOS具体监控指标请参见监控指标参考。
监控数据保留31天,过期自动清除,如果需要离线分析监控数据或者长期下载并保存历史监控,需要使用工具或者编写代码来读取云监控数据存储,请参见OpenAPI访问监控数据。
控制台展示最近7天的数据,如果希望查询7天以上的历史数据,建议使用云监控提供的SDK进行查询,请参见OpenAPI访问监控数据。
MOS服务的相关监控指标数据可以通过云监控提供的OpenAPI访问,使用方法请参见:
云监控SDK参考
访问监控数据
监控诊断和故障排除通过详细介绍以下各个方面的内容帮助您更好的了解MOS服务的运行状态并进行自主诊断和故障排除:
服务监控
介绍如何使用监控服务持续监控MOS存储服务的运行状况和性能。
跟踪诊断
介绍如何使用MOS监控服务和logging记录功能诊断问题,以及如何关联各种日志文件中的相关信息进行跟踪诊断。
故障排除
提供常见的问题场景和故障排除方法。
MOS Bucket全局唯一,如果删掉Bucket之后再创建同名的Bucket,那么被删掉的Bucket的监控以及报警规则会作用在新的同名Bucket上。
本文介绍如何使用对象存储MOS的监控服务。
MOS监控服务处于云监控控制台中。可以通过如下两种方式进入。
登录 MOS管理控制台。
,在MOS概览页右边单击设置报警规则,进入MOS监控服务。
直接进入云监控控制台查看MOS监控服务。
MOS监控服务主页的主体由如下三部分组成。
用户概况
Bucket列表
报警规则
该页面没有自动刷新功能,可以单击右上角的刷新按钮自动更新数据信息。
单击前往对象存储MOS控制台可以直接进入MOS控制台界面。
用户概况页面从用户层级监控用户相关的信息。主要包括用户监控信息、当月计量统计和用户层级监控指标三大部分。
用户监控信息
该模块主要展示该账号所拥有的Bucket总数以及相关的报警规则情况。
单击Bucket数量的数字,链接到Bucket列表Tab页。
单击报警规则总数的数字,链接到报警规则Tab页。
单击处于报警状态的数字,链接到报警规则Tab页,并且此时该页展示的报警规则均处于告警状态。
单击已禁用规则数的数字,链接到报警规则Tab页,并且此时该页展示的报警规则均被禁用。
单击警铃图标下面的数字,链接到报警规则Tab页,并且此时该页展示的报警规则均处于告警状态。
当月计量统计
当月计量统计展示了从当月1号0点开始,到采集截止时间为止,这段时间内所使用的MOS服务的计费相关的资源信息,包括如下指标:
存储大小
公网流出流量
Put类请求数
Get类请求数
各个计量框中展示的数据根据量级自动调整单位,鼠标停留在数字上方会显示精确的数值。
用户层级监控指标
该模块主要展示具体的用户层级的监控图表,主要包括服务监控总览和请求状态详情两部分,下面会详细介绍。
图表展现提供了快速时间范围选择按钮和自定义时间框。
快速时间范围选择按钮提供1小时、6小时、12小时、1天和7天的时间范围选择,默认为1小时。
自定义时间框可以自定义起始时间和结束时间,精确到分钟级别。注意,不支持查询8天以前的数据。
图表展示还支持以下功能:
单击相关图例可以将该指标曲线隐去,如下图:
单击图形右上图标可以将图形放大展示。注意,表格不支持放大展示。
单击图形右上图标可以对该图中展示的指标项设置相关报警规则。详见报警服务使用指南。注意,表格和计量参考指标不支持报警设置。
鼠标按住图形曲线区域拖放,可以进行时间范围快速调整放大,单击恢复缩放回归到拖放之前的时间范围。
服务监控总览
服务监控总览页面主要包括下面监控指标图:
用户层级可用性/有效请求率: 包括可用性和有效请求率两项指标。
用户层级总请求数/有效请求数: 包括总请求数和有效请求数两项指标。
用户层级流量: 包括公网流出流量、公网流入流量、内网流出流量、内网流入流量、CDN流出流量、CDN流入流量、跨区域复制流出流量和跨区域复制流入流量八项指标。
用户层级请求状态分布: 该表格中展示选定时间范围内各个请求类型的个数以及占比。
请求状态详情
请求状态详情是对请求状态分布统计的一个具体监控,主要包括下面的监控指标图:
用户层级服务端错误请求数。
用户层级服务端错误请求占比。
用户层级网络错误请求数。
用户层级网络错误请求占比。
用户层级客户端错误请求数:包括资源不存在错误请求数、授权错误请求数、客户端超时错误请求数和客户端其他错误请求数四项指标。
用户层级客户端错误请求占比:包括资源不存在错误请求占比、授权错误请求占比、客户端超时错误请求占比和客户端其他错误请求占比四项指标。
用户层级有效请求数: 包括成功请求数和重定向请求数两项指标。
用户层级有效请求占比: 包括成功请求占比和重定向请求占比两项指标。
Bucket列表信息
列表展现该账号所拥有的Bucket的名称、所属地域、创建时间、当月计量数据统计信息以及相关操作。
当月计量统计包括每个Bucket的存储量、公网流出流量、Put类请求数和Get类请求数。
单击监控图表或者对应的Bucket名称,能够进入具体的Bucket监控视图页。
单击报警规则,进入报警规则Tab页,并且展现所有属于该Bucket的报警规则。
通过上面的搜索框能够模糊匹配快速找到具体的Bucket。
选中Bucket复选框,并单击设置报警规则可以批量设置报警规则,详见报警服务使用指南。
Bucket层级监控视图
单击Bucket列表中具体的Bucket行中的监控图表,就能进入对应的Bucket的监控视图页,如下图:
Bucket监控视图页按指标分组进行展示监控图,主要包含六个指标分组:
服务监控总览
请求状态详情
计量参考
平均延时
最大延时
成功请求操作分类
除了计量参考,所有的指标项都是分钟级别聚合展示的。不同于用户层级默认时间展现为最近1小时,Bucket层级的监控展示默认为6小时。单击上方的返回Bucket列表能够回到Bucket列表Tab页。
服务监控总览
该指标分组同用户层级的服务监控总览,只是从具体的Bucket进行监控,主要包括下面监控指标图:
可用性/有效请求率: 包括可用性和有效请求率两项指标。
总请求数/有效请求数: 包括总请求数和有效请求数两项指标。
流量: 包括公网流出流量、公网流入流量、内网流出流量、内网流入流量、cdn流出流量、cdn流入流量、跨区域复制流出流量和跨区域复制流入流量八项指标。
请求状态分布: 该表格中展示选定时间范围内各个请求类型的个数以及占比。
请求状态详情
该指标分组同用户层级的请求状态详情,只是从具体的Bucket进行监控,主要包括下面监控指标图:
服务端错误请求数
服务端错误请求占比
网络错误请求数
网络错误请求占比
客户端错误请求数: 包括资源不存在错误请求数、授权错误请求数、客户端超时错误请求数和客户端其他错误请求数四项指标。
客户端错误请求占比: 包括资源不存在错误请求占比、授权错误请求占比、客户端超时错误请求占比和客户端其他错误请求占比四项指标。
有效请求数: 包括成功请求数和重定向请求数两项指标。
有效请求占比: 包括成功请求占比和重定向请求占比两项指标。
计量参考
计量参考分组展示各个计量相关的指标信息,以小时粒度收集展现,如下图所示:
包含以下计量指标监控图:
存储大小
公网流出流量
计费请求数:包括Get类请求数和Put类请求数两项指标项。
如果新建Bucket,需要到当前时间点的下一个整小时点才会采集到新数据,然后在半个小时内展示出来。
平均延时
该分组包含分API类型监控的各项平均延时指标,包含如下几个指标图:
GetObject请求平均延时
HeadObject请求平均延时
PutObject请求平均延时
PostObject请求平均延时
AppendObject请求平均延时
UploadPart请求平均延时
UploadPartCopy请求平均延时
每个指标图中都包含对应的平均E2E延时和平均服务器延时,如下图所示:
最大延时
该分组包含分API类型监控的各项最大延时指标,包含如下几个指标图:
GetObject请求最大延时
HeadObject请求最大延时
PutObject请求最大延时
PostObject请求最大延时
AppendObject请求最大延时
UploadPart请求最大延时
UploadPartCopy请求最大延时
每个指标图中都包含对应的最大E2E延时和最大服务器延时,如下图所示:
成功请求操作分类
该分组包含分API类型监控的各项成功请求数指标,包含如下几个指标图:
GetObject成功请求
HeadObject成功请求
PutObject成功请求
PostObject成功请求
AppendObject成功请求
UploadPart成功请求
UploadPartCopy成功请求
DeleteObject成功请求
DeleteObjects成功请求
报警规则Tab页能够展示和管理报警规则,如下图所示:
报警规则页的使用和相关说明请参见使用报警服务。
监控关注点以及使用指南请参见监视诊断和故障排除。
本文主要介绍MOS监控服务控制台中报警规则的概览及配置方法。
在介绍MOS监控服务控制台之前,请先阅读云监控提供的监控服务文档,了解基本概念并进行报警联系人和报警联系组的配置。
报警服务概览
报警联系人和联系组
因为MOS的报警规则是根据MOS监控项设置的,所以类似于MOS监控项的维度分类,将其分成两个报警维度:用户层级和Bucket层级。
报警规则页是MOS监控报警相关的规则管理页面, 您可以查看、修改、启用、禁用和删除对应的报警规则,而且能够查看该报警规则对应的历史报警情况。
单击对应报警规则的查看,可以查看该报警规则的内容。
单击对应报警规则的修改,就可以对该报警规则进行修改。
单击对应报警规则的删除,就可以删除该报警规则。选中多条报警规则,然后单击表格最下方的删除按钮,可以批量删除报警规则。
如果报警规则处于已启用状态,单击该报警规则的禁用,可以禁用该报警规则,报警规则失效,用户不能再收到对应的告警信息。选中多条报警规则,然后单击表格最下方的禁用按钮,可以批量禁用报警规则。
如果报警规则处于已禁用状态,单击该报警规则的启用,可以启用该报警规则,报警规则重新生效,能检测并发出对应的告警信息。选中多条报警规则,然后单击表格最下方的启用按钮,可以批量启用报警规则。
单击对应报警规则的报警历史,可以查看该报警规则历史发生的所有的告警情况。
相关概念:
报警历史指的是该报警规则的状态变化历史,例如从正常变成告警状态,是一个状态变化;从告警变成正常也是状态变化;还有一个特殊的状态变化:通道沉默。
当通知对象为通道沉默时,表示该报警规则触发告警之后的指定时间内一直满足报警触发状态(即一直在告警,没有恢复到正常状态)。此时,系统不向通知对象发送告警信息,直到通道沉默时间结束,才会有新的报警信息发送到通知对象。
报警历史信息能够保存一个月,即一个月之前的告警信息会被自动清理。查询时一次最多只能查询3天的数据,但不支持查询31天前的数据。
单击具体报警规则的通知对象后的查看,可以显示该通知对象(报警联系组)的成员以及每个成员接收告警信息的方式(短信、邮箱或者旺旺),如下图所示:
根据报警规则页中下面的控件信息能够快速定位到被搜索的报警规则。
报警维度下拉框: 全部和Bucket层级。当选项为全部时,显示所有用户层级和Bucket层级的报警规则。
Bucket下拉框:当报警维度下拉框为Bucket层级时,这里可以罗列该账号下所有的Bucket。选择对应的Bucket,可以展示属于该Bucket的所有报警规则。
监控项下拉框:罗列所有的MOS的监控项,包括用户层级和Bucket层级的监控项。当选项为全部时,显示用户层级或者Bucket层级所有监控项的报警规则。
状态下拉框:可选择显示处于指定状态的报警规则,如全部、正常状态、报警状态、数据不足、启用、禁用。选择全部时,显示所有状态的报警规则。
维度下拉框:可分维度显示报警规则,如全部用户维度、分组维度、实例维度。
1.进入创建报警规则页面,您可以通过如下方式进入:
在用户概况Tab页单击服务监控总览任意图表内的按钮。
在Bucket列表Tab页选中指定的Bucket,之后单击创建报警规则按钮。
在Bucket列表Tab页选中指定的Bucket,之后单击服务监控总览任意图表内的按钮。
2.根据需求配置报警规则。
关联资源
产品:选择对象存储MOS。
资源范围:根据您的需求选择全部资源或Bucket维度。
Bucket(针对Bucket维度):选择指定的Bucket,可一次选中多个Bucket。
设置报警规则
规则名称:自定义。
规则描述:根据需要选择监控的内容、时间及数值。
+添加报警规则:单击可添加多条规则。
通道沉默时间:报警发生后如果未恢复正常,间隔多久重复发送一次报警通知。
连续几次超过阈值后报警:即连续几次报警的探测结果符合您设置的规则描述,才会触发报警。例如:设置的规则描述为“一分钟内公网流出量大于100MBytes,连续3次超过阈值后报警”。则连续出现3次一分钟内公网流出量大于100MBytes的情况,才会触发报警。
生效时间:选择报警规则的生效时间。
通知方式
通知对象:若事先已经按照报警联系人和联系组设置好报警联系组,直接选择对应的联系人组;若没有设置过报警联系人组,则单击快创建联系人组,按照提示创建即可。
报警级别:择报警规则的通知方式,其中电话+短信+邮件+钉钉机器人需购买电话报警资源包后才可使用。
邮件主题:设置通知邮件的主题。
邮件备注(可选):设置邮件备注信息。
报警回调:填写公网可访问的URL,云监控会将报警信息通过POST请求推送到该地址,目前仅支持HTTP协议。
3.单击确认,完成报警规则的设置。
目前属于某个Bucket的报警规则存在性并没有与该Bucket的存在性 强关联,即如果删除了某个Bucket,属于这个Bucket的报警规则依然存在。建议您在删除Bucket之前先删除对应的报警规则。
MOS监控服务为您提供系统基本运行状态、性能以及计量等方面的监控数据指标,帮助您跟踪请求、 分析使用情况、统计业务趋势,及时发现以及诊断系统的相关问题。本文介绍使用云监控服务提供的API或SDK查询MOS监控数据使用的参数。
说明 云监控服务SDK示例,请参见Java SDK使用手册。
Space用于指定监控的云服务。MOS监控服务使用的Namespace为acs_MOS_dashboard。
Java SDK代码示例如下:
DescribeMetricListRequest request = new DescribeMetricListRequest();
request.setNamespace("acs_MOS_dashboard");
StartTime和EndTime用于指定查询监控数据的时间范围。云监控的时间参数取值范围采用左开右闭的形式(StartTime,
EndTime],即可以查询StartTime到EndTime之间的数据(包含EndTime的数据)。StartTime和EndTime的时间间隔不能大于31天,且无法查询31天以前的数据。
Java SDK代码示例如下:
//设置监控数据的结束时间。
request.setEndTime("2019-05-13 11:06:27");
//设置监控数据的开始时间。
request.setStartTime("2019-05-13 10:20:27");
Dimensions用于指定查询的Bucket。不指定时,表示查询用户层级数据。层级说明请参见Metric。
查询Bucket数据时Java SDK代码示例如下:
//填写待查询数据的Bucket名称。
request.setDimensions("{\"BucketName\":\"< yourBucketName>\"}");
Period用于指定指标项的查询周期。MOS监控的计量类指标查询周期为3600s,其他所有指标的查询周期均为60s。各指标项的说明,请参见Metric。
监控某个非计量类指标时,Java SDK代码示例如下:
request.setPeriod("60");
Metric用于指定查询的指标项,Java SDK代码示例如下:
//设置Metric名称。
request.setMetric("< MetricName>");
非计量类指标对应的Metric名称和层级如下表所示:
Metric | 对应指标项名称 | 单位 | 层级 |
---|---|---|---|
UserAvailability | 可用性 | % | 用户层级 |
UserRequestValidRate | 有效请求率 | % | 用户层级 |
UserTotalRequestCount | 总请求数 | 次数 | 用户层级 |
UserValidRequestCount | 有效请求数 | 次数 | 用户层级 |
UserInternetSend | 公网流出流量 | 字节 | 用户层级 |
UserInternetRecv | 公网流入流量 | 字节 | 用户层级 |
UserIntranetSend | 内网流出流量 | 字节 | 用户层级 |
UserIntranetRecv | 内网流入流量 | 字节 | 用户层级 |
UserCdnSend | CDN流出流量 | 字节 | 用户层级 |
UserCdnRecv | CDN流入流量 | 字节 | 用户层级 |
UserSyncSend | 跨区域复制流出流量 | 字节 | 用户层级 |
UserSyncRecv | 跨区域复制流入流量 | 字节 | 用户层级 |
UserServerErrorCount | 服务端错误请求总数 | 次数 | 用户层级 |
UserServerErrorRate | 服务端错误请求占比 | % | 用户层级 |
UserNetworkErrorCount | 网络错误请求总数 | 次数 | 用户层级 |
UserNetworkErrorRate | 网络错误请求占比 | % | 用户层级 |
UserAuthorizationErrorCount | 客户端授权错误请求总数 | 次数 | 用户层级 |
UserAuthorizationErrorRate | 客户端授权错误请求占比 | % | 用户层级 |
UserResourceNotFoundErrorCount | 客户端资源不存在错误请求总数 | 次数 | 用户层级 |
UserResourceNotFoundErrorRate | 客户端资源不存在错误请求占比 | % | 用户层级 |
UserClientTimeoutErrorCount | 客户端超时错误请求总数 | 次数 | 用户层级 |
UserClientOtherErrorRate | 客户端超时错误请求占比 | % | 用户层级 |
UserClientOtherErrorCount | 客户端其他错误请求总数 | 次数 | 用户层级 |
UserClientOtherErrorRate | 客户端其他错误请求占比 | % | 用户层级 |
UserSuccessCount | 成功请求总数 | 次数 | 用户层级 |
UserSuccessRate | 成功请求占比 | % | 用户层级 |
UserRedirectCount | 重定向请求总数 | 次数 | 用户层级 |
UserRedirectRate | 重定向请求占比 | % | 用户层级 |
Availability | 可用性 | % | Bucket层级 |
RequestValidRate | 有效请求率 | % | Bucket层级 |
TotalRequestCount | 总请求数 | 次数 | Bucket层级 |
ValidRequestCount | 有效请求数 | 次数 | Bucket层级 |
InternetSend | 公网流出流量 | 字节 | Bucket层级 |
InternetRecv | 公网流入流量 | 字节 | Bucket层级 |
IntranetSend | 内网流出流量 | 字节 | Bucket层级 |
IntranetRecv | 内网流入流量 | 字节 | Bucket层级 |
CdnSend | CDN流出流量 | 字节 | Bucket层级 |
CdnRecv | CDN流入流量 | 字节 | Bucket层级 |
SyncSend | 跨区域复制流出流量 | 字节 | Bucket层级 |
SyncRecv | 跨区域复制流入流量 | 字节 | Bucket层级 |
ServerErrorCount | 服务端错误请求总数 | 次数 | Bucket层级 |
ServerErrorRate | 服务端错误请求占比 | % | Bucket层级 |
NetworkErrorCount | 网络错误请求总数 | 次数 | Bucket层级 |
NetworkErrorRate | 网络错误请求占比 | % | Bucket层级 |
AuthorizationErrorCount | 客户端授权错误请求总数 | 次数 | Bucket层级 |
AuthorizationErrorRate | 客户端授权错误请求占比 | % | Bucket层级 |
ResourceNotFoundErrorCount | 客户端资源不存在错误请求总数 | 次数 | Bucket层级 |
ResourceNotFoundErrorRate | 客户端资源不存在错误请求占比 | % | Bucket层级 |
ClientTimeoutErrorCount | 客户端超时错误请求总数 | 次数 | Bucket层级 |
ClientTimeoutErrorRate | 客户端超时错误请求占比 | % | Bucket层级 |
ClientOtherErrorCount | 客户端其他错误请求总数 | 次数 | Bucket层级 |
ClientOtherErrorRate | 客户端其他错误请求占比 | % | Bucket层级 |
SuccessCount | 成功请求总数 | 次数 | Bucket层级 |
SuccessRate | 成功请求占比 | % | Bucket层级 |
RedirectCount | 重定向请求总数 | 次数 | Bucket层级 |
RedirectRate | 重定向请求占比 | % | Bucket层级 |
GetObjectE2eLatency | GetObject请求平均E2E延时 | 毫秒 | Bucket层级 |
GetObjectServerLatency | GetObject请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxGetObjectE2eLatency | GetObject请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxGetObjectServerLatency | GetObject请求最大服务器延时 | 毫秒 | Bucket层级 |
HeadObjectE2eLatency | HeadObject请求平均E2E延时 | 毫秒 | Bucket层级 |
HeadObjectServerLatency | HeadObject请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxHeadObjectE2eLatency | HeadObject请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxHeadObjectServerLatency | HeadObject请求最大服务器延时 | 毫秒 | Bucket层级 |
PutObjectE2eLatency | PutObject请求平均E2E延时 | 毫秒 | Bucket层级 |
PutObjectServerLatency | PutObject请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxPutObjectE2eLatency | PutObject请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxPutObjectServerLatency | PutObject请求最大服务器延时 | 毫秒 | Bucket层级 |
PostObjectE2eLatency | PostObject请求平均E2E延时 | 毫秒 | Bucket层级 |
PostObjectServerLatency | PostObject请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxPostObjectE2eLatency | PostObject请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxPostObjectServerLatency | PostObject请求最大服务器延时 | 毫秒 | Bucket层级 |
AppendObjectE2eLatency | AppendObject请求平均E2E延时 | 毫秒 | Bucket层级 |
AppendObjectServerLatency | AppendObject请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxAppendObjectE2eLatency | AppendObject请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxAppendObjectServerLatency | AppendObject请求最大服务器延时 | 毫秒 | Bucket层级 |
UploadPartE2eLatency | UploadPart请求平均E2E延时 | 毫秒 | Bucket层级 |
UploadPartServerLatency | UploadPart请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxUploadPartE2eLatency | UploadPart请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxUploadPartServerLatency | UploadPart请求最大服务器延时 | 毫秒 | Bucket层级 |
UploadPartCopyE2eLatency | UploadPartCopy请求平均E2E延时 | 毫秒 | Bucket层级 |
UploadPartCopyServerLatency | UploadPartCopy请求平均服务器延时 | 毫秒 | Bucket层级 |
MaxUploadPartCopyE2eLatency | UploadPartCopy请求最大E2E延时 | 毫秒 | Bucket层级 |
MaxUploadPartCopyServerLatency | UploadPartCopy请求最大服务器延时 | 毫秒 | Bucket层级 |
GetObjectCount | GetObject成功请求数 | 次数 | Bucket层级 |
HeadObjectCount | HeadObject成功请求数 | 次数 | Bucket层级 |
PutObjectCount | PutObject成功请求数 | 次数 | Bucket层级 |
PostObjectCount | PostObject成功请求数 | 次数 | Bucket层级 |
AppendObjectCount | AppendObject成功请求数 | 次数 | Bucket层级 |
UploadPartCount | UploadPart成功请求数 | 次数 | Bucket层级 |
UploadPartCopyCount | UploadPartCopy成功请求数 | 次数 | Bucket层级 |
DeleteObjectCount | DeleteObject成功请求数 | 次数 | Bucket层级 |
DeleteObjectsCount | DeleteObjects成功请求数 | 次数 | Bucket层级 |
计量类指标对应的Metric名称和层级如下表所示:
Metric | 对应指标项名称 | 单位 | 层级 |
---|---|---|---|
MeteringStorageUtilization | 存储大小 | 字节 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
MeteringGetRequest | Get类请求数 | 次数 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
MeteringPutRequest | Put类请求数 | 次数 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
MeteringInternetTX | 公网流出计量流量 | 字节 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
MeteringCdnTX | CDN流出计量流量 | 字节 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
MeteringSyncRX | 跨区域复制流入计量流量 | 字节 | 设置Dimensions时,为Bucket层级;若不设置Dimensions,则为用户层级。 |
本文列出了对象存储MOS各项监控指标。
根据用户使用场景,MOS的指标分为用户层级和Bucket(存储空间)层级。为了更好地观察监控数据以及匹配计费策略,除了一般监
控项的时间序指标外,MOS对现有的监控指标项进行统计分析,提供了一段时间内的统计指标,如请求状态分布统计和当月计量统计。
说明 除了计量指标和统计指标,所有的指标(时间序指标)都 是分钟级别的数据汇总(如求和、求最大值或者求均值等等)。而计量指标是按小时的数据进行汇总的时间序指标。
用户层级指标是指从用户的账户级别对MOS系统使用的总体情况进行监控的指标信息,是对该账户下的所有的Bucket相关监控数据的汇总。其中包括当月计量统计、服务监控总览和请求状态详情三个方面。
服务监控总览
服务监控总览指标属于基础服务指标,具体指标项详见下表。注意,下面所有的指标都是在用户层级监控的。
服务监控总览指标名称 | 单位 | 描述 |
---|---|---|
可用性 | % | 存储服务的系统可用性衡量指标。 通过公式 1 - 服务端错误请求(返回状态码为5xx)占总请求的百分比获取 |
有效请求率 | % | 有效请求占总请求数的百分比 |
总请求数 | 次数 | 被MOS服务端接收并处理的请求总数 |
有效请求数 | 次数 | 返回状态码为2xx和3xx的请求总数 |
公网流出流量 | 字节 | 通过互联网网络的下行流量 |
公网流入流量 | 字节 | 通过互联网网络的上行流量 |
内网流出流量 | 字节 | 通过服务系统内部网络的下行流量 |
内网流入流量 | 字节 | 通过服务系统内部网络的上行流量 |
cdn流出流量 | 字节 | 开通cdn加速服务之后,通过cdn产生的下行流量,即回源流量 |
cdn流入流量 | 字节 | 开通cdn加速服务之后,通过cdn产生的上行流量 |
跨区域复制流出流量 | 字节 | 开通跨区域复制功能之后,数据复制过程产生的下行流量 |
跨区域复制流入流量 | 字节 | 开通跨区域复制功能之后,数据复制过程产生的上行流量 |
除了以上具体的监控指标,还提供一段时间内的请求状态分布统计,
主要是根据返回的状态码或者MOS错误码进行分类的请求的统计信息(
被观察时间段内的请求次数总和以及占比),相关的监控指标项信息详见以下请求状态详情的介绍。
请求状态详情
请求状态详情指标是指根据请求返回状态码或者MOS错误
码进行分类的请求的监控信息,属于基础服务指标,具体指标项详见
下表。注意,下面所有的指标都是在用户层级监控的。
请求状态详情指标名称 | 单位 | 描述 |
---|---|---|
服务端错误请求总数 | 次数 | 返回状态码为5xx的系统级错误请求总数 |
服务端错误请求占比 | % | 服务端错误请求总数占总请求数的百分比 |
网络错误请求总数 | 次数 | HTTP状态码为499的请求总数 |
网络错误请求占比 | % | 网络错误请求数占总请求数的百分比 |
客户端授权错误请求总数 | 次数 | 返回状态码403的请求总数 |
客户端授权错误请求占比 | % | 授权错误请求数占总请求数的百分比 |
客户端资源不存在错误请求总数 | 次数 | 返回状态码为404的请求总数 |
客户端资源不存在错误请求占比 | % | 资源不存在错误请求数占总请求数百分比 |
客户端超时错误请求总数 | 次数 | 返回状态码为408或者返回的MOS错误码为RequestTimeout的请求总数 |
客户端超时错误请求占比 | % | 客户端超时错误请求总数占总请求数的百分比 |
客户端其他错误请求总数 | 次数 | 除了以上提到的客户端错误请求之外的其他返回状态码为4xx的请求总数 |
客户端其他错误请求占比 | % | 客户端其他错误请求数占总请求数的百分比 |
成功请求总数 | 次数 | 返回状态码为2xx的请求总数 |
成功请求占比 | % | 成功请求数占总请求数的百分比 |
重定向请求总数 | 次数 | 返回状态码为3xx的请求总数 |
重定向请求占比 | % | 重定向请求数占总请求数的百分比 |
当月计量统计
当月计量统计指标是指从当月的1号0点开始,到当月计量采集截止时间为止,这段时间内计量指标的统计数据。
目前统计的计量指标如下:
当月计量统计指标名称 | 单位 | 描述 |
---|---|---|
存储大小 | 字节 | 在计量采集截止时间前 属于该用户的所有Bucket占用的存储总大小 |
公网流出流量 | 字节 | 从本月1号0点开始累积到计量 采集截止时间为止,用户所使用的所有公网流出流量的总和。 |
Put类请求数 | 次数 | 从本月1号0点开始累积到计量采 集截止时间为止,用户所使用的所有Put类请求的总和。 |
Get类请求数 | 次数 | 从本月1号0点开始累积 到计量采集截止时间为止,用户所使用的所有Get类请求的总和。 |
Bucket层级指标是指对具体的存储空间的MOS操作情况进行监控的指标信息,具有更强的业务场景,所以除了类似从用户层面可以监控的服务监控总览和请求状态详情这些基础服务指标项和当月计量统计之外,还有计量参考、延时和成功请求操作分类等计量指标和性能指标。
服务监控总览
监控项指标含义同用户层级的服务监控总览,从具体的Bucket进行监控。
请求状态详情
监控项指标含义同用户层级的请求状态详情,从具体的Bucket进行监控。
当月计量统计
统计方式同用户层级的当月计量统计,从具体的Bucket资源使用情况进行统计。
当月计量统计指标名称 | 单位 | 描述 |
---|---|---|
存储大小 | 字节 | 在计量采集截止时间前该Bucket占用的存储大小 |
公网流出流量 | 字节 | 从本月1号0点开始累积到计量采 集截止时间为止,该Bucket的公网流出流量的总和。 |
Put类请求数 | 次数 | 从本月1号0点开始累积到计量 采集截止时间为止,该Bucket的所有Put类请求的总和。 |
Get类请求数 | 次数 | 从本月1号0点开始累积到计量 采集截止时间为止,该Bucket的所有Get类请求的总和。 |
计量参考
计量指标的时间序监控,具体如下:
当月计量统计指标名称 | 单位 | 描述 |
---|---|---|
存储大小 | 字节 | 该Bucket每小时使用的平均存储大小 |
公网流出流量 | 字节 | 该Bucket每小时的公网流出流量的总和 |
Put类请求数 | 次数 | 该Bucket每小时的Put类请求的总和 |
Get类请求数 | 次数 | 该Bucket每小时的Get类请求的总和 |
延时
请求延时是系统性能的直观反映。监控服务提供了分钟级别的平均延时和最大延时两类指标,分别反映系统平均响应能力和系统抖动情况。并且根据MOS
API请求操作类型进行分类,更细粒度地反应系统应对不同操作的性能状况。目前只对关于Bucket的操作并且涉及数据操作(不包含对meta操作)的API进行监控。
另外,延时监控指标分别从E2E和服务器两条不同的链路进行收集,便于分析性能热点以及环境问题,其中:
E2E延时是指向MOS系统发出的成功请求的端到端滞后时间,包括在MOS系统中读取请求、发送响应以及接受响应确认所需的处理时间。
服务器延时是指MOS系统成功处理请求所使用的滞后时间,不包括E2E延时中的网络滞后时间。
注意,性能相关指标都是对成功请求(返回状态码为2xx)进行的监控。
具体的监控指标项如下表:
延时指标名称 | 单位 | 描述 |
---|---|---|
GetObject请求平均E2E延时 | 毫秒 | 请求API为GetObject的成功请求的平均端到端延时 |
GetObject请求平均服务器延时 | 毫秒 | 请求API为GetObject的成功请求的平均服务器延时 |
GetObject请求最大E2E延时 | 毫秒 | 请求API为GetObject的成功请求的最大端到端延时 |
GetObject请求最大服务器延时 | 毫秒 | 请求API为GetObject的成功请求的最大服务器延时 |
HeadObject请求平均E2E延时 | 毫秒 | 请求API为HeadObject的成功请求的平均端到端延时 |
HeadObject请求平均服务器延时 | 毫秒 | 请求API为HeadObject的成功请求的平均服务器延时 |
HeadObject请求最大E2E延时 | 毫秒 | 请求API为HeadObject的成功请求的最大端到端延时 |
HeadObject请求最大服务器延时 | 毫秒 | 请求API为HeadObject的成功请求的最大服务器延时 |
PutObject请求平均E2E延时 | 毫秒 | 请求API为PutObject的成功请求的平均端到端延时 |
PutObject请求平均服务器延时 | 毫秒 | 请求API为PutObject的成功请求的平均服务器延时 |
PutObject请求最大E2E延时 | 毫秒 | 请求API为PutObject的成功请求的最大端到端延时 |
PutObject请求最大服务器延时 | 毫秒 | 请求API为PutObject的成功请求的最大服务器延时 |
PostObject请求平均E2E延时 | 毫秒 | 请求API为PostObject的成功请求的平均端到端延时 |
PostObject请求平均服务器延时 | 毫秒 | 请求API为PostObject的成功请求的平均服务器延时 |
Pot请求最大E2E延时 stObjec | 毫秒 | 请求API为PostObject的成功请求的最大端到端延时 |
PostObject请求最大服务器延时 | 毫秒 | 请求API为PostObject的成功请求的最大服务器延时 |
AppendObject请求平均E2E延时 | 毫秒 | 请求API为AppendObject的成功请求的平均端到端延时 |
AppendObject请求平均服务器延时 | 毫秒 | 请求API为AppendObject的成功请求的平均服务器延时 |
AppendObject请求最大E2E延时 | 毫秒 | 请求API为AppendObject的成功请求的最大端到端延时 |
Apect请求最大服务器延时 pendObj | 毫秒 | 请求API为AppendObject的成功请求的最大服务器延时 |
UploadPart请求平均E2E延时 | 毫秒 | 请求API为UploadPart的成功请求的平均端到端延时 |
UploadPart请求平均服务器延时 | 毫秒 | 请求API为UploadPart的成功请求的平均服务器延时 |
UploadPart请求最大E2E延时 | 毫秒 | 请求API为UploadPart的成功请求的最大端到端延时 |
UploadPart请求最大服务器延时 | 毫秒 | 请求API为UploadPart的成功请求的最大服务器延时 |
UploadPartCopy请求平均E2E延时 | 毫秒 | 请求API为UploadPartCopy的成功请求的平均端到端延时 |
UploadPartCopy请求平均服务器延时 | 毫秒 | 请求API为UploadPartCopy的成功请求的平均服务器延时 |
UploadPartCopy请求最大E2E延时 | 毫秒 | 请求API为UploadPartCopy的成功请求的最大端到端延时 |
UploadPartCopy请求最大服务器延时 | 毫秒 | 请求API为UploadPartCopy的成功请求的最大服务器延时 |
成功请求操作分类
配合延时监控,成功请求的监控一定程度上反应了系统处理访问
请求的能力。目前只监控关于Bucket的操作中涉及数据操作的API。详细的指标项如下:
成功请求操作分类指标名称 | 单位 | 描述 |
---|---|---|
GetObject成功请求数 | 次数 | 请求API为GetObject的成功请求数 |
HeadObject成功请求数 | 次数 | 请求API为HeadObject的成功请求数 |
PutObject成功请求数 | 次数 | 请求API为PutObject的成功请求数 |
PostObject成功请求数 | 次数 | 请求API为PostObject的成功请求数 |
AppendObject成功请求数 | 次数 | 请求API为AppendObject的成功请求数 |
UploadPart成功请求数 | 次数 | 请求API为UploadPart的成功请求数 |
UploadPartCopy成功请求数 | 次数 | 请求API为UploadPartCopy的成功请求数 |
DeleteObject成功请求数 | 次数 | 请求API为DeleteObject的成功请求数 |
DeleteObjects成功请求数 | 次数 | 请求API为DeleteObjects的成功请求数 |
相对于传统应用程序,开发云端应用虽然降低了用户在基础设施搭建、运维等方面的成本,但却增大了监控、诊断和故障排查的难度。MOS存储服务为您提供了丰富的监控和日志信息,帮助您深刻洞察程序行为,及时发现并快速定位问题。
本文主要描述如何使用MOS监控服务、日志记录功能以及其他第三方工具来监控、诊断和排查应用业务使用MOS存储服务时遇到的相关问题,帮助您达到如下目标:
实时监控MOS存储服务的运行状况和性能,并及时报警通知。
获取有效的方法和工具来定位问题。
根据相关问题的处理和操作指南,快速解决与MOS相关的问题。
本文包括如下内容:
服务监控:介绍如何使用MOS监控服务持续监控MOS存储服务的运行状况和性能。
跟踪诊断:介绍如何使用MOS监控服务和日志记录功能诊断问题;另外,还介绍如何关联各种日志文件中的相关信息进行跟踪诊断。
故障排除:提供常见的问题场景和故障排除方法。
监视总体运行状况
可用性和有效请求率
可用性和有效请求率是有关系统稳定性和用户是否正确使用系统的最重要指标,指标小于100%说明某些请求失败。
可能因为一些系统优化因素出现暂时性的低于100%,例如为了负载均衡而出现分区迁移,此时MOS的SDK能够提供相关的重试机制无缝处理这类间歇性的失败情况,使得业务端无感知。
对于有效请求率低于100%的情况,您需要根据自己的使用情况进行分析,可以通过请求分布统计或者请求状态详情确定错误请求的具体类型、原因,并排除故障。
对于某些业务场景,出现有效请求率低于100%是符合预期的。例如,用户需要先检查访问的Object是否存在,然后根据Object的存在性采取一定的操作,如果Object不存在,检测Object存在性的读取请求会收到404错误(资源不存在错误),导致该指标项低于100%。
对于系统可用性指标要求较高的业务,可以对其设置报警规则,当低于预期阈值时,进行报警。
总请求数和有效请求数
该指标从总访问量角度来反应系统运行状态,当有效请求数不等于总请求数时表明某些请求失败。
您可以关注总请求数或者有效请求数的波动状况,特别是突然上升或者下降的情况,需要进行跟进调查,可以通过设置报警规则进行及时通知,对于存在周期性状况的业务,可以设置为环比报警规则(环比报警方式即将上线),详见报警服务使用指南。
请求状态分布统计
当可用性或者有效请求率低于100%(或者有效请求数不等于总请求数时),可以通过查看请求状态分布统计快速确定请求的错误类型,该统计监控指标的详细介绍参见MOS监控指标参考手册。
监视请求状态详情
请求状态详情是在请求状态分布统计的基础上进一步细化请求监控状态,可以更加深入、具体地监视某类请求。
监视性能
监控服务提供了以下监控项来监控性能相关的指标:
平均延时,包括E2E平均延时和服务器平均延时
延时指标显示API操作类型处理请求所需的平均和最大时间。其中E2E延时是端到端延迟指标,除了包括处理请求所需的时间外,还包括读取请求和发送响应所需的时间以及请求在网络上传输的延时;而服务器延时只是请求在服务器端被处理的时间,不包括与客户端通信的网络延时。所以当出现E2E延时突然升高的情况下,如果服务器延时并没有很大的变化,那么可以判定是网络的不稳定因素造成的性能问题,排除MOS系统内部故障。
最大延时,包括E2E最大延时和服务器最大延时
成功请求操作分类
流量
流量指标从用户或者具体的Bucket层级的总体情况进行监控,关注公网、内网、CDN回源以及跨域复制等场景中的网络资源占用状况。
以上各个监控项(除流量)都分别从API操作类型进行分类监控,包括:
GetObject
HeadObject
PutObject
PostObject
AppendObject
UploadPart
UploadPartCopy
成功请求操作分类除了以上提到的API之外,还提供以下两个API操作类型请求数量的监控:
DeleteObject
DeleteObjects
对于性能类指标项,您需要重点关注其突发的异常变化。例如,平均延时突然出现尖峰,或者长时间处于高出正常请求延时的基线上方等。您可以通过对性能指标设置对应的报警规则,当指标低于或者超过阈值时及时通知到相关人员。
监视计量
目前,MOS监控服务只支持监控存储空间大小、公网流出流量、Put类请求数和Get类请求数(不包括跨区域复制流出流量和CDN流出流量),不支持对计量数据的报警设置和OpenAPI的读取。
MOS监控服务对Bucket层级的计量监控数据进行小时级别的粒度采集,可以在具体的Bucket监控视图中查看其持续的监控趋势图。您可以根据监控视图分析其业务的存储服务资源使用趋势并且进行成本的预估等。
MOS监控服务还提供了用户层级和Bucket层级两个不同维度的当月消费的资源数统计。即统计摩杜云账户或者某个Bucket当月消耗的MOS资源总量,每小时更新一次,帮助您了解本月资源的使用情况并计算消费。
MOS的计费项和计算方式请参见计量项和计费项。
说明 监控服务中提供的计量数据是尽最大可能推送的,可能会与实际消费账单不一致,请以费用中心的数据为准。
问题诊断
诊断性能
对于应用程序的性能判断多带有主观因素,您需要根据具体的业务场景确定满足业务需求的基准线,来判定性能问题。另外,从客户端发起的请求,能引起性能问题的因素贯穿整个请求链路。例如MOS存储服务负载过大、客户端TCP配置问题或网络基础结构中存在的流量瓶颈等。
因此诊断性能问题首先需要设置合理的基准线,然后通过监控服务提供的性能指标确定性能问题可能的根源位置,然后根据日志查到详细的信息以便进一步诊断并且排除故障。
在下文故障排除中例举了常见的性能问题和排查措施,可以参考。
诊断错误
客户端应用程序会在请求发生错误时接收到服务端返回的相关错误信息,监控服务也会记录并显示各种错误类型请求的计数和占比。您也可以通过检查服务器端日志、客户端日志和网络日志来获取相关单个请求的详细信息。通常,响应中返回的HTTP状态代码和MOS错误码以及MOS错误信息都指示请求失败的原因。
相关错误响应信息请参见 MOS错误响应。
使用日志功能
MOS存储服务为用户的请求提供服务端日志记录功能,能帮助用户记录端到端的详细请求日志跟踪。
有关如何开启并使用日志功能,请参见设置日志。
有关日志服务的命名规则以及记录格式等详细信息,请参见设置访问日志记录。
使用网络日志记录工具
在大多数情况下,通过日志服务记录的存储日志和客户端应用程序的日志数据已足以诊断问题,但在某些情况下,可能需要更详细的信息,这时需要使用网络日志记录工具捕获客户端和服务器之间的流量,可以更详细地获取客户端和服务器之间交换的数据以及底层网络状况的详细信息,帮助问题的调查。例如,在某些情况下,用户请求可能会报告一个错误,而服务器端日志中却看不到任何该请求的访问情况,这时就可以使用MOS的日志服务功能记录的日志来调查该问题的原因是否出在客户端上,或者使用网络监视工具来调查网络问题。
最常用的网络日志分析工具之一是Wireshark。该免费的协议分析器运行在数据包级别,能够查看各种网络协议的详细数据包信息,从而可以排查丢失的数据包和连接问题。
WireShark使用参见WireShark安装使用。
更详细的WireShark操作请参见WireShark用户指南。
E2E跟踪诊断
请求从客户端应用进程发起,通过网络环境,进入MOS服务端被处理,然后响应从服务端回到网络环境,被客户端接收。整个过程,是一个端到端的跟踪过程。关联客户端应用程序日志、网络跟踪日志和服务端日志,有助于排查问题的详细信息根源,发现潜在的问题。
在MOS存储服务中,提供了RequestID作为关联各处日志信息的标识符。另外,通过日志的时间戳,不仅可以迅速查找和定位日志范围,还能够了解在请求发生时间点范围内,客户端应用、网络或者服务系统发生的其他事件,有利于问题的分析和调查。
RequestID
MOS服务会为接收的每个请求分配唯一的服务器请求ID,即RequestID。在不同的日志中,RequestID位于不同的字段中:
在MOS日志功能记录的服务端日志记录中,RequestID出现在“Request ID”列中。
在网络跟踪(如WireShark捕获的数据流)中,RequestID作为x-MOS-request-id标头值出现在响应消息中。
在客户端应用中,需要客户端code实现的时候将请求的RequestID自行打印到客户端日志中。最新版本的Java
SDK已经支持打印正常请求的RequestID信息,可以通过各个API接口返回的Result结果的getRequestId这个方法获取。MOS的各个版本SDK都支持打印出异常请求的RequestID,可以通过调用MOSException的getRequestId方法获取。
时间戳
使用时间戳来查找相关日志项,需要注意客户端和服务器之间可能存在的时间偏差。在客户端上基于时间戳搜索日志功能记录的服务器端日志条目时,应加或减15分钟。
性能相关常见问题
平均E2E延时高,而平均服务端延时低
前面介绍了平均E2E延时与平均服务器延时的区别。所以产生高E2E延时、低服务器延时可能的原因有两个:
客户端应用程序响应慢
可用连接数或可用线程数有限
对于可用连接数问题,可以使用相关命令确定系统是否存在大量TIME_WAIT状态的连接。如果是,可以通过调整内核参数解决。
对于可用线程数有限,可以先查看客户端CPU、内存、网络等资源是否已经存在瓶颈,如果没有,适当调大并发线程数。
如果还不能解决问题,那么就需要通过优化客户端代码。例如,使用异步访问方式等。也可以使用性能分析功能分析客户端应用程序热点,然后具体优化。
CPU、内存或网络带宽等资源不足
对于这类问题,需要先使用相关系统的资源监控查看客户端具体的资源瓶颈在哪里,然后通过优化代码使其对资源的使用更为合理,或者扩容客户端资源(使用更多的内核或者内存)。
网络原因导致
通常,因网络导致的端到端高延迟是由暂时状况导致的。可以使用Wireshark调查临时和持久网络问题,例如数据包丢失问题。
平均E2E延时低,平均服务端延时低,但客户端请求延时高
客户端出现请求延时高的情况,最可能的原因是请求还未达到服务端就出现了延时。所以应该调查来自客户端的请求为什么未到达服务器。
对于客户端延迟发送请求,可能的客户端的原因有两个:
可用连接数或可用线程数有限
对于可用连接数问题,可以使用相关命令确定系统是否存在大量TIME_WAIT状态的连接。如果是,可以通过调整内核参数解决。
对于可用线程数有限,可以先查看客户端CPU、内存、网络等资源是否已经存在瓶颈,如果没有,适当调大并发线程数。
如果还不能解决问题,那么就需要通过优化客户端代码。例如,使用异步访问方式等。也可以使用性能分析功能分析客户端应用程序热点,然后具体优化。
客户端请求出现多次重试,如果遇到这种情况,需要根据重试信息具体调查重试的原因再解决。可以通过下面方式确定客户端是否出现重试:
检查客户端日志,详细日志记录会指示重试已发生过。以MOS的Java
SDK为例,可以搜索如下日志提示,warn或者info的级别。如果存在该日志,说明可能出现了重试。
[Server]Unable to execute HTTP request:
或者
[Client]Unable to execute HTTP request:
如果客户端的日志级别为debug,以MOS的Java SDK为例,可以搜索如下日志,如果存在,那么肯定出现过重试。
Retrying on
如果客户端没有问题,则应调查潜在的网络问题,例如数据包丢失。可以使用工具(如Wireshark )调查网络问题。
WireShark使用参见WireShark安装使用。
平均服务端延时高
对于下载或者上传出现服务端高延时的情况,可能的原因有2个:
大量客户端频繁访问同一个小Object
这种情况,可以通过查看日志功能记录的服务端日志信息来确定是否在一段时间内,某个或某组Object被频繁访问。
对于下载场景,建议用户为该Bucket开通CDN服务,利用CDN来提升性能,并且可以节约流量费用;对于上传场景,用户可以考虑在不影响业务需求的情况下,收回Object或Bucket的写访问权限。
系统内部因素
对于系统内部问题或者不能通过优化方式解决的问题,请提供客户端日志或者日志功能记录的日志信息中的RequestID,联系售后技术人员协助解决。
服务端错误问题
对于服务端错误的增加,可以分为两个场景考虑:
暂时性的增加
对于这一类问题,您需要调整客户端程序中的重试策略,采用合理的退让机制,例如指数退避。这样不仅可以有效避免因为优化或者升级等系统操作(如为了系统负载均衡进行分区迁移等)暂时导致的服务不可用问题,还可以避开业务峰值的压力。
永久性的增加
如果服务端错误持续在一个较高的水平,那么请提供客户端日志或者日志功能记录的RequestID,联系售后技术人员协助调查。
网络错误问题
网络错误是指服务端正在处理请求时,连接在非服务器端断开而来不及返回HTTP请求头的情况。此时系统会记录该请求的HTTP状态码为499。以下几种情况会导致服务器记录请求的状态码变为499:
服务器在收到读写请求处理之前,会检查连接是否可用,不可用则为499。
服务器正在处理请求时,客户端提前关闭了连接,此时请求被记录为499。
在请求过程中,客户端主动关闭请求或者客户端网络断掉都会产生网络错误。对于客户端主动关闭请求的情况,需要调查客户端中的代码,了解客户端断开与存储服务连接的原因和时间。对于客户端网络断掉的情况,用户可以使用工具(如Wireshark)调查网络连接问题。
WireShark使用参见WireShark安装使用。
客户端错误问题
客户端授权错误请求增加
当监控中的客户端授权错误请求数增加,或者客户端程序接收到大量的403请求错误,那么最常见的可能原因有以下几个:
用户访问的Bucket域名不正确
如果用户直接用三级域名或者二级域名访问,那么可能的原因就是用户的Bucket并不属于该域名所指示的region内,例如,用户创建的Bucket的地域为杭州,但是访问的域名却为Bucket.MOS-cn-shanghai.moduyuncs.com。这时需要确认Bucket的所属区域,然后更正域名信息。
如果用户开启了CDN加速服务,那么可能的原因是CDN绑定的回源域名错了,请检查CDN回源域名是否为用户Bucket的三级域名。
如果用户使用javascript客户端遇到403错误,可能的原因就是CORS(跨域资源共享)的设置问题,因为Web浏览器实施了“同源策略”的安全限制。用户需要先检查所属Bucket的CORS设置是否正确,并进行相应的更正。设置CORS参见跨域资源共享。
访问控制问题
用户使用主AK访问,那么用户需要检查是否AK设置出错,使用了无效AK。
用户使用RAM子账号访问,那么用户需要确定RAM子账号是否使用了正确的子AK,或者对应子账号的相关操作是否已经授权。
用户使用STS临时Token访问,那么用户需要确认一下这个临时Token是否已经过期。如果过期,需要重新申请。
如果Bucket或者Object设置了访问控制,这个时候需要查看用户所访问的Bucket或者Object是否支持相关的操作。
URL过期
授权第三方下载,即用户使用签名URL进行MOS资源访问,如果之前访问正常而突然遇到403错误,最大可能的原因是URL已经过期。
RAM子账号使用MOS周边工具的情况也会出现403错误。这类周边工具如MOSftp、MOSbrowser、MOS控制台客户端等,在填写相关的AK信息登入时就抛出错误,此时如果您的AK是正确填写的,那么您需要查看使用的AK是否为子账号AK,该子账号是否有GetService等操作的授权等。
客户端资源不存在错误请求增加
客户端收到404错误说明用户试图访问不存在的资源信息。当看到监控服务上资源不存在错误请求增加,那么最大可能是以下问题导致的:
用户的业务使用方式。例如用户需要先检查Object是否存在来进行下一步动作,可以调用doesObjectExist(以JAVA
SDK为例)方法,如果Object不存在,在客户端则收到false值,但是这时在服务器端实际上会产生一个404的请求信息。所以,这种业务场景下,出现404是正常的业务行为。
客户端或其他进程以前删除了该对象。这种情况可以通过搜索logging功能记录的服务端日志信息中的相关对象操作即可确认。
网络故障引起丢包重试。例如客户端发起一个删除操作删除某个Object,此时请求达到服务端,执行删除成功,但是响应在网络环境中丢包,然后客户端发起重试,第二次的删除操作可能就会遇到404错误。这种由于网络问题引起的404错误可以通过客户端日志和服务端日志确定:
查看客户端应用日志是否出现重试请求。
查看服务端日志是否对该Object有两次删除操作,前一次的删除操作HTTP Status为2xx。
有效请求率低且客户端其他错误请求数高
有效请求率为请求返回的HTTP状态码为2xx/3xx的请求数占总请求的比例。状态码为4XX和5XX范围内的请求将计为失败并降低该比例。客户端其他错误请求是指除服务端错误请求(5xx)、网络错误请求(499)、客户端授权错误请求(403)、客户端资源不存在错误请求(404)和客户端超时错误请求(408或者MOS错误码为RequestTimeout的400请求)这些错误请求之外的请求。
您可以通过查看日志功能记录的服务端日志确定这些错误的具体类型,之后根据MOS错误响应码在客户端代码中查找具体原因进行解决。详情请参见MOS错误响应。
存储容量异常增加
存储容量异常增加,如果不是上传类请求量增多,常见的原因应该是清理操作出现了问题,可以根据下面两个方面进行调查:
客户端应用使用特定的进程定期清理来释放空间。针对这种请求的调查步骤是:
查看有效请求率指标是否下降,因为失败的删除请求会导致清理操作没能按预期完成。
定位请求有效率降低的具体原因,查看具体是什么错误类型的请求导致。然后还可以结合具体的客户端日志定位更详细的错误信息(例如,用于释放空间的STS临时Token已过期)。
客户端通过设置LifeCycle来清理空间:针对这种请求,需要通过控制台或者API接口查看目前Bucket的LifeCycle是否为之前设置的预期值。如果不是,可以直接更正目前配置;进一步的调查可以通过Logging功能记录的服务端日志记录查询以前修改的具体信息。如果LifeCycle是正常的,但是却没有生效,请联系MOS系统管理员协助调查。
其他存储服务问题
如果前面的故障排除章节未包括您遇到的存储服务问题,则可以采用以下方法来诊断和排查您的问题:
查看MOS监控服务,了解与预期的基准行为相比是否存在任何更改。监控视图可能能够确定此问题是暂时的还是永久性的,并可确定此问题影响哪些存储操作。
使用监控信息来帮助您搜索日志功能记录的服务端日志数据,获取相关时间点发生的任何错误信息。此信息可能会帮助您排查和解决该问题。
如果服务器端日志中的信息不足以成功排查此问题,则可以使用客户端日志来调查客户端应用程序,或者配合使用网络工具(Wireshark等)调查您的网络问题。
本文介绍在使用摩杜云云监控产品监控 MOS 数据时遇到的一些常见问题及解决方案。
MOS 和云监控是两个独立的产品,MOS 将数据推送至云监控,由云监控产品进行分析处理。 MOS
控制台上看到的存储容量监控以及带宽流量监控来自于云监控产品的数据。
MOS 的数据推送到云监控会延迟 2-3 小时,同时云监控在接收 MOS 数据时存在窗口期,单次数据推送的时间间隔不能超过5分钟。如果MOS
推送数据超过5
分钟,那么云监控过会拒绝接收这个过期数据,同时也不支持补推。所以,不建议根据云监控的数据计算您的费用。如需核对费用,建议联系售后技术支持。
问题分析:此问题可以查看用户概况的服务监控总览内的数据,若无数据产生,就会出现数据不足的情况。
问题分析:云监控平台上查看到的数据是云监控产品节点发起探测请求获得的数据,并不代表真实用户环境。
解决方案:云监控平台监控到访问延迟较大的情况,可通过如下步骤排查:
1.确认客户端访问是否真的有延迟。
2.若用户访问对应的 Bucket 也出现延迟的情况,需通过抓包获取访问数据分析。
3.您也可以通过日志分析对应时间内的访问数据,确认是否有访问延迟的情况。
某公司因业务需求,自己搭建了一套监控系统监控 MOS 的数据,发现访问 MOS 延迟较大,可通过如下步骤排查:
1.排查公司网络是否正常,可通过 ping 其他网站的形式测试延迟。
2.在 MOS 同地域创建一个 MCS 服务器去访问 MOS 测试是否有延迟。
3.将上传延迟的 MOS requestID 发送给售后技术支持,查看出现问题时访问是否真的延迟。
4.通过抓包获取上传数据进行分析,可通过如下参数分析数据包:
tcpdump -i < 出口网卡> -s0 ( 本机出口IP and MOS域名 ) -w result.pcap
问题现象:云监控出现“对象存储 MOS (<)Bucket=p2xxx,userId=135114002(>),有效请求率(30.51
< 90% ),持续时间0分钟”的报错。
解决方案:异常请求率是通过 2xx+3xx/总体数量计算得出,您可以先查看云监控的 MOS 控制台统计的 2XX 3XX
以及其他异常状态码的占比,确认是否因异常状态码增加导致的有效请求率下降。您也可以通过开通 MOS 日志分析请求行为。
问题现象:云监控出现“对象存储MOS实例:Bucket=***-modu,userId=197*****745,资源不存在错误请求数于11:45恢复正常,值为30次,持续时间5分钟”的报错。
问题分析:这种问题就是 Bucket 资源不存在导致的报警,属于正常的响应,并非是异常状态。
问题分析:此问题是客户端在请求 MOS 数据时加载的功能配置不存在, 导致出现 404 的报错,200 的状态码是用户已经在 MOS 上配置的功能模块,并非异常现象。
问题分析:API 的监控数据都是隔天显示,例如,今天是 10 月 12 日,完整的数据还没有出来,所以不能画点,需等到 13 号才能看到 12 号的完整数据。
MOS 的数据推送到云监控会延迟 1-2 小时,同时云监控在接收 MOS 数据时存在窗口期,单次数据推送的时间间隔不能超过5分钟。如果MOS 推送数据超过5
分钟,那么云监控过会拒绝接收这个过期数据,同时也不支持补推。所以,不建议使用云监控的数据和您的账号进行对账,因为数据并不准确,您可以通过以下方式对账:
提前开启 MOS 日志,之后通过 MOS 日志的统计和账单核对。
若您不愿意核对日志,可以开启 MOS 的日志分析功能,把 MOS 的日志导入通过日志分析处理后直接查看结果。
问题分析:云监控有效请求率的计算公式是:100%-(2xx+3xx)/总请求数量。发现类似情况可查看 MOS 控制台或 MOS log 有没有异常即可。
出现这种问题是因为 MOS 将整个集群日志推送到云监控时超过了云监控的接收窗口期,而云监控不支持补推,所以导致数据为 0 。
您可以在MOS管理控制台设置事件通知规则,自定义您关注的Object。当这些Object发生指定事件时,您可以第一时间收到通知。
华南2(河源)、华南3(广州)、华北5(呼和浩特)、华北6(乌兰察布)、阿联酋(迪拜)、马来西亚(吉隆坡)地域暂不支持事件通知功能。
同一地域仅支持配置10条事件通知规则。
通过RTMP推流方式生成的TS和M3U8文件不会触发事件通知规则。有关RTMP推流的介绍,请参见LiveChannel简介。
您在创建事件通知规则后,若请求者对您MOS进行的操作触发了事件通知规则, 消息服务MNS将请求者对MOS进行的相关操作发送到您配置的HTTP服务器或MNS的队列中。具体流程如下图所示:
事件类型 | 说明 |
---|---|
PutObject | 通过简单上传创建或覆盖文件。 |
PostObject | 通过表单上传创建或覆盖文件。 |
CopyObject | 通过拷贝文件创建或覆盖文件。 |
InitiateMultipartUpload | 初始化一个分片上传任务。 |
UploadPart | 通过上传分片创建或覆盖文件。 |
UploadPartCopy | 通过分片拷贝创建或覆盖文件。 |
CompleteMultipartUpload | 完成分片上传。 |
AppendObject | 通过追加上传创建或追加文件。 |
GetObject | 通过简单下载获取文件。 |
DeleteObject | 删除单个文件。 |
DeleteObjects | 删除多个文件。 |
ObjectReplication:ObjectCreated | 通过跨区域复制生成文件。 |
ObjectReplication:ObjectRemoved | 通过跨区域复制删除文件。 |
ObjectReplication:ObjectModified | 通过跨区域复制覆盖文件。 |
ObjectCreatedGroup | 所有创建或覆盖文件操作。 |
ObjectDownloadedGroup | 所有获取文件操作。 |
ObjectRemovedGroup | 所有删除文件操作。 |
说明 ObjectCreatedGroup、ObjectDownloadedGroup、ObjectRemovedGroup三种事件类型目前 仅支持在中国(香港)、美国(硅谷)、美国(弗吉尼亚)、德国(法兰克福)、澳大利亚(悉尼)、新加坡、英国(伦敦)地域配置。
MOS的事件通知消息内容经过Base64编码,解码后是JSON格式,具体内容如下:
{"events": [
{
"eventName": "", //事件通知类型。
"eventSource": "", //设置事件通知的消息源,固定为"acs:MOS"。
"eventTime": "", //事件时间,使用ISO-8601时间表示法。
"eventVersion": "", //事件通知版本号,目前为“1.0”。
"MOS": {
"bucket": {
"arn": "", //Bucket的唯一标识符,格式为"acs:MOS:region:uid:bucketname"。
"name": "", //目标Bucket名称。
"ownerIdentity": "" //Bucket的拥有者。
},
"object": {
"deltaSize": "", //Object大小的变化量。例如,新增一个文件,这个值就是文件大小;覆盖一个文件,这个值就是新文件与旧文件的大小差值,因此可能为负数。
"eTag": "", //Object的ETag。
"key": "", //Object名称。
"position": "", //仅适用于ObjectCreated:AppendObject事件,表示此次请求开始追加的位置。首次AppendObject请求的位置从0字节开始。
"readFrom": "", //仅适用于ObjectDownloaded:GetObject事件,表示文件开始读取的位置。对于非Range请求,此项为0;对于Range请求,此项为请求的开始字节。
"readTo": "", //仅适用于ObjectDownloaded:GetObject事件,表示文件最后读取的位置。对于非Range请求,此项为文件的大小;对于Range请求,此项为Range请求的结束字节加1。
"size": "" //Object大小。
},
"MMOSchemaVersion": "", //此字段域的版本号,目前为“1.0”。
"ruleId": "GetObject", //此事件匹配的规则ID。
"region": "", //Bucket所在的地域。
"requestParameters": {
"sourceIPAddress": "" //请求的源IP地址。
},
"responseElements": {
"requestId": "" //请求对应的Request ID。
},
"userIdentity": {
"principalId": "" //请求发起者的UID。
},
"xVars": { //MOS的回调功能(Callback)中的自定义参数。
"x:callback-var1":"value1",
"x:vallback-var2":"value2"
}
}
}
]
}
消息通知示例:
{"events": [
{
"eventName": "ObjectDownloaded:GetObject",
"eventSource": "acs:MOS",
"eventTime": "2016-07-01T11:17:30.000Z",
"eventVersion": "1.0",
"MOS": {
"bucket": {
"arn": "acs:MOS:cn-shenzhen:114895646818****:event-notification-test-shenzhen",
"name": "event-notification-test-shenzhen",
"ownerIdentity": "114895646818****"},
"object": {
"deltaSize": 0,
"eTag": "0CC175B9C0F1B6468E1199E269772661",
"key": "test",
"readFrom": 0,
"readTo": 1,
"size": 1
},
"MMOSchemaVersion": "1.0",
"ruleId": "GetObjectRule",
"region": "cn-shenzhen",
"requestParameters": {
"sourceIPAddress": "198.51.100.1"
},
"responseElements": {
"requestId": "5FF16B65F05BC932307A3C3C"
},
"userIdentity": {
"principalId": "114895646818****"
},
"xVars": {
"x:callback-var1":"value1",
"x:vallback-var2":"value2"
}
}
}
]
}
您只需在MOS管理控制台进行简单的配置即可开启事件通知功能。具体配置方式,请参见设置事件通知规则。
您可以通过对象存储MOS控制台对存储空间、文件和文件夹执行相关的基础和高级操作。控制台是界面形式的Web应用程序,直观易用。
关于MOS的功能介绍和应用场景,请参见
什么是对象存储MOS
。更详细的概念、功能和原理介绍以及实现方式等信息,请参见
对象存储MOS开发指南。
本文介绍如何开通 MOS 服务。
在使用摩杜云 MOS 服务之前,请确保您已经注册了摩杜云账号 并完成实名认证。如果您还没有创建摩杜云账号,系统会在您开通 MOS 时提示您注册账号。
1.登录摩杜云官网。
2.将鼠标移至产品,单击对象存储 MOS,打开 MOS 产品详情页面。
3.在 MOS 产品详情页,单击立即开通。
4.开通服务后,在 MOS 产品详情页单击管理控制台直接进入 MOS 管理控制台界面。
您也可以单击位于官网首页右上方菜单栏的控制台,进入摩杜云管理控制台首页,然后单击左侧的对象存储 MOS 菜单进入 MOS 管理控制台界面。
说明 开通 MOS 服务后,默认的计费方式是按量付费。如果想降低 MOS 费用,建议您购买资源包。
使用摩杜云 MOS 管理控制台,您可以使用直观的界面进行相应的操作。本文介绍如何使用摩杜云账号登录 MOS 管理控制台。
在登录摩杜云 MOS 管理控制台之前,确保您已经注册了摩杜云账 号并完成实名认证。如果您还没有创建摩杜云账号,系统会在您开通 MOS 时提示您 注册账号。
1.登录摩杜云官网。
2.单击MOS产品详情页中的立即开通。
3.开通服务后,单击管理控制台直接进入 MOS 管理控制台页面。
您也可以单击位于官网首页右上方菜单栏的控制台,进入摩杜云管理控制台首页,然后单击左侧产品快捷入口导航的对象存储MOS菜单。
RAM子账号是您通过RAM控制台创建的RAM用户账号,使用RAM子账号同样可以登录MOS管理控制台。
您可以在以下场景中使用RAM子账号登录MOS控制台:
主账号的Bucket内存放了企业内部共享文件,您可以创建RAM子账号给员工,并授予相应的访问权限,员工可以使用RAM子账号登录MOS控制台查看这些共享文件。
公司有部分合作伙伴需要定期查看一些资料,您可以将资料放在指定的Bucket内,并创建RAM子账号,授予指定Bucket的访问权限,合作伙伴可以定期使用RAM子账号登录MOS控制台查看共享文件。
开发环境需要使摩杜云账号,不便使用主账号进行测试,可以创建RAM子账号用于测试。
其他使用场景。
1.使用摩杜云主账号登录RAM控制台。
2.在左侧导航栏的人员管理菜单下,单击用户。
3.单击新建用户。
说明 单击添加用户,可一次性创建多个RAM用户。
4.输入登录名称和显示名称。
5.在访问方式区域下,选择控制台密码登录或编程访问。
说明 为了保障账号安全,建议仅为RAM用户选择一种登录方式, 避免RAM用户离开组织后仍可以通过访问密钥访问摩杜云资源。
6.用户信息填写完毕后单击确定。
7.勾选目标RAM用户,单击添加权限,被授权主体会自动填入。
根据您的需求添加对应的权限。为确保 RAM 子账号登录控制台后能正常使
用MOS控制台的功能,除授予MOS相应的访问权限外,还需要MNS、CloudMonitor、CDN的访问权限,
8.单击确定。
1.使用摩杜云主账号登录RAM控制台。
2.在概览页的账号设置区域,查看您的用户登录地址。
3.单击该链接,使用RAM子账号的用户名和密码进行登录。
4.打开MOS管理控制台即可管理您的MOS。
更多信息请参见RAM用户操作手册。
MOS管理控制台是MOS为您提供的一款简单且易于上手的网页平台管理工具, 您可以在MOS管理控制台的概览页面了解您所有存储空间(Bucket)的概况, 例如Bucket数量、存储用量、流量、API请求数等。
如果您首次使用MOS,建议通过概览页面右侧的MOS新手入门,快速学习MOS基础知识。
您可以通过以下方式快速查询当前摩杜云账号下所有Bucket的资源使用量,例如存储用量、流量、API请求数等。
注意 概览页面统计的数据平均延迟1~3小时,不作为计量数据。 若您希望查询更详细的计量数据,请参见查看消费明细。
查询所有Bucket当前的存储用量
您可以在基础数据区域查询所有Bucket的存储用量,包括标准存储、低频访问、归档存储、冷归档存储和MCS快照的存储量。
低频访问、归档存储、冷归档存储类型文件有最小计量单位限制。单个文件小于64 KB,按照64 KB计算;大于或等于64
KB,按照实际大小计算。当Bucket中出现多个小于64
KB且符合上述存储类型的文件时,会出现计费容量大于原始容量的情况。关于存储类型的介绍,请参见存储类型介绍。
查询所有Bucket本月累计使用流量
您可以在基础数据区域查询所有Bucket的本月累计使用的流量,包括外网流出、流入流量和CDN回源流量。关于各类型流量的说明和计费方式,请参见流量费用。
查询所有Bucket本月累计请求次数
您可以在基础数据区域查询所有Bucket的本月累计产生的MOS
API请求次数,包括读请求和写请求。关于两种请求涉及的API接口,请参见Put类请求和Get类请求。
查询指定时段所有Bucket的存储用量
您可以在存储类型区域查询指定时段各存储类型存储量的统计折线图。选择按时段查询时,只能查询最近65天的数据。例如当前日期是12月31日,则您只能查询10月27日后的数据。
查询指定时段所有Bucket的使用流量
您可以在使用流量区域查询指定时段各类流量的统计折线图。选择按时段查询时,只能查询最近65天的数据。例如当前日期是12月31日,则您只能查询10月27日后的数据。
您可以在概览页面右侧的Bucket管理区域查询摩杜云账号下各地域或各存储类型的Bucket数量。
如果您希望获取不同地域的Bucket数量和占比情况,请单击按地域分布。
如果您希望获取不同存储类型的Bucket数量和占比情况,请单击按存储类型分布。
如果您希望将包含Bucket名称、地域、存储类型、创建时间等信息的Bucket列表导出到本地,请单击导出CSV。
您可以在常用工具区域查看和下载MOS的常用管理工具。例如支持Windows、Linux、Mac 平台的图形化管理工具MOSbrowser,以及方便易用的命令行管理工具MOSutil等。如需获取更多MOS的管理工具,请参见MOS常用工具汇总。
您可以在概览页面右侧报警规则区域设置报警规则,针对您希望监控的Bucket资 源设置监控项。当监控项的数据超过设定的阈值时,您可以第一时间收到通知。具体操作,请参见 使用报警服务。
您可以在MOS管理控制台手动或自动添加MOS资源的访问路径, 通过访问路径,您可以快速进入对应的存储空间(Bucket)或目录。
1.登录 MOS管理控制台。
2.单击我的访问路径右侧的加号(+)。
3.在添加自定义路径对话框配置以下参数:
参数 | 说明 |
---|---|
地域 | 选择目标Bucket所在地域。 |
Bucket | 填写目标Bucket名称。 |
选择已授权Bucket | 单击此项可快速选择当前账号下已授权访问的目标Bucket |
文件路径 | 填写目标文件所在目录。例如examplefolder。 |
4.单击确定。
文件路径添加之后,单击对应的路径名称,
可直接跳转到对应文件路径。单击指定路径
后的置顶可置顶该路径;单击删除可删除该路径。
1.登录 MOS管理控制台。
2.单击我的访问路径右侧的设置图标。
3.在访问路径设置对话框设置自动保存访问路径的策略。
参数 | 说明 |
---|---|
最近访问路径 | 打开开关表示会自动保存最近访问过的文件路径,关闭则不保存。 |
保留路径数 | 设置自动保存的访问路径条数,默认为10条。取值范围1条~10条。 |
4.单击确定。
配置访问路径策略后,MOS将按照您设置的保存路径数记录您最近访问的路径。
您可以在每个存储空间(Bucket)的概览页查看您对 应Bucket的使用情况,包括存储量、访问流量、访问域名、已启用的功能等。
在基础数据区域,您可以查看当前存储空间存储用量、本月流量、本月请求数、文件数量、文件碎片。
注意 基础数据的统计结果不会实时更新,平均延迟1~2小时。所有数据仅做参考,不能作为费用计算的依据。
存储用量:统计存储空间当前的存储量。可直接统计总用量(不含MCS快照),也可分别统计各存储类型的存储量,您在查看数据时选择对应的存储类型即可。
总用量(不含MCS快照):查看存储空间所有存储类型占用的存储量,不包含MCS快照的存储量。
标准存储(本地冗余)/标准存储(同城冗余):查看标准存储类型的存储量。存储空间冗余类型为本地冗余时,显示标准存储(本地冗余)用量;存储空间冗余类型为同城冗余时,显示标准存储(同城冗余)用量。详情请参见存储类型介绍。
低频访问(本地冗余)/低频访问(同城冗余):查看低频存储类型的存储量。冗余类型与标准存储一样。
原始容量:显示低频访问类型文件的实际存储量。
计费容量:显示低频访问类型文件的计费存储量。低频访问类型文件的最小存储单元为64KB,小于64KB的文件均会按64KB计算。所以,如果存储空间内小文件数量过多,会出现计费容量大于原始容量的情况。详情请参见存储类型介绍。
归档存储:查看归档存储类型文件的存储量。
原始容量:显示归档存储类型文件的实际存储量。
计费容量:显示归档存储类型文件的计费存储量。归档存储类型文件的最小存储单元为64KB,小于64KB的文件均会按64KB计算。所以,如果存储空间内小文件数量过多,会出现计费容量大于原始容量的情况。详情请参见存储类型介绍。
冷归档存储:查看冷归档存储类型文件的存储量。
原始容量:显示冷归档存储类型文件的实际存储量。
计费容量:显示冷归档存储类型文件的计费存储量。冷归档存储类型文件的最小存储单元为64KB,小于64KB的文件均会按64KB计算。所以,如果存储空间内小文件数量过多,会出现计费容量大于原始容量的情况。详情请参见存储类型介绍。
本月流量:统计存储空间本月累计使用的流量。
外网流出流量:通过互联网从MOS浏览数据,或下载数据到本地时产生的流量。
外网流入流量:通过互联网从本地上传数据到MOS时产生的流量。
CDN回源流量:通过CDN服务层浏览MOS数据,或下载MOS数据时产生的回源流量。
本月请求次数:统计本月内,调用MOS API的累计请求次数。
读请求:所有Get类请求,详情请参见读请求。
写请求:所有Put类请求,详情请参见写请求。
文件数量:统计当前存储空间内存储的文件数量。
文件碎片:统计当前存储空间内存储的文件碎片数量。文件碎片主要由分片上传和断点续传产生。已确认不再使用的文件碎片,建议删除。
在访问域名区域,您可以查看当前存储空间所在EndPoint(地域节点)及Bucket访问域名。
EndPoint(地域节点):MOS对外服务的地域域名,通常在SDK及MOS常用管理工具的配置项中会用到。
外网访问:可以通过互联网直接访问的EndPoint域名。
MCS的经典网络访问(内网)/MCS的VPC网络访问(内网):需通过VPC网络或经典网络访问的EndPoint域名,可提供给与Bucket同地域的MCS实例访问,不产生流量费用。
传输加速域名(全地域上传下载加速):通过此Endpoint访问MOS时会提高访问速度。使用此域名前,您需要开通传输加速功能,详情请参见传输加速。
说明 关于EndPoint更多信息请参见访问域名和数据中心。
Bucket域名:Bucket域名结构为BucketName.Endpoint,BucketName为您的存储空间名称,Endpoint为存储空间对应的地域域名。您可通过此域名直接访问到您的Bucket。
外网访问:可以通过互联网直接访问该域名。
MCS的经典网络访问(内网)/MCS的VPC网络访问(内网):需通过VPC网络或经典网络访问该域名,可提供给与Bucket同地域的MCS实例访问,不产生流量费用。
传输加速域名(全地域上传下载加速):通过此域名访问MOS时会提高访问速度。使用此域名前,您需要开通传输加速功能。
说明 Bucket域名详细介绍请参见MOS访问域名使用规则。
显示您Bucket的基础设置概览。鼠标移至对应功能上时,会出现对应功能的设置按钮,单击此按钮可跳转到对应功能的设置页面。
读写权限:设置Bucket的读写权限,详情请参见
读写权限ACL。
跨域访问:MOS提供在HTML5协议中跨域资源共享(CORS)的设置。CORS允许在一个域名中加载的客户端Web应用程序与另一个域中的资源进行交互。详情请参见
设置跨域资源共享。
镜像回源:通过回源设置,对于获取数据的请求以多种方式进行回源读取,满足您对于数据热迁移、特定请求重定向等需求。详情请参见
管理回源设置。
跨区域复制:跨区域复制是对不同区域的存储空间中的文件进行自动异步复制,将文件的创建、更新和删除等操作从源存储空间复制到不同区域的目标存储空间。详情请参见
跨区域复制介绍。
静态页面:通过MOS API的PutBucketWebsite接口将自己的存储空间配置成静态网站托管模式,并通过存储空间域名访问该静态网站。详情请参见
静态网站托管。
服务器端加密:MOS支持在服务器端对上传的数据进行加密(Server-Side
Encryption)。上传数据时,MOS对收到的用户数据进行加密,然后再将得到的加密数据持久化保存下来;下载数据时,MOS自动对保存的加密数据进行解密并把原始数据返回给用户,并在返回的HTTP请求Header中,声明该数据进行了服务器端加密。详情请参见服务器端加密。
防盗链:调用MOS API的PutBucketReferer接口设置Referer,用以防止他人盗用MOS数据。详情请参见
防盗链。
生命周期:通过设置生命周期规则可以自动删除过期的文件和碎片,或将到期的文件转储为低频或归档存储类型,从而节省存储费用。详情请参见
生命周期规则介绍。
日志管理:开启日志存储功能,MOS自动将访问这个Bucket的请求日志记录到指定的Bucket中,方便您查询。详情请参见
设置日志转存。
版本控制:开启Bucket的版本控制特性后,针对数据的覆盖和删除操作将会以历史版本的形式保存下来。当您在错误覆盖或者删除文件后,能够将Bucket中存储的文件恢复至任意时刻的历史版本。详情请参见
版本控制介绍。
存储空间(Bucket)是您用于存储对象(Object)的容器。在上传任何文件到MOS之前,您必须先创建存储空间。
创建Bucket本身不收取任何费用,仅收取上传至Bucket中Object的存储费用或者访问Object产生的流量费用等。更多信息,请参见
计量项和计费项。
Bucket一旦创建,则无法更改其名称及所在地域。
Bucket容量弹性扩展,您无需提前购买容量。
有关Bucket的更多信息,请参见
创建存储空间。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击创建Bucket。
您也可以单击概览,然后单击右上角创建Bucket。
3.在创建Bucket面板,按如下说明配置各项参数。
参数 | 是否必选 | 描述 |
---|---|---|
Bucket名称 | 是 |
填写Bucket名称。命名规则如下:
所选定的存储空间名称在摩杜云MOS的所有现有存储空间名称中必须具有唯一性。 只能包括小写字母、数字和短划线(-)。 必须以小写字母或者数字开头和结尾。 长度必须在3~63字节之间。 |
区域 | 是 |
Bucket的数据中心。
如需通过MCS内网访问MOS,请选择与您MCS相同的地域。更多信息,请参见 MOS访问域名使用规则。 |
存储类型 | 是 |
Bucket的存储类型。
标准存储:提供高可靠、高可用、高性能的对象存储服务,能够支持频繁的数据访问。适用于各种社交、分享类的图片、音视频应用、大型网站、大数据分析等业务场景。 低频访问:提供高持久性、较低存储成本的对象存储服务。有最低存储时间(30天)和最小计量单位(64 KB)要求。支持数据实时访问,访问数据时会产生数据取回费用,适用于较低访问频率(平均每月访问频率1到2次)的业务场景。 归档存储:提供高持久性、极低存储成本的对象存储服务。有最低存储时间(60天)和最小计量单位(64 KB)要求。数据需解冻(约1分钟)后访问,解冻会产生数据取回费用。适用于数据长期保存的业务场景,例如档案数据、医疗影像、科学资料、影视素材等。 冷归档:提供高持久性的对象存储服务,费用在四种存储类型最低。有最低存储时间(180天)和最小计量单位(64 KB)要求。数据需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用。 适用于需要超长时间存放的极冷数据,例如因合规要求需要长期留存的数据、大数据及人工智能领域长期积累 的原始数据、影视行业长期留存的媒体资源、在线教育行业的归档视频等业务场景。 说明 冷归档存储类型已在华北1(青岛)、华北2(北京)、华北3(张家口)、 华东1(杭州)、华东2(上海)、华南1(深圳)、西南1(成都)、中国香港、 澳大利亚(悉尼)、 新加坡、美国(硅谷)、德国(法兰克福)、马来西亚(吉隆坡)、印度尼西亚 (雅加达)、印度(孟买)、阿联酋(迪拜)地域公测,请联系技术支持申请试用。 有关存储类型的更多信息,请参见 存储类型介绍。 |
同城冗余存储 | 否 |
Bucket的数据容灾类型。 启用:开启后,将以同城冗余ZRS的方式存储您的MOS数据。同城冗余采用多可用区(AZ)机制, 将您的数据冗余存储在同一地域(Region)的3个可用区。可支持单个 可用区(机房)整体故障时(如断电、火灾等),仍然能够保障数据的正常访问。 注意 仅华南1(深圳)、华北2(北京)、华东1(杭州)、 华东2(上海)、中国(香港)、新加坡地域支持开启同城 冗余存储。此外,同城冗余存储的费用较高,且开启后不支持关闭,请谨慎操作。 有关同城冗余存储的更多信息,请参见同城冗余存储。 关闭:以本地冗余LRS的方式存储您的MOS数据。本地冗余将 您的数据冗余存储在同一个可用区的不同存储设备上,可支持两 个存储设备并发损坏时,仍维持数据不丢失,可正常访问。 |
版本控制 | 否 |
选择是否开通版本控制功能。
开通:开通Bucket版本控制功能后,针对数 据的覆盖和删除操作将会以历史版本的形式保存 下来。当您在错误覆盖或者删除Object后,能够 将Bucket中存储的Object恢复至任意时刻的历史版本。 更多详情请参见版本控制介绍。 不开通:不开通版本控制功能,则不保存覆盖或删除的数据。 |
读写权限 | 是 |
选择Bucket的读写权限。
私有(private):只有该存储空间的拥有 者可以对该存储空间内的文件进行读写操作,其他 人无法访问该存储空间内的文件。 公共读(public-read):只有该存储空间的拥有 者可以对该存储空间内的文件进行写操作,任何人 (包括匿名访问者)可以对该存储空间中的文件进行读操作。 警告 互联网上任何用户都可以对该Bucket内文件进行访问, 这有可能造成您数据的外泄以及费用激增,请谨慎操作。 公共读写(public-read-write):任何人 (包括匿名访问者)都可以对该存储空间内文件进行读写操作。警告 互联网上任何用户都可以对该Bucket内的文件进行访问,并且向该Bucket写入数据。 这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法 信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。 |
服务端加密 | 否 |
选择是否开启服务器端加密。
服务端加密方式:选择Object的加密方式。 无:不启用服务器端加密。 MOS完全托管:使用MOS托管的密钥进行加密。 MOS会为每个Object使用不同的密钥进行加密, 作为额外的保护,MOS会使用定期轮转的主密钥对加密密钥本身进行加密。 KMS:使用KMS默认托管的CMK或指定CMK ID进行 加解密操作。KMS加密详情请参见使用KMS托管密钥进行加解密。
警告
加密算法:可选择AES256或SM4加密算法。 加密密钥:服务端加密方式选择KMS时,可配置此项。参数说明如下: alias/acs/MOS:使用默认托管的CMK生成不同的密钥来加密不同的Object,并且在Object被下载时自动解密。 CMK ID:使用指定的CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK ID记录到Object的元信息中,具有解密权限的用户下载Object时会自动解密。选择指定的CMK ID前,您需在KMS管理控制台创建一个与Bucket相同地域的普通密钥或外部密钥。 |
实时日志查询 | 否 |
如果您希望在不付费的情况下实时查询最近7天的MOS访问日志,请选择开通。 有关实时日志查询的更多信息,请参见实时日志查询。 如果您不需要进行实时日志查询,请保持不开通的默认配置。 |
定时备份 | 否 |
如果您希望定时备份您的MOS数据,请选择开通。
此时,MOS将自动创建备份计划,并由混合云备份HBR执
行备份频率为每天备份一次MOS数据,备份文件保存一周的任务。
注意 如果HBR未开通或未授权HBR访问MOS,则无 法创建定时备份计划。更多信息,请参见设置定时备份。 如果您不需要定时备份您的MOS数据,请保持不开通的默认配置。 |
4.单击确定。
对象存储MOS提供权限控制ACL(Access Control List), 您可以在创建存储空间(Bucket )时设置相应的ACL, 也可以在创建之后修改ACL。如果不设置ACL,默认值为私有。
修改Bucket的ACL会影响Bucket内所有ACL为继承Bucket的文件。 若您在上传文件时未指定文件的ACL,则文件的ACL均为继承Bucket, 当您修改Bucket的ACL后,这部分文件的ACL会跟Bucket一致。 更多关于读写权限的信息请参见 基于读写权限ACL的权限控制。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击权限管理 > 读写权限。在读写权限区域单击设置,修改该存储空间的读写权限。
存储空间目前支持以下三种访问权限:
私有(private):只有该存储空间的拥有者可以对该存储空间内的文件进行读写操作,其他人无法访问该存储空间内的文件。
公共读(public-read):只有该存储空间的拥有者可以对该存储空间内的文件进行写操作,任何人(包括匿名访问者)可以对该存储空间中的文件进行读操作。
警告 互联网上任何用户都可以对公共读的Bucket内 的文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。
公共读写(public-read-write):任何人(包括匿名访问者)都可以对该存储空间内文件进行读写操作。
警告 互联网上任何用户都可以对公共读写的Bucket内的文件进行访问,并且向该Bucket写入数据。 这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息 还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。
4.单击保存 。
您可以通过MOS控制台的防盗链功能设置Referer白名单,防止您存储于对象存储MOS的数据被其他人盗链而产生额外的费用。
防盗链功能通过设置Referer白名单,限制仅白名单中的域名可以访问您Bucket内的资源。MOS支持基于HTTP和HTTPS
header中表头字段Referer的方法设置防盗链。
仅当通过签名URL或者匿名访问Object时,进行防盗链验证;当请求的Header中包含Authorization字段,不进行防盗链验证。
防盗链的API接口详情请参见PutBucketReferer。有关防盗链的详情请参见
防盗链。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击权限管理 > 防盗链。
4.在防盗链区域,单击设置。
在Referer框中,填写域名和IP地址,支持通配符星号(*)和问号(?),多个Referer以换行分隔。示例如下:
配置为www.moduyun.com,可匹配如www.moduyun.com/123、www.moduyun.com.cn等以www.moduyun.com为前缀的地址。
配置为*www.moduyun.com/,可匹配https://www.moduyun.com/和https://www.moduyun.com/的地址。
通配符星号(*)表示使用星号代替0个或多个字符。例如配置为*.moduyun.com,可匹配如help.moduyun.com、www.moduyun.com等地址。
通配符问号(?)表示使用问号代替一个字符。例如配置为moduyun?.com,可匹配如moduyuna.com、moduyunb.com等地址。
支持带端口的域名或IP,例如www.example.com:8080、10.10.10.10:8080等地址。
在允许空Referer框中,选择是否允许Referer为空。
空Referer表示HTTP或HTTPS请求中,不带Referer字段或Referer字段为空。
如果不允许空Referer,则只有HTTP或HTTPS header中包含Referer字段的请求才能访问MOS资源。
说明 当您使用MOS的Bucket域名(如bucketname.MOS-cn-zhangjiakou.moduyuncs.com)预览MP4文件时,由于浏览器默认会同时发出两个请求,其中一个为带Referer的请求,另一个为空Referer的请求, 因此设置防盗链时必须同时满足在Referer中添加Bucket域名,且允许空Referer的条件。当您使用MOS的Bucket域名预览非MP4文件时,则仅需允许空Referer。
5.单击保存。
验证防盗链是否生效请参见MOS验证Refer 防盗链是否生效。
防盗链功能常见问题请参见MOS防盗链(Referer)配置及错误排除。
跨域资源共享CORS(CrMOS-Origin Resource Sharing)简称跨域 访问,是HTML5提供的标准跨域解决方案,允许Web应用服务器进行跨域访问控制,使得跨域数据传输得以安全进行。
对象存储MOS提供HTML5协议中的跨域资源共享CORS设置,帮助您实现跨域访问。当MOS收到一个跨域请求(或者OPTIONS请求)时,会读取存储空间对应的CORS规则,然后进行相应的权限检查。MOS会依次检查每一条规则,使用第一条匹配的规则来允许请求并返回对应的Header。如果所有规则都匹配失败,则不附加任何CORS相关的Header。
配置跨域访问规则时,有如下注意事项:
每个存储空间最多可以配置10条跨域规则。
如果您开启了CDN加速,并且需要进行跨域CORS访问,您需要在CDN控制台配置跨域规则。详情请参见CDN如何配置跨域资源共享(CORS)。
有关跨域访问的更多介绍,请参见开发指南中的设置跨域资源共享。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击权限管理 > 跨域设置,在跨域设置区域单击设置。
4.单击创建规则,在设定跨域规则面板设置跨域访问参数。
参数 | 是否必须 | 说明 |
---|---|---|
来源 | 是 |
指定允许的跨域请求的来源。配置规则如下:
允许多条匹配规则,多条规则需换行填写。 域名需包含协议名,例如HTTP、HTTPS。 支持通配符星号(*),每条匹配规则允许使用最多一个星号(*)。 若域名使用的不是默认端口,还需要携带端口号。例如:https://www.example.com:8080。 域名配置示例如下: 匹配指定域名时,填写完整域名,例如:https://www.example.com。 匹配泛二级域名,可使用通配符星号(*)。例如:https://*.example.com。 匹配所有域名,可直接填写通配符星号(*)。 |
允许Methods | 是 | 指定允许的跨域请求方法。 |
允许Headers | 否 |
指定允许跨域请求的响应头。配置规则如下:
格式为key:value,例如content-type:text/plain,大小写不敏感。 允许多条匹配规则,多条规则需换行填写。 每条匹配规则最多使用一个星号(*)通配符。建议没有特殊需求的情况下设置为星号(*)。 |
暴露Headers | 否 | 指定允许用户从应用程序中访问的响应头。 例如一个Javascript的XMLHttpRequest对象。不允许使用星号(*)通配符。 |
缓存时间 | 否 | 指定浏览器对特定资源的预取(OPTIONS)请求返回结果的缓存时间。 |
返回Vary: Origin | 否 |
配置是否返回Vary: Origin Header。
如果实际应用中同时存在CORS和非CORS请求, 或者Origin头有多种可能值时,建议选中返 回Vary: Origin以避免本地缓存错乱。 说明 选中返回Vary: Origin后,可能会造成浏览器 访问次数或者CDN回源次数增加。 |
5.单击确定。
文件(Object)上传至存储空间(Bucket)后,MOS会自动生成文件URL,您可以直接通过文件URL (即Bucket外网访问域名)访问该文件。若您希望通过自定义域 名(自有域名)访问这些文件,需要将自定义域名绑定至文件所在的Bucket。
说明
如果您的Bucket在中国内地,绑定的域名需在中国工信部备案。
有关文件URL的获取方式,请参见上传Object后如何获取访问URL?。
1.绑定自定义域名。
i.登录 MOS管理控制台。
ii.单击Bucket列表,然后单击目标Bucket名称。
iii.单击传输管理 > 域名管理。
iv.单击绑定域名。
v.在绑定域名面板,输入要绑定的域名。
绑定的域名不支持泛域名,例如*.example.com。
若提示域名冲突,表示该域名已绑定至其他Bucket。此时,
您可以更换域名或通过验证域名所有权强制绑定域名。
验证域名所有权会解除域名与其他Bucket的绑定关系。详情请参见验证域名所有权。
2.添加CNAME记录。
如果添加的域名为当前账号下管理的域名,开启自动添加CNAME记录。
a.在绑定域名面板,打开自动添加CNAME记录开关。
注意 若您绑定的域名已配置过CNAME,则自动添加的CNAME记录会覆盖原有的CNAME记录。
b.单击提交。
如果添加的域名为非当前账号下的域名,手动添加CNAME记录。
若您的域名为非摩杜云托管的域名,需在对应的域名解析商处配置云解析,如腾讯云解析(原DNSPod)或新网,详情请参见配置CNAME。
此处以非当前账号下摩杜云托管的域名为例,手动添加CNAME记录步骤如下:
a.登录云解析DNS控制台。
b.在域名解析列表中,单击目标域名右侧的解析设置。
c.单击添加记录,填写域名解析信息。
参数 | 说明 |
---|---|
记录类型 | 选择域名指向的类型。 此处选择CNAME。 |
主机记录 |
根据域名前缀填写主机记录。
如果是顶级域名,例如moduyun.com,输入@。 如果是二级域名,输入二级域名的前缀。例如域名为abc.moduyun.com,输入abc。 如果需要所有的二级域名都指向Bucket外网访问域名,输入*。 |
解析线路 | 解析域名时使用的线路。 建议选择默认,系统将自动选择最佳线路。 |
记录值 |
填写Bucket外网访问域名。Bucket外网访问域名结构 为BucketName.Endpoint,例如华东1(杭州)地域创建了 名为examplebucket的存储空间,外网Endpoint为 MOS-cn-hangzhou.moduyuncs.com,则填写为examplebucket.MOS-cn-hangzhou.moduyuncs.com。 |
TTL | 域名的更新周期,保留默认值即可。 |
d.单击确定。
新增CNAME记录实时生效,修改CNAME记录最多72小时内生效。
您可以通过ping或lookup命令测试您添 加的域名,如果被转向*.MOS-cn-*.moduyuncs.com,即表示CNAME配置已经生效。
绑定自定义域名提示域名冲突时,您可以通过验证域名所有权强制绑定此域名。
1.单击域名所有权验证。
MOS会随机生成该域名的token,包含域名、主机记录和值,您需要保存这些信息。
2.在您的域名服务商处添加TXT记录,填写步骤1中保存的主机记录和值,其他参数保持默认配置。
配置步骤,请参见手动添加CNAME记录。
3.在绑定用户域名面板,单击我已添加TXT验证文件,继续提交。
若您的配置无误,MOS会将该域名绑定在当前Bucket。
当您的自定义域名不再使用时,可以手动解除域名绑定。
1.在目标Bucket管理页面,单击传输管理 > 域名管理。
2.在域名列表中,单击目标域名右侧的域名绑定配置。
3.在域名绑定配置面板,单击解除绑定,然后单击确定。
如果您希望获得更好的上传、下载体验,可以绑定传输加速域名。操作步骤,请参见
绑定传输加速域名 。
如果您希望使用HTTPS协议访问自定义域名,您需要在MOS控制台上传您的HTTPS证书。操作步骤,请参见
证书托管。
MOS传输加速利用全球分布的云机房,将全球各地用户对您存储空间(Bucket)的访问, 经过智能路由解析至就近的接入点,使用优化后的网络及协议, 为云存储互联网的上传、下载提供端到端的加速方案。
只有Bucket拥有者以及被授予MOS:PutBucketTransferAcceleration权限的RAM用户才能发起配置传输加速的请求。
开启传输加速后,Bucket会在保留默认Endpoint的基础上新增传输加速域名,但必须使用MOS的传输加速域名才会提升访问速度。
使用传输加速域名访问Bucket时,MOS会收取传输加速费用。详情请参见
传输加速费用。
有关传输加速的更多信息,请参见开发指南的
传输加速。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击传输管理 > 传输加速。
4.单击设置并开启传输加速,然后单击保存。
开启传输加速后,会在30分钟内全网生效。Bucket在保留默认Endpoint的基础上,会新增如下两种传输加速Endpoint。
全球加速Endpoint:地址为MOS-accelerate.moduyuncs.com。传输加速接入点分布在全球各地,全球各地的Bucket均可以使用该域名进行传输加速。
非中国内地加速Endpoint:地址为MOS-accelerate-overseas.moduyuncs.com。传输加速接入点分布在除中国内地以外的各地域,仅在中国香港及海外各地域Bucket绑定未备案的域名做CNAME指向时使用。
您可以通过MOS全球传输加速效果对比工具测试您本地访问全球各地数据中心时,开启传输加速与未开启传输加速的访问速度。
MOS传输加速利用全球分布的云机房,将全球各地用户对您存储空间(Bucket)的访问,经过智能路由解析至就近的接入点, 使用优化后的网络及协议,为云存储互联网的上传、下载提供端到端的加速方案。本文介绍如何通过自定义域名使用MOS的传输加速服务。
已开启MOS传输加速服务。操作步骤,请参见
开启传输加速。
若您的Bucket在中国内地,绑定的域名需在中国工信部备案。
开启传输加速服务后,存储空间(Bucket)会新增以下传输加速域名:
全球加速域名:格式为BucketName.MOS-accelerate.moduyuncs.com,传输
加速接入点分布在全球各地,全球各地的用户都可以使用该域名加速访问目标Bucket。
非中国内地加速域名:格式为BucketName.MOS-accelerate-overseas.moduyuncs.com,传输
加速接入点分布在除中国内地以外的全球各地。非中国内地的用户都可以使用该域名加速访问非中国内地的Bucket。
说明 使用传输加速功能时,MOS会根据使用流量和地域收取一定费用。费用详情,请参见 传输加速费用。
若您希望使用自定义域名访问目标Bucket实现加速效果, 就必须将自定义域名与目标Bucket绑定,并添加CNAME记录指向传输加速域名。
1.绑定自定义域名。
i.登录MOS管理控制台
ii.单击Bucket列表,之后单击目标Bucket名称。
iii.单击传输管理 > 域名管理。
iv.单击绑定域名,在绑定域名面板的域名文本框填写您的域名。
请勿打开自动添加CNAME开关。
若提示域名冲突,表示该域名已绑定至其他Bucket。此时,
您可以更换域名或通过验证域名所有权强制绑定域名。验证域名所
有权会解除域名与其他Bucket的绑定关系。更多信息,请参见验证域名所有权。
v.单击提交。
2.添加CNAME记录。
在您的域名服务商处添加CNAME记录。以下步骤以摩杜云域名添加CNAME记录为例:
i.登录云解析DNS控制台。
ii.在域名解析列表中,单击目标域名右侧的解析设置。
iii.单击添加记录,填写域名解析信息。
参数 | 说明 |
---|---|
记录类型 | 选择域名指向的类型。 此处选择CNAME。 |
主机记录 |
根据域名前缀填写主机记录。
如果是顶级域名,例如moduyun.com,输入@。 如果是二级域名,输入二级域名的前缀。例如域名为abc.moduyun.com,输入abc。 如果需要所有的二级域名都指向Bucket外网访问域名,输入*。 |
解析线路 | 解析域名时使用的线路。 建议选择默认,系统将自动选择最佳线路。 |
记录值 | 填写MOS的传输加速域名。请根据您的使用场景填写全球加速域名或非中国内地加速域名。 |
TTL | 域名的更新周期,使用默认值即可。 |
iv.单击确定。
不同的域名服务商的CNAME配置生效时间不同,您可以通过以下方式验证配置是否已经生效:
Windows系统
在cmd.exe程序中使用 nslookup命令解析您的自定义域名,如果自定义域名被指向传输加速域名,则表示配置已生效。
Linux系统
使用dig命令解析您的自定义域名,如果自定义域名被指向传输加速域名,则表示配置已生效。
对象存储MOS与摩杜云CDN服务结合,可将 MOS内的文件缓存到CDN的边缘节点。当大量终 端用户重复访问同一文件时,可以直接从边缘 节点获取已缓存的数据,提高访问的响应速度。
若您的Bucket在中国内地,绑定的域名需在中国工信部备案。
MOS结合CDN加速服务使用时,会产生CDN流出流量费用、 CDN回源流出流量费用、请求费用。计费详情,请参见MOS结合摩杜云CDN场景的计费说明。
说明 建议您在上传加速、非静态热点文件下载加速等场景中使用MOS传输加速功能。更多信息,请参见传输加速。
1.绑定自定义域名。
i.登录 MOS管理控制台。
ii.单击Bucket列表,之后单击目标Bucket名称。
iii.选择传输管理 > 域名管理。
iv.单击绑定域名,在绑定域名面板的域名文本框填写您的域名。
请勿打开自动添加CNAME开关。
若提示域名冲突,表示该域名已绑定至其他Bucket。此时,
您可以更换域名或通过验证域名所有权强制绑定域名。
验证域名所有权会解除域名与其他Bucket的绑定关系。
更多信息,请参见验证域名所有权。
v.单击提交。
2.配置CDN加速服务。
i.在域名列表中,单击目标域名右侧的未配置。
ii.在添加域名页面,配置各项参数。配置详情,请参见添加加速域名。
iii.单击下一步,然后单击返回域名列表。
iv.在域名列表中,记录目标域名的CNAME值。
3.添加CNAME记录。
若您的域名为非摩杜云托管的域名,需在对应的域名解析商
处配置云解析。如腾讯云解析(原DNSPod)或新网添加CNAME的步骤,
请参见DNSPod配置CNAME流程或新网配置CNAME流程。此处以摩杜云
托管的域名为例,添加CNAME记录步骤如下:
i.登录云解析DNS控制台。
ii.单击域名解析,然后在域名解析列表中,单击目标域名右侧的解析设置。
iii.单击添加记录,填写域名解析信息。
参数 | 说明 |
---|---|
记录类型 | 选择域名指向的类型。 此处选择CNAME。 |
主机记录 |
根据域名前缀填写主机记录。
如果是顶级域名,例如moduyun.com,输入@。 如果是二级域名,输入二级域名的前缀。例如域名为abc.moduyun.com,输入abc。 如果需要所有的二级域名都指向Bucket外网访问域名,输入*。 |
解析线路 | 解析域名时使用的线路。 建议选择默认,系统将自动选择最佳线路。 |
记录值 | 填写步骤2中记录的CNAME值。 |
TTL | 域名的更新周期,保留默认值即可。 |
iv.单击确定。
新增CNAME记录实时生效,修改CNAME记录最多72小时生效。
4.开启CDN缓存自动刷新。
在域名管理页签,打开目标域名右侧的CDN缓存自动刷新开关。
如果您希望针对指定操作触发CDN缓存自动刷新,
可以联系摩杜云客服。开通后,您需要单击目标域名右侧支持的
操作,然后选中指定操作类型。支持的操作类型如下:
参数 | 说明 |
---|---|
PutObject | 通过PutObject接口上传文件。更多信息,请参见 简单上传。 |
PostObject | 通过PostObject接口上传文件。更多信息,请参见 表单上传。 |
CopyObject | 通过CopyObject接口修改文件。更多信息,请参见 拷贝文件。 |
AppendObject | 通过AppendObject接口上传文件。更多信息,请参见 追加上传。 |
CompleteMultipartUpload | 通过分片上传或断点续传上传文件。更多信息,清参见 分片上传和断点续传。 |
DeleteObject | 通过DeleteObject接口删除文件。更多信息,请参见 删除文件。 |
DeleteObjects | 通过DeleteMultipleObjects接口删除文件。更多信息,请参见 删除文件。 |
PutObjectACL | 通过PutObjectACL接口修改文件的权限控制。更多信息,请参见 Object ACL。 |
由生命周期触发的对象过期(Expire)、类型转换(TransitionStorageClass)操作不再支持CDN缓存刷新。使用CDN缓存自动刷新时有如下注意事项:
CDN缓存自动刷新功能提交的刷新URL为CNAME/ObjectName,不会刷新带请求参数的URL(图片处理、视频截帧等)。例如Bucket绑定的加速域名为example.com,当您更新Bucket根目录的a.jpg文件,则访问example/a.jpg可以获取最新文件;访问example.com/a.jpg?x-MOS-process=image/w_100可能获取的还是旧文件。
CDN缓存自动刷新功能不保证一定能成功提交刷新任务,也不保证刷新任务提交的及时性。
CDN缓存自动刷新功能仅支持少量文件的更新提交刷新任务。如果有大量文件的更新操作,可能会触发流控丢弃部分刷新任务。
说明 对页面或者有大量文件更新需求的用户,建议直接调用RefreshObjectCaches刷新节点上的文件内容。
为什么访问已绑定的CDN加速域名会出现AccessDenied错误?
绑定域名后,您可以使用域名加上具体的资源路径来访问MOS上的
资源,例如http://example.com/test/1.jpg。如果您直接访问该域名,
例如http://example.com,则会出现AccessDenied错误。
已完成CDN加速服务的配置,为什么刷新MOS控制台的域名
管理页签会出现CDN服务已配置和未配置交替出现的情况?
CDN服务配置完成后约10分钟才会生效,所以您在域名管理页签查看CDN
服务配置状态时会出现以上情况,建议您等待10分钟后刷新页面查看。
如果您希望使用HTTPS的方式访问CDN加速域名,
请进行证书托管。具体操作,请参见证书托管。
如果您开启了CDN加速,并且需要进行跨域CORS访问,
您需要在CDN控制台配置跨域规则。具体操作,请参见CDN如何配置跨域资源共享(CORS)。
有关MOS结合CDN加速服务的更多介绍,
请参见使用CDN加速MOS访问。
如果您的用户域名需要通过HTTPS的方式访问MOS服务, 必须购买相应的数字证书。您可以购买任何CA证书厂商提供的 证书服务或者购买摩杜云云盾证书服务,并托管您的证书。
请根据您的实际情况选择合适的证书托管方式:
若您绑定了自定义域名,未开启CDN加速服务,请参见
绑定自定义域名的证书托管步骤。
若您绑定了自定义域名,且已开启CDN加速服务,请参见
绑定CDN加速域名的证书托管步骤。
若您已绑定自定义域名,请按照以下步骤,在MOS控制台上进行证书托管操作。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击传输管理 > 域名管理。
4.在域名列表找到需要证书托管的域名,单击右侧证书托管。
5.在证书托管页面,输入您数字证书上的公钥和私钥信息。
当您获取数字证书后,可以从如下文件中获取公钥和私钥信息:
证书文件中后缀为.pem或.crt的文件包含公钥,格式如下:
-----BEGIN CERTIFICATE-----
......
-----END CERTIFICATE-----
证书文件中后缀为.key的文件包含私钥,格式如下:
-----BEGIN RSA PRIVATE KEY-----
......
-----END RSA PRIVATE KEY-----
6.单击上传。
若您已绑定CDN加速域名,您需要通过CDN控制台进行HTTPS证书管理。
1.登录 CDN控制台。
2.单击域名管理,在域名列表选择对应的域名,单击管理。
3.单击HTTPS配置 > 修改配置。
4.在 HTTPS设置页面中,开启HTTPS安全加速。
5.选择您的证书类型。
您可以选择的证书类型包括:云盾、自定义和免费证书。证书格式目前仅支持PEM。
云盾:选择您的云盾证书。
自定义:您需要在设置证书名称后,上传证书内容和私钥,该证书将会在摩杜云云盾的证书服务中保存。您可以在我的证书里查看。
免费证书:摩杜云的Digicert免费型DV版SSL证书。
CDN的免费证书只适用于CDN的HTTPS安全加速业务,因此您无法在摩杜云云盾控制台管理该证书,也无法查看到公钥和私钥。设置免费证书后,大约需要等候10分钟生效。
6.单击确定。
证书约一小时后生效。您可使用HTTPS方式访问资源,如果浏览器中出现绿色HTTPS标识,表明证书已生效。
当您希望共享数据,但又不希望承担流量费用和请求费用时,可以开启请求者付费模式。 在该模式下,请求者支付读取存储空间(Bucket)内数据时产生的流量费用和请求费用,而Bucket拥有者仅支付存储等其他费用。
使用请求者付费模式时,请求者会根据请求的内容支付请求次数、外网流出流量、回源流量、图片处理、视频截帧、低频/归档存储的数据取回等费用中的一项或多项, 而Bucket拥有者则支付存储、对象标签、传输加速等其他费用。更多信息请参见开发指南中的 请求者付费模式。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 请求者付费。在请求者付费区域单击设置,选择开启或关闭请求者付费模式。
4.单击保存 。
您可以使用对象存储MOS的清单功能获取存储空间(Bucket)中指定文件(Object) 的数量、大小、存储类型、加密状态等信息。相对于GetBucket (ListObjects)接口,在海量Object的列举场景中,建议您优先使用清单功能。
使用RAM用户配置清单任务时,已授予RAM用户PutBucketInventory、 GetBucketInventory、ListBucketInventory、DeleteBucketInventory、 CreateRole、GetRole权限。授权操作,请参见创建自定义策略和为RAM用户授权。
使用清单功能时,请注意以下事项:
通过控制台最多可配置10条清单规则。
使用Bucket清单功能会产生一定的费用,公测期间仅收取API请求费用和清单文件存储费用,暂不收取功能使用费用。
在您删除清单规则前,MOS会按照清单规则一直生成清单文件。为避免清单文件占用您过多的存储空间,请及时清理不再需要的清单文件。
更多信息,请参见存储空间清单。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.选择基础设置 > Bucket清单,之后单击设置。
4.单击创建清单,在设置清单报告规则对话框设置如下参数:
参数 | 是否必选 | 说明 |
---|---|---|
状态 | 是 | 设置清单任务的状态。可以选择启动和禁用。 |
规则名称 | 是 | 设置清单任务的名称。只能包含小 写字母、数字、短划线(-),且不能以短划线(-)开头或结尾。 |
目标Bucket | 是 |
选择存储清单文件的目标Bucket。
配置清单的源Bucket与存放清单文件 的目标Bucket可以相同也可以不同, 但是必须属于同一账号下的相同地域。 |
清单报告目录 | 否 | 设置清单报告存储的目录。置空时,清单报告存储在Bucket根目录。 |
清单报告导出周期 | 是 |
设置清单报告的生成周期。可选择每周或每天。
建议您根据源Bucket内的文件数量配置清单任务: 文件数量小于10亿,可以以天为单位生成清单文件。 文件数量为小于100亿,可以以周为单位生成清单文件。 文件数量大于100亿,建议以周为单位,并针对不同的文件前 缀设置不同的清单任务,保证每个清单任务涉及的文件不超过100亿个。 |
清单报告加密选项 | 否 |
是否加密清单文件。
无:不加密。 AES256:使用AES256加密算法加密清单文件。 KMS:使用KMS密钥加密清单文件。 您可以选择使用MOS托管的KMS密钥或在KMS平台创 建一个与目标Bucket相同地域的KMS密钥。KMS密钥配置步骤,请参见创建密钥。 说明 使用KMS密钥功能时会产生少量的KMS密钥API调用费用,费用详情请参考KMS计费标准。 |
对象版本 | 是 |
选择清单扫描的文件版本。
若Bucket已开启版本控制,可选择导出目标文件的当前版本或所有版本。更多信息,请参见版本控制介绍。 若Bucket未开启版本控制,默认导出所有文件。 |
按前缀匹配 | 否 |
设置目标文件前缀,清单规则仅扫描
指定前缀的文件;置空则扫描整个Bucket内的文件。
说明 若设置了前缀,但该前缀没有匹配到任何Object,则不会生成清单文件。 |
清单内容可选信息 | 是 | 选择您希望导出的文件信息, 包括Object大小、存储类型、最后更新时间、ETag、分片上传状态、加密状态。 |
5.选中我知晓并同意授予摩杜云MOS服务访问Bucket资源的权限后,单击确定。
清单文件的内容介绍,请参见功能说明。
对象存储MOS支持服务器端加密功能。上传文件(Object)时,MOS对收到的文件进行加密,再 将得到的加密文件持久化保存;下载文件时,MOS自动将加密文件解密后返回给用户, 并在返回的HTTP请求Header中,声明该文件进行了服务器端加密。
MOS支持以下两种数据加密方式:
使用KMS托管密钥进行加解密(SSE-KMS)
使用KMS托管的默认CMK(Customer Master Key)
或指定CMK ID加密MOS Object。加密密钥由KMS托管,
您无需花费大量成本来保障密钥的保密性、完整性和可用性。
说明 使用KMS密钥功能时会产生少量的KMS密钥API调用费用,费用详情请参考KMS计费标准。
使用MOS完全托管加密(SSE-MOS)
使用MOS托管的密钥加密每个Object,作为额外的保护,MOS会使用定期轮转的主密钥对加密密钥本身进行加密。
服务器端加密功能详情请参见服务器端加密。您可以通过以下两种方式在MOS控制台上开启服务器端加密功能:
方式一:创建Bucket时开启服务器端加密功能
方式二:为已创建的Bucket开启服务器端加密
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击创建Bucket。
3.在创建Bucket页面填写各项参数。
其中,服务器端加密区域配置参数说明如下:
服务端加密方式:选择Object的加密方式。
无:不启用服务器端加密。
MOS完全托管:使用MOS托管的密钥进行加密。MOS会为每个Object使用不同的密钥进行加密,作为额外的保护,MOS会使用定期轮转的主密钥对加密密钥本身进行加密。
KMS:使用KMS默认托管的CMK或指定CMK ID进行加解密操作。KMS加密详情请参见使用KMS托管密钥进行加解密。
说明
使用KMS加密方式前,需要开通KMS服务,详情请参见开通KMS服务。
使用KMS密钥功能时会产生少量的KMS密钥API调用费用,费用详情请参见KMS计费标准。
加密算法:可选择AES256或SM4加密算法。
加密密钥:服务端加密方式选择KMS时,可配置此项。参数说明如下:
alias/acs/MOS:使用默认托管的CMK生成不同的密钥来加密不同的Object,并且在Object被下载时自动解密。
CMK ID:使用指定的CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK
ID记录到Object的元信息中,具有解密权限的用户下载Object时会自动解密。选择指定的CMK
ID前,您需在KMS管理控制台创建一个与Bucket相同地域的普通密钥或外部密钥。
其他参数请参见创建存储空间。
4.单击确定。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 服务器端加密。
4.单击设置。
参数说明如下:
服务端加密方式:选择Object的加密方式。
无:不启用服务器端加密。
MOS完全托管:使用MOS托管的密钥进行加密。MOS会为每个Object使用不同的密钥进行加密,作为额外的保护,MOS会使用定期轮转的主密钥对加密密钥本身进行加密。
KMS:使用KMS默认托管的CMK或指定CMK ID进行加解密操作。KMS加密详情请参见使用KMS托管密钥进行加解密。
说明
使用KMS加密方式前,需要开通KMS服务,详情请参见开通KMS服务。
使用KMS密钥功能时会产生少量的KMS密钥API调用费用,费用详情请参见KMS计费标准。
加密算法:可选择AES256或SM4加密算法。
加密密钥:服务端加密方式选择KMS时,可配置此项。参数说明如下:
alias/acs/MOS:使用默认托管的CMK生成不同的密钥来加密不同的Object,并且在Object被下载时自动解密。
CMK ID:使用指定的CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK
ID记录到Object的元信息中,具有解密权限的用户下载Object时会自动解密。选择指定的CMK
ID前,您需在KMS管理控制台创建一个与Bucket相同地域的普通密钥或外部密钥。
5.单击保存。
注意 开启或修改Bucket默认加密方式不会影响Bucket中已有文件的加密配置。
您可以通过存储空间(Bucket)的标签功能, 对Bucket进行分类管理,如ListBucket时只显示 带有指定标签的Bucket。本文介绍如何通过MOS管理控制台设置存储空间标签。
Bucket标签使用一组键值对(Key-Value)对标记存储空间,您可以通过Bucket标签标记不同用途的Bucket,并进行分类管理。
只有Bucket的拥有者及授权子账户才能为Bucket设置用户标签,否则返回403 Forbidden错误,错误码:AccessDenied。
最多可设置20对Bucket用户标签(Key-Value对)。
Key最大长度为64字节,不能以http://、https://、moduyun为前缀,且不能为空。
Value最大长度为128字节,可以为空。
Key和Value必须为UTF-8编码。
更多关于Bucket标签的说明请参见
存储空间标签。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > Bucket标签。
4.单击设置。
5.根据命名规则添加Bucket标签。单击+号可添加多个标签。
6.单击保存。
您可以通过控制台将自己的存储空间(Bucket)配置成静态网站托管模式,并通过绑定的自定义域名访问该静态网站。w
出于安全考虑,中国区域自2018年8月13日起,中国以外区域自2019年9月25日起,通过浏览器访问MOS上网页类型文件(mimetype为text/html,扩展名包括HTM、HTML、JSP、PLG、HTX、STM):
使用MOS默认域名访问时,Response Header中会自动加上
Content-Disposition:'attachment=filename;'。即从浏览器访问网页类型文件时,不会显示文件内容,而是以附件形式进行下载。
使用绑定的自定义域名访问MOS时,Response Header中不会加上
Content-Disposition:'attachment=filename;',只要您的浏览器支持该类型文件的预览,可以直接预览文件内容。绑定自定义域名详细步骤请参见绑定自定义域名。
更多信息请参见
静态网站托管介绍。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 静态页面,在静态页面区域单击设置,设置以下参数:
参数 | 说明 |
---|---|
默认首页 |
设置索引页面(相当于网站的index.html),仅支持HTML格式的文件。若不填则表示不开启静态网页托管。
若未开通子目录首页:需保证根目录下有该文件,且该文件可读。 若开通子目录首页:需保证根目录和子目录下有该文件,且该文件可读。 说明 默认首页仅可以设置一个,若需要使用子目录首页, 您可以将子目录首页文件和根目录首页文件的名称设置一致,但内容可以不同。 |
子目录首页 |
选择是否开通子目录首页功能。
不开通:不开通子目录首页。此时,访问静态网站 根域名或者根域名下任何一个以正斜线(/)结尾的URL都会返回根目录默认首页。 开通:开通子目录首页。此时,访问静态网站根域名时, 返回根目录默认首页;访问以正斜线(/)结尾的URL时会返回对应目录的默认首页。 例如访问test.MOS-cn-hangzhou.moduyuncs.com/subdir/时。 若subdir/目录下有默认首页文件,则返回子目录默认首页。 |
文件404规则 |
设置开通子目录首页后,访问一个没有以正斜线(/)结尾,且不存在的Object时的返回结果。例如访问test.MOS-cn-hangzhou.moduyuncs.com/subdir,且subdir不存在时:
Redirect(默认值):检查subdir/默认首页文件是否存在。 若存在,返回302状态码,Location头为test.MOS-cn-hangzhou.moduyuncs.com/subdir/。 若不存在,返回默认404页。若默认404页也不存在,则返回404状态码。 NoSuckKey:直接返回默认404页。若默认404页也不存在,则返回404状态码。 Index:检查subdir/默认首页是否存在。 若存在,直接返回这个文件内容。 若不存在,则返回默认404页。若默认404页也不存在,则返回404状态码。 |
默认404页 | 即访问错误路径时返回的默认404页, 仅支持根目录下HTML、JPG、PNG、BPM、 WEBP格式的文件。如果为空则不启用默认404页设置。 |
错误文档响应码 | 您可以配置返回错误文档时的HTTP响应码为404或200。 |
说明 您必须保证默认首页和默认404页处于可读状态,否则会导致静态网页无法被访问。
4.单击保存。
您可以通过生命周期规则来批量转换存储空间 (Bucket)内对象(Object)的存储类型,也 可以批量删除指定的Object和碎片(Part)。
生命周期规则配置完成后24小时内会被加载,加载后的24小时内会被执行,请确认无误后再保存规则。
删除Object的操作是不可逆的,请根据您的需求合理设置生命周期规则。
通过控制台最多可配置100条生命周期规则,如需配置更多条目,请通过MOSutil或SDK配置。详情请参见
生命周期规则介绍。
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.选择基础设置 > 生命周期,在生命周期区域单击设置。
4.单击创建规则,在创建生命周期规则按如下说明配置生命周期规则。
存储空间未开启版本控制
区域 | 配置项 | 说明 |
---|---|---|
基本设置 | 状态 | 设置生命周期规则的状态,可选择启动或禁用。 |
基本设置 | 策略 |
选择生命周期规则作用的Object。可选择按前缀匹配,也可以选择配置到整个Bucket。
说明 选择按前缀匹配时,可以配置多条不同前缀的生命 周期规则。选择配置到整个Bucket则仅允许配置一条生命周期规则。 |
基本设置 | 前缀 | 如果策略选择了按前缀匹配,则需要输入Object名称的 前缀。例如,您需要匹配名称以img开头的Object,则输入img。 |
基本设置 | 标签 | 生命周期规则仅针对拥有指定标签Object生效。例如选择了按前缀匹配,设置前缀为img, 并设置标签的key为a,value为1。则该规则将匹配所有名称以img开头,标签为a=1的Object。关于对象标签的更多信息请参见对象标签。 |
清除策略 | 文件过期策略 | 选择Object过期策略,可选择过期天数、 过期日期和不启用。选择不启用时,文件过期策略不生效。 |
清除策略 | 转换到低频访问型存储 |
根据文件过期策略选择的过期天数或过期日期
设定Object何时过期,Object过期后转为低频访问存储类型。 选择过期天数时:指定一个过期天数N,Object会在其最 后修改时间的N天后过期,并在过期的第二天转换为低频访问 存储类型。例如设置为30,则最后修改日期为2021年1月1 日的Object会在2021年2月1日被转换为低频访问存储类型。 选择过期日期时:指定一个过期日期,最后修改时间在该日 期之前的Object会全部过期,并转换为低频访问存储类型。 例如设置为2021年1月1日,则最后修改日期在2021年1月1日 之前的Object会被转换为低频访问存储类型。 |
清除策略 | 转换到归档型存储 | 根据文件过期策略选择的过期天数或过期日期 设定Object何时过期,Object过期后转为归档存储类型。配置方式与转换到低频访问型存储相同。 |
清除策略 | 转换到冷归档型存储 | 根据文件过期策略选择的过期天数或过 期日期设定Object何时过期,Object过期 后转为冷归档存储类型。配置方式与转换到低频访问型存储相同。 |
清除策略 | 删除文件 | 根据文件过期策略选择的过期天 数或过期日期设定Object何时过期, Object过期后会被删除。配置方式与转换到低频访问型存储相同。 |
说明 有关存储类型转换的规则说明,请参见存储类型转换。 有关存储类型转换后的计量计费规则,请参见管理文件生命周期。
存储空间已开启版本控制
开启版本控制后,基本设置与清
理碎片区域涉及的配置项,与未开启
版本控制的配置方法相同。以下表格仅介
绍与未开启版本控制相比,开启版本控制后配置项存在的差异。
区域 | 配置项 | 说明 |
---|---|---|
当前版本 | 清理对象删除标记 |
开启版本控制后,清除策略中增加了清理对
象删除标记选项,其他选项与未开启版本控制时相同。 选择此选项后,如果当前Object仅有一个版本 且为删除标记时,则MOS将删除过期Object的删除标记。 如果当前Object有多个版本,且Object的最新版 本为删除标记时,则MOS将保留该删除标记。关于删除标记详情请参见删除标记。 |
历史版本 | 文件过期策略 | 设置历史版本文件的过期策略, 可选择过期天数和不启用。当选择不启用时,文件过期策略不生效。 |
历史版本 | 转换到低频访问型存储 |
设定一个过期天数N,历史版本的Object会在其被转换为历史版本的N天后过期,
并在过期的第二天转换为低频访问存储类型。例如设置为30,
则在2021年1月1日被转为历史版本的Object会在2021年2月1日被转换为低频访问存储类型。
说明 您可以通过Object下一个版本的最后修改时间确定Object被转为历史版本的时间。 |
历史版本 | 转换到归档型存储 |
设定一个过期天数N,Object会在其被转换为历
史版本的N天后过期,并在过期的第二天转换为归 档存储类型。配置方式与转换到低频访问型存储相同。 |
历史版本 | 转换到冷归档型存储 |
设定一个过期天数N,Object会在其被转换
为历史版本的N天后过期,并在过期的第二天转 换为冷归档存储类型。配置方式与转换到低频访问型存储相同。 |
历史版本 | 删除文件 |
设定一个过期天数N,Object会在其被转换
为历史版本的N天后过期,并在过期的第二天被
删除。配置方式与转换到低频访问型存储相同。
说明 如果生命周期规则指向当前版本Object的删除行为,则MOS不会直接删除当 前版本Object,而是将当前版本Object转为历史版本Object,并添加删除标记。如果生命周期规 则指向历史版本Object的删除行为,则直接删除历史版本Object。此外,删除历史版本Object时,会同时对标记为删除标记的Object进行删除。 |
5.单击确定。
生命周期规则保存成功后,您可以
在策略列表中查看已设置的生命周期规
则,也可以对规则进行编辑或者删除操作。
您可以通过生命周期规则来批量转换存储空间 (Bucket)内对象(Object)的存储类型,也 可以批量删除指定的Object和碎片(Part)。
合规保留策略正在公测中,如需试用此功能,请联系售后技术支持申请试用
说明
同一个Bucket中,版本控制和合规保留策略无法同时配置。若Bucket已开启版本控制功能,则无法再配置保留策略。版本控制功能详情请参见版本控制介绍。
关于合规保留策略的功能介绍请参见
合规保留策略。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 保留策略。在保留规则区域单击设置。
4.单击创建策略,打开创建策略对话框。
5.设置合规保留策略的保留周期。保留周期的取值范围为1天到70年。
6.单击确认。
策略创建后,状态为“IN_PROGRESS”。此状态下,策略可被锁定和删除。
7.单击锁定。
8.确认合规保留策略无误后,单击确定。
说明
此时策略状态变为LOCKED,您仅可以单击编辑延长文件的保护周期,无法删除策略或缩短文件的保护周期。
当Bucket内的数据处于被保护状态时,若您在控制台上尝试删除或修改这些数据,控制台上会返回该文件已被锁定,不可执行操作的错误提示。
您可以根据Bucket内文件的最后更新时间加上合规保留策略设置的保留周期计算出文件的保留时间。示例:Bucket A已设置合规保留策略, 保留时间是10天,文件的最后更新时间是2019-3-1 12:00,该文件会在2019-3-11 12:01过保护期。合规保留策略详细的规则说明请参见规则说明。
对象存储MOS的回源规则允许请求者向存储空间(Bucket)请
求不存在的文件时,从回源规则设置的源站获取目标文件。回源规则分
为镜像回源和重定向两种,可以满足您对于数据热迁移、特定请求的重定向等需求。
有关镜像回源和重定向的更多信息,请参见
管理回源设置。
配置了镜像回源规则后,当请求者访问Bucket中一个不存在的文件时,MOS会向回
源规则指定的源站获取这个文件。在获取到目标文件后,MOS会将文件返回给请求者并存入Bucket。配置方式,请参见镜像回源常见配置。
镜像回源主要用于数据无缝迁移到MOS的场景。例如某服务已经在用户建立的源站或者在其他
云产品上运行。现因业务发展,需要将服务迁移至MOS,迁移时需保证服务的正常运行。您可以在迁移过程中
使用镜像回源规则获取未迁移至MOS的部分数据,保证服务的正常运行。详细示例,请参见互联网公司业务无缝迁移至摩杜云MOS。
配置了重定向规则后,当请求者访问Bucket发生指定错误时, MOS会将请求重定向至回源规则指定的源站。您可以利用这种 跳转的功能对文件做重定向以及在此基础之上的各种业务。配置方式,请参见 设置重定向。
您可以通过控制台配置最多20条回源规则,默认按
规则创建时间的先后顺序依次匹配。如果您希望自定
义规则匹配顺序,请通过规则右侧的上移或下移操作来实现。
如果命中当前规则,则后续规则不再匹配。规则未命中表示没有匹配回源条件,与回源后是否成功获取目标文件无关。
镜像回源主要用于数据无缝迁移到MOS的场景。 例如某服务已经在用户建立的源站或者在其他云产品上运行。现因业务发展, 需要将服务迁移至MOS,迁移时需保证服务的正常运行。 您可以在迁移过程中使用镜像回源规则获取未迁移至MOS的部分数据,保证服务的正常运行。
当请求者访问目标Bucket中不存在的文件时,可以通过指 定回源条件和回源地址,从源站中获取目标文件。例如您在华 东1(杭州)有名为examplebucket的Bucket,您希望请 求者访问Bucket根目录下examplefolder目录中不存在的文件时, 可以从https://www.example.com/站点的examplefolder目录获取目标文件。配置步骤如下:
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 镜像回源。
4.单击设置,之后单击创建规则。
5.在创建规则面板配置,将回源类型设置为镜像。
6.配置回源条件和回源地址:
参数 | 配置 |
---|---|
回源条件 |
选中文件名前缀,并设置为examplefolder/。
说明 配置单条回源规则时文件名前缀和后缀可选填; 配置多条回源规则时,必须设置不同的文件名前缀或后缀区分不同的回源规则。 |
回源地址 | 第一列设置为https,第二列设置 为www.example.com,第三列设 置为examplefolder。 |
7.单击确认。
规则配置完成后的访问流程如下:
i.请求者首次访问https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/examplefolder/example.txt。
ii.若examplebucket中不存在examplefolder/example.txt文件,则MOS向https://example.com/examplefolder/example.txt发起请求。
iii.若获取到目标文件,MOS将example.txt存入examplebucket的examplefolder目录,
并将文件返回给请求者;若未获取到文件,则返回404错误给请求者。
若您的镜像回源规则还涉及一些特殊场景,请参见镜像回源特殊配置。
本文介绍几种特殊场景下的镜像回源规则配置。
镜像回源规则的配置方式,请参见
镜像回源常见配置。
客户A在华东1(杭州)有名为examplebucketA的Bucket,需实现如下场景:
当请求者访问examplefolder目录中不存在的文件时,可以从https://example.com站点的destfolder目录中回源文件。
源站中存在部分文件名以正斜线(/)开头的文件,这部分文件要正确回源到examplebucketA中。
需要检查回源文件的MD5值,MD5值不匹配的文件不在examplebucketA中保存。
配置说明如下:
参数 | 配置 |
---|---|
回源条件 | 选中文件名前缀,并设置为examplefolder/。 |
是否替换或截取前缀 | 选中是否替换或截取前缀,并设置为destfolder/。 |
回源地址 | 第一列设置为https,第二列设置为example.com,第三列置空。 |
透传/到源站 |
选中是否透传/到源站。
回源文件的文件名以正斜线(/)开头时, MOS会删除正斜线(/)后将文件保存到Bucket中。 说明 此功能已在美国(硅谷)、美国(弗吉尼亚)和华东1 (杭州)地域公测,您可以联系摩杜云客服申请试用。 |
检查MD5 |
选中是否检查MD5。
当回源请求中返回的response包含Content-MD5字段时,MOS会检查回源文件的MD5值与Content-MD5字段值是否匹配。 匹配:客户端将获取文件,且MOS保存回源文件。 不匹配:由于计算MD5需要完整的文件数据,而此时文件已经透传回客户端,所以客户端能获取到文件,但MOS不会保存回源文件。 |
规则配置完成后访问流程如下:
1.请求者首次访问https://examplebucketA.MOS-cn-hangzhou.moduyuncs.com///examplefolder/example.txt。
2.若examplebucketA中不存在//examplefolder/example.txt文件,则MOS向https://example.com///destfolder/example.txt请求文件。
3.获取到目标文件后,MOS进行以下操作:
若回源请求中返回的response包含Content-MD5字段,MOS会计算回源文件的MD5值,并与Content-MD5字段进行匹配。MD5匹配通过则将文件重命名为examplefolder/example.txt后保存到examplebucketA,并将文件返回给请求者;匹配不通过时仅返回文件给用户,不保存该文件到examplebucketA。
若回源请求中返回的response不包含Content-MD5字段,MOS将文件重命名为examplefolder/example.txt后保存到examplebucketA,并将文件返回给请求者。
客户B有华北2(北京)名为examplebucketB的Bucket和源站A
(https://exampleA.com)、源站B(https://exampleB.com)两个目录一致的站点,需实现如下场景:
当请求者访问pathA/example目录中不存在的文件时,从https://exampleA.com站点的example目录中获取。
当请求者访问pathB/example目录中不存在的文件时,从https://exampleB.com站点的example目录中获取。
两个源站针对某些文件还设置了重定向策略,需要跟随重定向获取最终数据保存到exampleBucketB中。
此需求需配置两条镜像回源规则,配置说明如下:
规则一:
参数 | 配置 |
---|---|
回源条件 | 选中文件名前缀,并设置为A/example/。 |
是否替换或截取前缀 | 选中是否替换或截取前缀,并设置为example/。 |
回源地址 | 第一列设置为https,第二列设置为exampleA.com,第三列置空。 |
3xx请求响应策略 |
选中跟随源站重定向请求。
说明 未选中跟随源站重定向请求时,MOS会直接将 源站重定向规则指定的地址返回给请求者。 |
规则二:
参数 | 配置 |
---|---|
回源条件 | 选中文件名前缀,并设置为B/example/。 |
是否替换或截取前缀 | 选中是否替换或截取前缀,并设置为example/。 |
回源地址 | 第一列设置为https,第二列设置为exampleB.com,第三列置空。 |
3xx请求响应策略 | 选中跟随源站重定向请求。 |
规则配置完成后访问流程如下:
1.请求者首次访问https://examplebucketB.MOS-cn-beijing.moduyuncs.com/A/example/example.txt。
2.若examplebucketA中不存在A/example/example.txt文件,则MOS向https://exampleA.com/example/example.txt请求文件。
3.根据源站是否设置重定向规则,请求结果如下:
若源站A针对example/example.txt设置了重定向规则,则MOS会向源站重定向规则指定的地址重新发起请求,获取到文件后会将文件命名为A/example/example.txt保存至examplebucketA,并返回给请求者。
若源站A未针对example/example.txt设置重定向规则,则MOS获取到文件后会将文件命名为A/example/example.txt保存至examplebucketA,并返回给请求者。
若请求者访问https://examplebucketB.MOS-cn-beijing.moduyuncs.com/B/example/example.txt,则通过回源规则获取的文件存储在examplebucketB的B/example目录。
客户C在华东2(上海)地域有名为examplebucketC和examplebucketD的两个Bucket。其中examplebucketC为公共读,examplebucketD为私有,需实现如下场景:
当请求者examplebucketC根目录下examplefolder目录中不存在的文件时,可以从examplebucketD的examplefolder目录中获取目标文件。
允许将请求URL中携带的query string传递到源站。
允许将请求URL中携带的headerA、headerB、headerC三个HTTP header传递到源站。
配置说明如下:
参数 | 配置 |
---|---|
回源条件 | 选中文件名前缀,并设置为examplefolder/。 |
源站类型 |
选中回源MOS私有Bucket,并在回源Bucket下拉列表选择examplebucketD。
说明 配置源站类型时,MOS会在RAM服务中生成moduyunMOSMirrorDefaultRole角色, 并授予该角色只读访问所有Bucket的权限(moduyunMOSReadOnlyAccess)。 |
回源地址 | 第一列设置为https,其他置空。 |
回源参数 |
选中携带请求字符串。
MOS会将URL请求中的query string 传递到源站。 |
设置HTTP header传递规则 |
选中传递指定HTTP header参数,并添加headerA、
headerB、headerC三个HTTP header。 回源规则不支持传递部分标准HTTP header( 例如authorization、authorization2、range、 content-length、date等)以及以x-MOS-、MOS-、x-drs-开头的HTTP header。 |
规则配置完成后访问流程如下:
1.请求者首次访问https://examplebucketC.MOS-cn-shanghai.moduyuncs.com/examplefolder/example.png?caller=lucas&production=MOS。
2.若examplebucketC中不存在examplefolder/example.png文件,则MOS会向https://examplebucketD.MOS-cn-shanghai.moduyuncs.com/examplefolder/example.png?caller=lucas&production=MOS请求文件。
3.examplebucketD会根据传递的?caller=lucas&production=MOS参数统计访问信息,并将example.png返回给MOS。
4.MOS会将获取的文件命名为examplefolder/example.png后存入examplebucketC。
若请求中还携带了headerA、headerB、headerC HTTP header时,也会被传递到examplebucketD。
配置了重定向规则后,当请求者访问Bucket发生指定错误时, MOS会将请求重定向至回源规则指定的源站。您可以利用这种 跳转的功能对文件做重定向以及在此基础之上的各种业务。
当访问者访问Bucket出错时,可以通过指定回源条件和 回源地址,跳转到源站继续访问。例如您在华东1(杭州) 有名为examplebucket的Bucket,您希望请求者访问Bucket 根目录下examplefolder目录中的文件不存在的文件时, 跳转到https://www.example.com/站点的examplefolder目录获取目标文件。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 镜像回源。
4.单击设置,之后单击创建规则。
5.在创建规则面板,将回源类型设置为重定向。
6.配置回源条件和回源地址:
参数 | 配置 |
---|---|
回源条件 |
选中HTTP状态码,并设置为404。
HTTP状态码的取值范围:400~599。各状态码代表的错误信息,请参见常见错误排查。 选中文件名前缀,并设置为examplefolder/。 说明 配置单条回源规则时文件名前缀和后缀可选填; 配置多条回源规则时,必须设置不同的文件名前缀或后缀区分不同的回源规则。 |
回源地址 | 选择添加前后缀,并将第一列设置 为https,第二列设置为www.example.com,其他置空。 |
7.单击确认。
规则配置完成后的访问流程如下:
i.请求者首次访问https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/examplefolder/example.txt。
ii.若examplebucket中不存在examplefolder/example.txt文件,则MOS向请求者返回301状态码,并提供重定
向的地址https://www.example.com/examplefolder/example.txt。
iii.请求者访问https://www.example.com/examplefolder/example.txt。
若您还涉及以下使用场景,可按场景配置以下参数:
场景 | 参数 |
---|---|
MOS文件名前缀与源站不一致。 |
选中是否替换或截取前缀,并设置回源地址第三列内容。 MOS会将文件名前缀的内容替换为回源地址第三列的内容。 配置文件名前缀后可配置此项。 |
将MOS请求中的queryString传递到源站。 | 选中携带请求字符串。 |
需要替换重定向状态码。 | 重定向规则默认状态码为301, 您可以在重定向Code下拉框将状态码修改为302或307。 |
重定向请求来源为摩杜云CDN。 |
选择是否选中来源为摩杜CDN。
重定向来源为摩杜云CDN的时候,若 选中来源为摩杜CDN,CDN会自动去跟随 重定向规则再去拉取内容;若不选中来源 为摩杜CDN,则CDN直接返回重定向的地址给客户端。 |
您可以在MOS管理控制台设置事件通知规则, 自定义您关注的Object。当这些Object发生 指定事件时,您可以第一时间收到通知。
已开通消息服务MNS。
您可以在MNS产品页开通MNS。
使用事件通知时需注意以下事项:
使用事件通知功能会产生消息服务MNS的费用。计费详情,请参见价格说明。
华南2(河源)、华南3(广州)、华北5(呼和浩特)、华北6(乌兰察布)、阿联酋(迪拜)、马来西亚(吉隆坡)地域暂不支持事件通知功能。
同一地域仅支持配置10条事件通知规则。
通过RTMP推流方式生成的TS和M3U8文件不会触发事件通知规则。有关RTMP推流的介绍,请参见LiveChannel简介。
关于事件通知功能的更多信息,请参见事件通知。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket。
3.选择左侧导航栏的基础设置 > 事件通知。
4.单击设置,然后单击创建规则。
5.在创建规则面板配置以下参数:
参数 | 说明 |
---|---|
规则名称 |
设置事件通知规则的名称。
规则只能包含大小写字母、数字和短划线(-),且长度不超过85个字符。 |
事件类型 |
Object操作类型。例如CopyObject表示通过拷贝文件创建或覆盖文件。
若多条规则涉及同一Object,则事件类型不允许相同。例如规则A针对 前缀examplefolder设置了CopyObject事件,若规则B涉及examplefolder 前缀下任意Object时,事件类型不能包含CopyObject。 事件类型对应的Object操作,请参见事件类型。 |
资源描述 |
设置事件通知涉及的目标Object。
全名:输入目标Object的完整路径,例如examplefolder/myphoto.jpg。 前后缀:输入前后缀以匹配目标Object。配置示例如下: 如需匹配Bucket内所有Object,则前缀和后缀均置空。 如需匹配Bucket根目录下examplefolder目录中的所有文件,则前缀填写examplefolder/,后缀置空。 如需匹配Bucket内所有的JPG格式的文件,则前缀置空,后缀填写.jpg。 如需匹配Bucket根目录下examplefolder目录中MP3格式的文件,则前缀填examplefolder/,后缀填写.mp3。 您可以单击添加按钮,创建最多5条资源描述。 |
接收终端 |
设置事件的接收终端,支持HTTP和队列。
HTTP:填写接收事件通知的HttpEndpoint地址,例如http://198.51.100.1:8080。 搭建HttpEndpoint的具体操作,请参见主题使用手册和HttpEndpoint。 队列:填写您在MNS中创建的队列名称。创建队列的具体操作,请参见创建队列。 您可以单击添加按钮,创建最多5个接收终端。 |
6.单击确定 。
如果您不再需要存储空间(Bucket),请将其删除,以免产生额外费用。
已删除Bucket中所有的文件(Object)。删除少量文件的操作步骤,请参见删除文件。如果您的文件数量较多,建议结合生命周期规则进行批量删除。删除大量文件的操作步骤,请参见生命周期规则。
如果Bucket已开启版本控制,请确保删除Bucket内的所有当前版本和历史版本文件。删除所有版本文件的操作步骤,请参见版本控制。
已删除Bucket中因分片上传或断点续传产生的碎片(Part)。删除碎片的操作步骤,请参见管理碎片。
已删除Bucket中所有的Livechannel。删除Livechannel的操作步骤,请参见DeleteLiveChannel。
警告 Bucket删除后不可恢复,请谨慎操作。
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击基础设置 > 删除Bucket。
4.单击删除Bucket,在弹出的对话框中,单击确定。
跨区域复制(CrMOS-Region Replication) 是跨不同MOS数据中心(地域)的存储空间(Bucket)自动、 异步(近实时)复制文件(Object),它会将Object的创建、 更新和删除等操作从源存储空间复制到不同区域的目标存储空间。
使用跨区域复制时需注意以下事项:
费用说明
进行跨区域复制时,MOS会根据复制文件产生的流量收取跨区域复制流量费用。计费方式,请参见跨区域复制流量费用。
每同步1个Object,MOS会计算请求次数并收取请求费用。计费方式,请参见请求费用。
使用限制
源Bucket中的数据可以同步到多个目标Bucket。单个Bucket关联的复制规则数量不能超过100条。这些规则中,该Bucket既可以作为源Bucket,也可以作为目标Bucket。如果您的业务场景涉及更大数量的复制规则,请联系技术支持。
源Bucket和目标Bucket必须同时处于非版本化或启用版本控制状态,且处于同步状态下的两个Bucket不允许改变其版本控制状态。
关于跨区域复制的更多信息,请参见跨区域复制介绍。
1.登录MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,之后单击目标Bucket。
3.在左侧导航栏,选择冗余与容错 > 跨区域复制。
4.单击开启同步,在跨区域复制面板配置以下参数。
参数 | 说明 |
---|---|
源Bucket地域 | 显示您当前Bucket所在地域。 |
源Bucket | 显示您当前Bucket名称。 |
目标地域 | 选择目标Bucket所在地域。 |
目标Bucket | 选择开启数据同步的目标Bucket。 |
加速类型 |
加速类型仅支持传输加速。传输加速可
用于提升在中国内地与非中国内地之间跨 区域复制时的传输速度。开启传输加速功能,MOS还会额外收 取传输加速费用。计费方式,请参见传输加速费用。 |
数据同步对象 |
选择需要同步的源数据。
全部文件进行同步:将该Bucket内所有 的Object同步到目标存储空间。 指定文件名前缀进行同步:将该Bucket内指定前缀 的Object同步到目标Bucket。最多可以添加10个前缀。 |
Object标签 |
同步拥有指定标签的Object到目标Bucket。设置方法为选中设置规则后添加标签(键-值对),最多可添加10个标签。
要设置该参数,必须满足以下条件: 已设置Object标签。具体操作,请参见设置对象标签。 源Bucket和目标Bucket均已开启版本控制。 数据同步策略为增/改 同步。 源地域为华东1(杭州),目标地域为除华东1(杭州)以外的任何一个地域; 或者源地域为澳大利亚(悉尼),目标地域为除中国内地和澳大利亚(悉尼)以外的任何一个地域。 |
数据同步策略 |
选择数据同步的方式。
增/改 同步:仅将该Bucket内Object新增和更新操作同步到目标Bucket。 增/删/改 同步:将该Bucket内Object的新增、更新、删除操作同步到目标Bucket。 有关跨区域复制结合版本控制的行为说明,请参见跨区域复制结合版本控制。 |
同步历史数据 |
选择是否同步跨区域复制规则生效前源Bucket中已有的历史数据。
同步:将历史数据同步至目标Bucket。 说明 同步历史数据时,从源Bucket复制的Object可能会覆盖目标 Bucket中同名的Object。为避免这部分文件丢失,建议您对源Bucket和目标Bucket开启版本控制。 不同步:仅同步跨区域复制规则生效后上传或更新的Object。 |
KMS加密目标对象 |
在源Object或者目标Bucket使用了KMS托管密钥加密方式(即SSE-KMS,指定CMK
ID)的情况下,要将Object复制到目标Bucket,则必须选中KMS加密目标对象,并配置以下参数: 使用的KMS密钥:为目标Object指定加密的KMS密钥。 您需要提前在KMS平台创建一个与目标Bucket相同地域的KMS密钥。具体操作,请参见管理密钥。 授权角色:授权一个RAM角色对目标Object执行KMS加密操作。 新建角色:新建RAM角色对目标Object执行KMS加密,角色名称格式为kms-replication-源Bucket名称-目标Bucket名称。 ModuyunMOSRole:使用ModuyunMOSRole角色对目标Object执行KMS加密。若您之前未 创建ModuyunMOSRole角色,当您选择此项时,MOS将自动创建ModuyunMOSRole角色。
说明
|
5.单击确定。
当跨区域复制规则创建完成后,不允许对此规则进行编辑或删除。
同步任务会在跨区域复制规则配置完成的3~5分钟后启动。
您可以在源Bucket管理页面选择冗余与容错 > 跨区域复制查看同步进度。
由于Bucket间的跨区域复制采用异步(近实时)复制,数据
复制到目标Bucket需要的时间取决于数据的大小,通常几分钟到几小时不等。
您可以通过单击关闭同步来停止跨区域复制。
关闭同步后,已复制的数据将被保留在目标Bucket中,源Bucket中的增量数据将不再复制到目标Bucket。
版本控制是针对存储空间(Bucket)级别的数 据保护功能。开启版本控制后,针对数据的覆盖和删除操作将会以历史 版本的形式保存下来。您在错误覆盖或者删除文 件(Object)后,能够将Bucket中存储的Object恢复至任意时刻的历史版本。
版本控制功能本身不收取任何费用,但对当前版本和所有历史版 本的文件都会收取存储费用。此外,若您对历史版本文件进行下载或恢复等操作, 还会产生相应的请求费用、流量费用等。为避免不必要的存储费用, 请及时删除不再需要的历史版本文件。计费详情,请参见 计量项与计费项。
开启版本控制后,MOS会为Bucket中所有Object的每个版本指定唯一的versionId。
新建Bucket时开启版本控制。
i.登录MOS管理控制台。
ii.单击Bucket列表,然后单击创建Bucket。
iii.在创建Bucket页面配置各项参数。
其中,版本控制区域选择开通。其他参数的配置详情,请参见创建存储空间。
iv.单击确定。
对已创建的Bucket开启版本控制。
i.单击Bucket列表,然后单击目标Bucket名称。
ii.单击冗余与容错 > 版本控制。
iii.单击设置,然后版本控制状态选择开通。
iv.单击保存。
开启版本控制后,您可以在文件管理页面查看所有版本的文件。 如果仅需查看文件的当前版本,请将历史版本状态设置为隐藏。隐藏 历史版本并不能提升列举文件的性能,如果列举文件时页面响应过慢, 请参见响应速度下降排查并解决。
您可以将指定历史版本Object恢复为最新版本。
1.在Bucket管理页面,单击文件管理。
2.将指定历史版本的Object恢复为当前版本。
注意 同一个文件仅允许恢复其中的某个历史版本,且该历史版本不能为删除标记。
恢复单个文件
单击目标历史版本右侧的恢复。
恢复多个文件
选中目标历史版本,然后选择批量操作 > 恢复。
您可以下载指定版本Object。
1.在Bucket管理页面,单击文件管理。
2.单击目标版本的Object,在弹出的面板单击文件URL右侧的下载。
3.选择Object的保存位置,单击保存。
为了减少存储费用,建议您及时删除不再需要的历史版本Object。
警告 历史版本文件被删除后无法恢复,请谨慎操作。
1.在Bucket管理页面,单击文件管理。
2.找到不再需要的历史版本,单击右侧的彻底删除。
您也可以批量选中待删除的历史版本,单击批量操作 > 彻底删除。
3.单击确定。
您也可以通过配置生命周期规则,定期自动删除历史版本文件。具体操作,请参见 设置生命周期规则。
开启版本控制后,您还可以随时暂停版本控制以停止在Bucket中继续累积同一 Object的新版本。暂停版本控制后,MOS将为新生成的Object添 加versionId为null的版本,已有的历史版本Object将继续保留。
暂停Bucket的版本控制操作如下:
1.单击Bucket列表,然后单击要暂停版本控制的目标Bucket名称。
2.单击冗余与容错 > 版本控制。
3.单击设置,然后版本控制状态选择暂停。
4.单击保存。
用户在访问MOS资源时,会产生大量的访问日志。为 方便您的查询,您可以开启日志存储功能。MOS会将这个Bucket的 访问日志,以小时为单位,按照固定的命名规则,生成一个Object存放到您指定的Bucket中。
账号下至少有1对启用状态的AccessKey。
1.进入MOS 管理控制台界面。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击日志管理 > 日志转存。
4.单击设置,设置日志存储位置及日志前缀。
日志存储位置:下拉选择存储日志记录的存储空间名称,只能选择同一用户下同一数据中心的存储空间。
日志前缀:请填写日志生成的目录和前缀,日志将被记录到指定的目录下。例如:log/< TargetPrefix>,日志将被记录在log/目录下。
说明 有关存储日志记录格式及命名规则等详细信息,请参见日志存储。
5.单击保存。
用户在访问MOS的过程中,会产生大量的访问日志。实时日志查询功能将MOS与日志服务相结合, 允许您在MOS控制台直接查询MOS访问日志, 帮助您完成MOS访问的操作审计、访问统计、异常事件回溯和问题定位等工作,提升您的工作效率并更好地帮助您基于数据进行决策。
已开通日志服务
在日志服务产品页开通产品。
已授权日志服务访问MOS
单击云资源访问授权,按照提示完成授权操作。
使用实时日志功能会产生一定日志服务的费用:
实时日志查询免费提供最近7天的日志查询。若您设置的日志存储时间大于7天,则超过7天的部分,由日志服务单独收费。当您在外网读写日志服务时也会产生的额外费用。
实时日志查询免费提供900 GB/天的日志写入额度(如果一条访问日志为1 KB,约为9亿条),超过部分由日志服务单独收费。
具体收费标准,请参见日志服务计费方式。
您可以通过以下两种方式开通实时日志查询功能:
方式一:新建Bucket时开通
1.登录 MOS管理控制台。
2.在概览页面,单击右侧创建Bucket。
3.在创建Bucket对话框配置各项参数,在实时日志查询栏选择开通。
其他参数的配置请参见创建存储空间。
4.单击确定。
方式二:在功能配置页面开通
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击日志管理 > 实时查询。
4.单击立即开通。
MOS实时日志查询,免费提供最近7天内的日志查询。您可在单击日志页面右上角的设置日志保存时间,修改日志的保存时间。
您可以通过以下三种方式查询实时日志:
方式一:通过原始日志页查询
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击日志管理 > 实时查询。
4.单击原始日志,对日志进行分析。
您可以指定时间段和查询语句进行实时查询。例如可快速分析某一个字段(如API操作名称)在一段时间内的分布情况,您也可以按条件过滤或统计您希望查看的访问记录。
方式二:通过日志报表查询
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击日志管理 > 实时查询。
4.单击日志报表,对日志进行分析。
日志报表提供了4个开箱即用的报表。
访问中心:展示总体运营状况信息,包括PV、UV、流量以及外网访问地图分布等。
审计中心:展示文件操作的统计信息,包括文件读、写、删等操作统计。
运维中心:展示针对访问日志的统计信息,包括请求数量、失败操作的分布统计等信息。
性能中心:展示针对性能的统计信息,包括外网下载和上传性能分布、不同网络与文件大小的传输性能、文件下载差异列表等信息。
方式三:通过日志服务控制台查询
您可以在日志服务控制台查看MOS的访问日志,详情请参见MOS访问日志。
若您不再需要实时日志功能,可以选择关闭。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击日志管理 > 实时查询。
4.单击右上角关闭关联日志。
日志分析功能可用于分析目标存储空间(Bucket)的存储日志, 帮助您快速完成MOS的操作审计、访问统计、异常事件回溯和问题定位等工作。
日志分析已存在关联项目。
目前不允许通过创建新的关联项目来分析目标Bucket的存储日志。若日志分析未存在关
联项目,建议您使用实时日志查询功能,可免费查询和分析MOS最近7天的访问日志。更多信息,请参见实时日志查询。
说明 使用日志分析会产生一定的日志服务费用。更多信息,请参见产品定价和计费概述。
1.登录 MOS管理控制台。
2.单击左侧导航栏的常用服务推荐,然后单击更多服务。
3.鼠标悬停在日志分析区域,单击管理日志服务。
4.在日志分析页面,单击目标项目右侧的分析日志,分析已关联Bucket中的存储日志。
如需分析其他Bucket中的日志文件,您需要单击目标项目右侧的关联Buckets,为项目和目标Bucket建立关联。
5.使用日志分析语句分析日志。
例如查询日志中GET类请求的数量,可以使用* and GET | SELECT COUNT(*) as pv语句进行查询。更多信息,请参见查询语法。
您可以将多个图片处理参数封装在一个样式(Style)中,并通过样式快速实现复杂的图片处理操作。
一个存储空间(Bucket)最多可创建50个样式,这些样式仅可以作用于该Bucket下的图片文件。若您的业务有更多样式的需求,请联系技术支持。
1.登录MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,然后单击目标Bucket。
3.在左侧导航栏,选择数据处理 > 图片处理,然后单击新建样式。
4.在新建样式面板配置您的样式。
您可以使用基础编辑和高级编辑两种方式新建样式:
基础编辑:通过图形化界面选择您需要的图片处理方式,例如缩放图片、添加水印、修改图片格式等。
高级编辑:使用API代码编辑图片处理方式,格式为image/action1,parame_value1/action2,parame_value2/...。目前已支持的图片处理参数,请参见图片处理参数。
例如image/resize,p_63/quality,q_90表示先将图片缩放到原图的63%,再设置图片相对质量为90%。
说明 若您需要在样式中同时包含水印图片和水印文字的操作,请使用高级编辑新建样式。
5.单击确定。
样式创建完成后,您可以在当前Bucket使用样式处理您的图片文件。
1.在Bucket管理页面,单击文件管理。
2.单击目标图片名称。
3.在详情面板的图片样式下拉列表选择图片样式。
您可以在详情面板查看图片处理后的效果。右键单击图片,然后单击图片另存为,可将图片保存到本地。
您也可以在图片处理URL和SDK中加入样式。具体操作,请参见样式使用规则。
您可以导出源Bucket中已创建的样式,并将样式导入到目标Bucket,便于在目标Bucket中快速应用样式来处理图片文件。
1.在源Bucket中导出样式。
i.在源Bucket管理页面,选择数据处理 > 图片处理。
ii.单击导出样式。
iii.在另存为对话框选择样式的保存位置,然后单击保存。
2. 在目标Bucket导入样式。
i.在目标Bucket管理页面,选择数据处理 > 图片处理。
ii.单击导入样式。
iii.在打开对话框选择刚导出的样式文件,然后单击打开。
样式导入完成后,即可在目标Bucket中使用这些样式处理图片文件。
携带样式的图片处理URL通常包含文件访问URL、样式参数、
样式名称,例如https://image-demo-MOS-zhangjiakou.MOS-c
n-zhangjiakou.moduyuncs.com/example.jpg?x-MOS-process=style/small,
您可以通过自定义分隔符代替?x-MOS-process=style/字段以简化图片处理URL。
例如自定义分隔符设置为感叹号(!),图片处理URL可替换为:https://image-demo
-MOS-zhangjiakou.MOS-cn-zhangjiakou.moduyuncs.com/example.jpg!small。
1.在Bucket管理页面,选择数据处理 > 图片处理。
2.单击访问设置。
3.在访问设置面板选中您需要的自定义分隔符。
目前仅支持短划线(-)、下划线(_)、正斜线(/)、感叹号(!)。
4.单击确定。
您还可以为Bucket绑定自定义域名,以进一步简化图片处理URL。例如示例Bucket若绑定一个
自定义域名example.com,则示例URL可替换为https://example.com/example.jpg!small。绑定自
定义域名后,您还可以在线预览图片处理的效果。更多信息,请参见绑定自定义域名。
原图保护功能可以防止您MOS内允许匿名访问的图片文件被盗用。 开启原图保护后,匿名访问者只能使用携带样式参数的请求或通过签名URL访问原图。
仅可以通过以下方式访问开启原图保护的图片:
使用携带样式参数的文件URL访问,格式为:https://BucketName.Endpoint/ObjectName?x-MOS-process=style/StyleName。
使用携带签名的文件URL访问,格式为:https://BucketName.Endpoint/ObjectName?Signature。
1.登录 MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,之后单击目标Bucket名称。
3.在左侧导航栏,选择数据处理 > 图片处理,然后单击访问设置。
4.在访问设置面板打开原图保护开关,并设置以下参数:
参数 | 说明 |
---|---|
原图保护规则 |
设置被保护文件的前缀和后缀,设置时注意以下事项:
前缀和后缀可单独配置,也可以同时配置。同时配置时,文件名称需同时匹配前后缀才会生效。 存在多条规则时,文件名称匹配任意一条规则即可生效。最多可配置10条规则。 原图保护规则和原图保护后缀同时配置时,文件名匹配两者中的任一配置即可生效。 若选中忽略大小写,原图保护规则将忽略规则中的大小写。 说明 原图保护规则目前已在华东2(上海)地域公测,请联系技术支持申请试用。 |
原图保护后缀 | 在原图保护后缀下拉列表选择文件后缀,Bucket中所有匹配指定后缀的文件都会被保护。 |
5.单击确定。
问题一:MOS开启了原图保护,直接访问图片文件时会正常返回403,但是通过CDN来进行请求时原图保护无效,返回200。
这种情况有可能是CDN回源到了私有Bucket,造成原图保护失效。原图保护功能仅针对匿名访问文件有效,对于带签名的访问是无效的。
问题二:开启原图保护后,为什么通过签名后的URL仍可以访问原图?
原图保护仅针对允许匿名访问的文件,使用签名URL访问图片属于非匿名访问,所以开启原图保护后,使用签名后的URL仍然可以访问原图。
您可以使用智能媒体管理IMM处理存储在MOS上的文件, 支持文档预览、文档格式转换、人脸识别、图片分析、二维码识别等丰富的数据分析处理操作。
使用IMM时,需注意以下事项:
创建IMM项目及使用IMM功能会产生一定的费用。计费方式,请参见计费说明。
目前仅华北 2(北京)、华东 1(杭州)、华东 2(上海)、华南 1(深圳)、华北 3(张家口)、新加坡地域支持IMM。
1.开通IMM,并授予IMM访问MOS的权限。
i.登录MOS管理控制台。
ii.在左侧导航栏,单击Bucket列表,然后单击目标Bucket。
iii.选择数据处理 > 智能媒体。
iv.单击立即开通,并根据提示完成IMM的开通操作。
v.单击授权,并根据提示授予IMM访问MOS的权限。
2.绑定IMM。
i.您可以根据数据处理的需要,在需要绑定的IMM功能右侧单击绑定。
IMM提供以下三个功能:
文档预览:绑定该功能后,您可以对存储空间内的PPT、XLS、DOC、PDF等多种格式文档进行预览。更多信息,请参见文档预览。
人脸识别:绑定该功能后,您可以对存储空间内的图片进行检测,识别其中的人脸矩形框和属性。更多信息,请参见人脸识别。
图片识别:绑定该功能后,您可以对存储空间内的图片进行检测,识别其中的标签和置信度。更多信息,请参见图片识别。
ii.在绑定智能媒体项目面板的配置IMM配置。
IMM配置:选择绑定的IMM项目。取值如下:
创建默认Project:首次使用IMM时选中此项,并设置Project名称。
Project名称只能包含大小写字母、数字和短划线(-),且不能为ALL,长度不能超过50个字符。
绑定已有Project:若您在IMM已有项目时选中此项,并在智能媒体管理项目下拉列表选择已有项目。
iii.单击确定。
3.使用IMM处理MOS文件
i.在Bucket管理页面,单击文件管理。
ii.单击目标图片或文档名称,然后在详情面板使用IMM的相关功能。
对象存储MOS提供ZIP文件自动解压功能。配置解压规则后,您上传到MOS指定路径的ZIP文件都会被自动解压。
已开通函数计算服务。您可以在函数计算的产品详情页面开通函数计算服务。
ZIP包解压结合函数计算完成ZIP文件的解压工作,解压流程如下图所示。
匹配解压规则的ZIP文件在上传到MOS后,会自动触发函数计算进行解压。文件解压完成后,会存储至MOS的指定目录中。
使用ZIP包解压功能时需注意以下事项:
除华南2(河源)、华南3(广州)、华北6(乌兰察布)、阿联酋(迪拜)外,其他地域均已支持ZIP包解压。
建议使用UTF-8或GB 2312编码命名您的文件或文件夹,否则可能会出现解压后的文件或文件夹名称出现乱码、解压过程中断等问题。
归档或冷归档类型的文件需先解冻再解压。
解压单个压缩包的最大时间是10分钟,超过10分钟未完成的任务会解压失败。
ZIP包解压功能是增值服务,函数计算会根据解压执行时间计算费用。更多信息,请参见计费方式。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击目标Bucket名称。
3.单击数据处理 > ZIP包解压。
4.单击ZIP包解压,然后在ZIP包解压面板配置ZIP包解压规则。
参数说明
参数 | 是否必选 | 说明 |
---|---|---|
服务授权 | 是 |
授予函数计算读写MOS和执行函数的权限。
单击授权按钮,之后按照提示完成授权。 |
触发器授权 | 是 |
授予MOS访问函数计算的权限。
单击授权按钮,之后按照提示完成授 权。若已完成授权,此项显示为触发器角色。 |
前缀 | 否 |
配置触发函数计算的文件前缀。您上传指
定前缀的ZIP文件或将ZIP文件上传至指定目录 会触发函数计算。置空此项则匹配所有上传的ZIP文件。 说明 置空此项可能会触发循环执行,建议您配 置文件前缀。更多信息,请参见如何避免循环触发?。 |
目标目录 | 否 |
填写ZIP文件解压后存放的目录。置空此项,函数计算会将ZIP文件解
压到当前Bucket的根目录。若您需要在目标目录中保留ZIP文件名, 则选中保留压缩文件名为路径目录; 若您不需要保留ZIP文件名,直接将解压后的文件存放在目标 目录,则选中直接解压到目标目录中。配置详情请参见以下配置示例。 |
配置示例
场景 | 配置方法 | 解压后的文件结构 |
---|---|---|
所有上传至zipfolder目录的ZIP 包均解压到destfolder目录,不保留ZIP包名称。 |
前缀设置为zipfolder/。
目标目录设置为destfolder。 选中直接解压到目标目录中。 |
|
所有上传至zipfolder目录的ZIP包均解压到根目录,保留ZIP包名称。 |
您需要配置如下参数:
前缀设置为zipfolder/。 目标目录设置为空。 选中保留压缩文件名为路径目录。 |
|
所有上传至zipfolder目录的ZIP包均解压到destfolder目录,保留ZIP包名称。 |
您需要配置如下参数:
前缀设置为zipfolder/。 目标目录设置为destfolder。 选中保留压缩文件名为路径目录。 |
|
5.选中我已知晓并同意开通函数计算,通过函数计算处理 压缩文件。压缩文件里面的文件名或文件夹名不支持非UTF-8或GB 2312编码后,单击确定。
您可以根据自己的需求随时修改ZIP包解压的配置。
修改前缀
i.进入ZIP包解压页签。
ii.单击目标触发器右侧的编辑跳转到函数计算控制台。
iii.在弹出的修改触发器面板修改触发规则区域的前缀,其他参数建议保持默认。
iv.单击确定。
修改函数计算配置
i.进入ZIP包解压页签。
ii.单击目标触发器右侧的编辑跳转到函数计算控制台。
iii.在弹出的修改触发器面板单击取消。
iv.单击概览页签,之后单击修改配置。
v.在弹出的配置函数页面修改函数配置。
您可以根据实际需求修改函数执行内存、超时时间、环境变量:
函数执行内存:根据您处理的文件大小来选择,若您的ZIP文件较小,可以选择更小规格的函数执行内存来节省费用。
超时时间:函数在规定时间内未能执行,函数计算会返回超时错误。建议配置合适的超时时间,避免函数执行超时。
环境变量:修改此项的值会修改解压文件的目标目录。
vi.单击提交。
对于不需要的ZIP包解压规则,您可以手动删除。
1.进入ZIP包解压页签。
2.单击目标触发器右侧的编辑跳转到函数计算控制台。
3.在弹出的修改触发器面板单击取消。
4.单击触发器页签,之后单击目标触发器右侧的删除。
5.在弹出的对话框单击确定。
本文介绍如何通过对象存储MOS控制台查看MOS的资源使用情况。
您可以在MOS管理控制台查看以下资源的使用量:
基础数据:包括存储空间、使用流量和每小时请求数。
热点统计:包括PV/UV、热点Refer/IP。
区域和运营商统计:包括访问区域分布和运营商。
API统计:包括Method统计和返回码。
文件访问统计:包括文件访问相关的统计数据。
说明 目前仅中国各地域以及美国东部(弗吉尼亚)、美 国西部(硅谷)、新加坡地域支持热点统计、区域和运营商统计、API统计、文件访问统计。
本文以基础数据为例,介绍如何查看资源的使用量。
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.选择用量查询 > 基础数据。
页面下方显示以下三类基础数据使用量的图表:存储空间、使用流量和每小时请求次数。
存储空间
记录各时段存储空间存储量。
基础数据 | 说明 |
---|---|
标准存储-原始容量 | 标准存储类型的存储量。 |
存储占用量 | 各种存储的实际存储量。 |
存储总计费容量 | 各种存储的计费存储量。 |
使用流量
记录各时段存储空间使用流量。
基础数据 | 说明 |
---|---|
CDN回源流量流入 | 通过CDN服务层上传数据到MOS所产生的流量。 |
CDN回源流量流出 | 通过CDN服务层浏览或下载MOS的数据所产生的流量。 |
公网流入 | 通过互联网上传数据到MOS所产生的流量。 |
公网流出 | 通过互联网访问或下载MOS数据所产生的流量。 |
内网流入 | 通过摩杜云内网上传数据到MOS所产生的流量。 |
内网流出 | 通过摩杜云内网访问或下载MOS数据所产生的流量。 |
跨区域复制流量 | 使用跨区域复制功能将源Bucket的数据复制到目标Bucket时所产生的流量。 |
每小时请求数
记录每小时访问存储空间的请求次数,分为5XX错误、Put类请求和Get类请求。
5XX错误
记录客户端访问MOS时产生的5XX次数,例如常见的501、502、503错误等。
Put类请求
API请求 | 对应操作 |
---|---|
PutBucket | 创建存储空间(Bucket)。 |
GetService(ListBuckets) | 列举所有Bucket。 |
GetBucket(ListObject)、GetBucketV2(ListObjectsV2) | 列举所有Object。 |
PutBucketACL | 为Bucket设置读写权限ACL。 |
PutBucketInventory | 为Bucket配置清单规则。 |
DeleteBucketInventory | 删除Bucket中指定的清单任务。 |
PutBucketLogging | 开启日志转存。 |
DeleteBucketLogging | 关闭日志转存。 |
PutBucketWebsite | 为Bucket设置静态网站托管模式并设置跳转规则(RoutingRule)。 |
DeleteBucketWebsite | 关闭Bucket的静态网站托管模式以及跳转规则。 |
PutBucketReferer | 为Bucket设置Referer的访问白名单以及是否允许Referer字段为空。 |
PutBucketLifecycle | 设置生命周期规则。 |
DeleteBucketLifecycle | 删除生命周期规则。 |
DeleteBucket | 删除Bucket。 |
PutObject | 上传Object。 |
CopyObject | 在同一地域下相同或不同Bucket之间拷贝Object。 |
AppendObject | 以追加写的方式上传Object。 |
DeleteObject | 删除单个Object。 |
DeleteMultipleObjects | 删除多个Object。 |
PutObjectACL | 为Object设置读写权限ACL。 |
PostObject | 通过HTML表单上传的方式上传Object。 |
PutSymlink | 创建软链接。 |
RestoreObject | 解冻归档类型Object。 |
InitiateMultipartUpload | 初始化Multipart Upload事件。 |
UploadPart | 根据指定的Object名称和UploadId来分块(Part)上传数据。 |
AbortMultipartUpload | 取消MultipartUpload事件并删除对应的Part数据。 |
UploadPartCopy | 分片拷贝。 |
PutBucketReplication | 为Bucket配置跨区域复制规则。 |
DeleteBucketReplication | 停止某个Bucket的跨区域复制任务并删除Bucket的复制配置。 |
PutBucketCors | 添加CORS配置。 |
DeleteBucketCors | 删除CORS配置。 |
CompleteMultipartUpload | 完成分片上传。 |
InitiateBucketWorm | 为Bucket创建合规保留策略。 |
AbortBucketWorm | 删除未锁定的合规保留策略。 |
CompleteBucketWorm | 锁定合规保留策略。 |
ExtendBucketWorm | 延长已锁定的合规保留策略对应Bucket中Object的保留天数。 |
PutBucketVersioning | 为Bucket开启版本控制。 |
PutBucketPolicy | 设置Bucket Policy。 |
DeleteBucketPolicy | 删除Bucket Policy。 |
PutBucketTags | 为Bucket添加或修改标签。 |
DeleteBucketTags | 删除Bucket标签。 |
PutBucketEncryption | 为Bucket配置加密规则。 |
DeleteBucketEncryption | 删除Bucket加密规则。 |
PutBucketRequestPayment | 为Bucket设置请求者付费模式。 |
PutObjectTagging | 为Object添加或修改标签。 |
DeleteObjectTagging | 删除Object标签。 |
PutLiveChannel | 创建一个LiveChannel。 |
DeleteLiveChannel | 删除指定的LiveChannel。 |
PutLiveChannelStatus | 切换LiveChannel状态。 |
PostVodPlaylist | 为LiveChannel生成用于点播的播放列表。 |
Get类请求
API请求 | 对应操作 |
---|---|
GetBucketLocation | 查看Bucket所属的数据中心。 |
GetBucketInfo | 查看Bucket的相关信息。 |
GetBucketLogging | 查看Bucket的访问日志配置。 |
GetBucketWebsite | 查看Bucket的静态网站托管配置。 |
GetBucketReferer | 查看Bucket的Referer配置。 |
GetBucketLifecycle | 查看Bucket的Lifecycle配置。 |
GetBucketReplication | 查看Bucket已配置的跨区域复制规则。 |
GetBucketReplicationLocation | 查看数据可复制到的目标Bucket所在的地域。 |
GetBucketReplicationProgress | 查看跨区域复制进度。 |
GetBucketInventory | 查看Bucket指定的清单任务。 |
ListBucketInventory | 查看Bucket所有的清单任务。 |
GetObject | 下载Object。 |
CopyObject | 复制Object。 |
HeadObject | 查看Object包含的所有meta信息。 |
GetObjectMeta | 查看Object包含的部分meta信息。 |
GetObjectACL | 查看Object的读写权限ACL。 |
GetSymlink | 查看软链接。 |
ListMultipartUploads | 列举所有执行中的Multipart Upload事件。 |
ListParts | 列举上传成功的Part。 |
UploadPartCopy | 分片拷贝。 |
GetBucketcors | 查看Bucket的CORS配置。 |
GetBucketWorm | 查看Bucket的合规保留策略配置。 |
GetBucketVersioning | 查看Bucket的版本控制状态。 |
GetBucketVersions(ListObjectVersions) | 查看Bucket中所有Object的版本信息。 |
GetBucketPolicy | 查看Bucket Policy配置。 |
GetBucketReferer | 查看防盗链配置。 |
GetBucketTags | 查看Bucket的标签信息。 |
GetBucketEncryption | 查看Bucket的加密配置。 |
GetBucketRequestPayment | 获取请求者付费模式配置。 |
SelectObject | 扫描文件。 |
GetObjectTagging | 查看Object的标签信息。 |
ListLiveChannel | 查看所有LiveChannel的信息。 |
GetLiveChannelInfo | 查看指定LiveChannel的信息。 |
GetLiveChannelStat | 查看指定LiveChannel的推流状态信息。 |
GetLiveChannelHistory | 查看指定LiveChannel的推流记录。 |
GetVodPlaylist | 查看指定LiveChannel在指定时间段内推流生成的播放列表。 |
4.在图表上方选择资源使用量的时间粒度。
5.以每小时请求次数为例,说明基础数据的查看方法。
图表下方默认显示5xx错误、PUT类型以及GET类型基础数据。您可以选择
隐藏不需要显示的数据。例如,单击5xx错误,则图表将只显示PUT类型和GET类型基础数据。
在对象存储MOS中,用户操作的基本数据单元是对象(Object),单个Object的大小限制为48.8TB,一个存储空间中可以有无限量的对象。
您在特定的地域创建存储空间(Bucket)后,上传到该存储空间的Object将一直保存在该地域,MOS不会保留副本或将其移动到其他任何地域,除非您手动将其迁移到另一地域。只要您具有访问权限,就可以从任何地方访问这些对象。
您必须拥有存储空间写入权限,才能将文件上传到MOS中。上传的Object在控制台上对用户展现形式为文件或文件夹。本部分内容将向您介绍如何使用控制台创建、管理和删除文件及文件夹。
您可以通过MOS控制台上传大小不超过5 GB的文件。
已创建存储空间(Bucket)。详情请参见创建存储空间。
如要上传超过5 GB的文件,建议通过SDK或API的分片上传和断点续传、图形化管理工具MOSbrowser或者命令行工具MOSutil。 金融云下的MOS没有公网地域,无法通过控制台上传文件,请通过SDK、MOSutil、MOSbrowser等方式上传。
1.登录MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.在文件管理页签,单击上传文件。
4.在上传文件面板,按如下说明配置各项参数。
i.设置基础选项。
参数 | 说明 |
---|---|
上传到 |
设置文件上传到目标Bucket后的存储路径。
当前目录:将文件上传到当前目录。 指定目录:将文件上传到指定目录,您需要输入目录名称。若 输入的目录不存在,MOS将自动创建对应的文件目录并将文件上传到该目录中。 目录命名规范如下: 请使用符合要求的UTF-8字符;长度必须在1~254字符之间。 不允许以正斜线(/)或反斜线(\)开头。 不允许出现连续的正斜线(/)。 不允许出现名为 .. 的目录。 |
文件ACL |
设置文件读写权限ACL。
继承Bucket:以Bucket读写权限为准。 私有(推荐):只有文件Owner拥有该文件的读写权限,其他用户没有权限操作该文件。 公共读:文件Owner拥有该文件的读写权限,其他用户(包括匿名访问者)都可以对文件进行访问,这有可能造成您数据的外泄以及费用激增,请谨慎操作。 公共读写:任何用户(包括匿名访问者)都可以对文件进行访问,并且向该文件写入数据。这有可能造成您数据的外泄以及费用激增,若被人恶意写入违法信息还可能会侵害您的合法权益。除特殊场景外,不建议您配置公共读写权限。 有关文件ACL的更多信息,请参见Object ACL。 |
上传加速 |
开启Bucket传输加速后,如果您希望加速上传文件,请打开上传加速开关。
有关传输加速的更多信息,请参见传输加速。 |
待上传文件 |
选择您需要上传的文件或文件夹。
您可以单击扫描文件或扫描文件夹选择本地文 件或文件夹,或者直接拖拽目标文件或文件夹到待上传文件区域。 如果上传文件夹中包含了无需上传的文件,请 单击目标文件右侧的移除将其移出文件列表。
说明
|
ii.可选:设置文件存储类型、加密方式等高级选项。
参数 | 说明 |
---|---|
存储类型 |
设置文件存储类型。
继承Bucket:以Bucket存储类型为准。 标准存储:适用于访问量较高的文件。 低频访问存储:适用于月均访问频率低于1~2次的文件,最少需存储30天,且访问文件时会产生数据取回费用。 归档存储:适用于基本不被访问的归档文件,最少需存储60天。文件需解冻(约1分钟)后访问,解冻会产生数据取回费用。 冷归档:适用于一些需要长期存储的备份文件、原始数据等,最少需存储180天。文件需解冻后访问,解冻时间根据数据大小和选择的解冻模式决定,解冻会产生数据取回费用。 更多详情,请参见存储类型介绍。 |
服务端加密方式 |
设置文件的服务端加密方式。
继承Bucket:以Bucket的服务器端加密方式为准。 MOS完全托管:使用MOS托管的密钥进行加密。MOS会为每个Object使用不同的密钥进行加密,作为额外的保护,MOS会使用定期轮转的主密钥对加密密钥本身进行加密。 KMS:使用KMS默认托管的CMK或指定CMK ID进行加解密操作。KMS对应的加密秘钥说明如下: alias/acs/MOS:使用默认托管的CMK生成不同的密钥来加密不同的Object,并且在Object被下载时自动解密。 CMK ID:使用指定的CMK生成不同的密钥来加密不同的Object,并将加密Object的CMK ID记录到Object的元信息中,具有解密权限的用户下载Object时会自动解密。选择指定的CMK ID前,您需在KMS管理控制台创建一个与Bucket相同地域的普通密钥或外部密钥。 加密算法:可选择AES256或SM4加密算法。 有关文件ACL的更多信息,请参见Object ACL。 |
用户自定义元数据 |
用于为Object添加描述信息。您可以添加多条自定义
元信息(User Meta),但所有的自定义元信息总大小不能超过8 KB。 添加自定义元信息时,要求参数以x-MOS-meta-为前缀, 并为参数赋值,例如x-MOS-meta-location:hangzhou。 |
iii.单击上传文件。
此时,您可以在上传列表页签查看各个文件的上传进度。
当您希望按实际业务场景对上传至存储空间(Bucket)下的 文件(Object)进行合理归类时,您需要创建目录,然后 将目标文件存放至指定目录。本文介绍如何在MOS控制台创建目录。
已创建存储空间。具体操作,请参见创建存储空间。
MOS内部使用扁平结构存储数据,不使用传统文件系统中的层级结构,所 有数据均以对象(Object)的形式保存在存储空间(Bucket)中。为方便您对 Object进行分组并简化管理,MOS管理控制台默认将以正斜线(/)结尾的对象作 为文件目录的形式展现。该对象同样可以上传及下载,您可以在MOS控制 台中使用类似于Windows文件夹的操作方式来使用MOS文件目录。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.单击文件管理。
4.在文件管理页面,单击新建目录。
5.在新建目录对话框,输入目录名。
6.单击确定。
当您向存储空间(Bucket)上传了大量的文件(Object)时,MOS支持通过指定文件名前缀快速搜索并定位目标文件。
搜索规则
按文件名前缀进行搜索,搜索的字符串区分大小写,并且不能包含正斜线(/)。
搜索结果
在某一Bucket根目录或目标文件夹下按文件名前缀搜索时,结果中仅显示与文件名前缀
匹配的文件或子文件夹,无法查看子文件夹下包含的文件。更多信息,请参见列举文件。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.在左侧导航栏,单击文件管理。
4.搜索文件。
搜索Bucket根目录下的指定文件或文件夹
您可以在右上角搜索框中输入指定的文件名前缀,按回车键或单击search图标。此时,您可以查看Bucket根目录下与指定前缀匹配的文件和文件夹。
以下示例阐述了在目标Bucket(TestBucket)中指定文件前缀(Example)搜索后,获取到的查询结果。
文件结构 指定文件前缀 查询结果
TestBucket Example Examplesrcfolder1
└── Examplesrcfolder1 Exampledestfolder.png
├── test.txt
├── abc.jpg
└── Exampledestfolder.png
└── example.txt
搜索目标文件夹下的指定文件或子文件夹
您可以单击目标文件夹,然后在右上角搜索框中输入指定的文件名前缀,
按回车键或单击search图标。此时,您可以查看目标文件夹下与指定前缀匹配的文件和子文件夹。
以下示例阐述了在目标文件夹(Examplesrcfolder1)中指定文件前缀(Project)搜索后,获取到的查询结果。
文件结构 指定文件前缀 查询结果
Examplesrcfolder1 Project Projectfolder
└── Projectfolder ProjectA.jpg
├── a.txt ProjectB.doc
├── b.txt
└── ProjectA.jpg
└── ProjectB.doc
└── projectC.doc
对象存储MOS提供对象(Object)级别的文件读写权限ACL,用以控制Object的访问权限。本文介绍如何在MOS控制台设置Object的ACL。
已创建了存储空间。详情请参见
创建存储空间。
已在存储空间中上传了文件。详情请参见
上传文件。
您可以在上传对象时设置相应的ACL权限控制,也可以在上传之后修改ACL。如果不设置ACL,默认值为继承Bucket。
继承Bucket:Object的读写权限按Bucket的读写权限为准。
私有:只有该存储空间的拥有者可以对该存储空间内的Object进行读写操作,其他人无法访问该存储空间内的Object。
说明 您可以通过文件URL将您存储空间内的私有Object分享给您的合作伙伴访问,详情请参见在URL中包含签名。
公共读:只有该存储空间的拥有者可以对该存储空间内的Object进行写操作,任何人(包括匿名访问者)可以对该存储空间中的文件进行读操作。
公共读写:任何人(包括匿名访问者)都可以对该存储空间中的Object进行读写操作,所有这些操作产生的费用由该存储空间的拥有者承担,请慎用该权限。
更多关于Object ACL的信息请参见Object ACL。
1.登录MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签。
4.单击目标Object的文件名,在该Object的预览对话框单击设置读写权限。
您也可以将鼠标移至目标Object右侧的更多,在下拉菜单单击设置读写权限。
5.在弹出的设置读写权限对话框设置Object的读写权限。
6.单击确定。
MOS提供标准、低频访问、归档、冷归档四种存储类型,不同存储类型的访问方式、 费用等都有区别,您可以根据您的实际需求,选择合适的文件 存储类型。本文主要介绍如何在对象存储MOS控制台修改文件的存储类型。
通过控制台修改文件存储类型时,文件大小不能超过1 GB。超过1 GB的文件,建议通过MOSutil工具修改。
归档存储和冷归档存储类型的文件需要解冻后才可以修改存储类型。
修改文件存储类型实际是通过覆写操作,将文件修改为指定的存储类型。所以,若修改的文件是
低频访问、归档存储、冷归档存储类型,且存储未满指定天数的,会产生存储不足规定时长容量费用,详情请参见存储费用。
1.进入 MOS管理控制台。
界面。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签。
4.鼠标移至目标文件后的更多,在下拉菜单中单击修改存储类型。
5.选择您希望修改的存储类型后,单击确定。
建议您打开保留用户自定义元数据开关,修改存储类型后,文件的自定义元数据信息会被保留。
Bucket Policy是摩杜云MOS推出的针对Bucket的授权策略,您可以通过Bucket Policy授权其他用户访问您指定的MOS资源。
Bucket拥有者可以在MOS控制台通过图形化和策略语法两种方式配置Bucket Policy。
通过策略语法的方式配置Bucket Policy前,您需要先了解MOS
Action、Resource以及Condition分类信息。详情请参见RAM Policy概述。
您可以添加多条Bucket Policy,但所有Bucket Policy的大小不允许超过16 KB。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击目标Bucket名称。
3.单击文件管理页签,然后单击授权。
您也可以通过单击权限管理 > Bucket授权策略 > 设置,添加授权策略。
4.在图形设置页面,单击新增授权。
5.在新增授权页面配置各项参数,然后单击确定。
配置项 | 说明 |
---|---|
授权资源 |
授权整个Bucket或Bucket内的部分资源供其他用户访问。
整个Bucket:授权策略针对整个Bucket生效。 指定资源:授权策略只针对指定的资源生效。您可以配置多条针对指定资源的授权策略。 针对目录级别授权 授权访问目录下的所有子目录和文件时,需在目录结尾处加上星号(*)。例如授权访问abc目录下的所有子目录和文件,则填写为abc/*。 针对指定文件授权 授权访问目录下的指定文件时,需填写不包含Bucket名称在内的文件的完整路径,例如授权访问abc目录下的myphoto.png文件,则填写为abc/myphoto.png。 |
授权用户 |
通过选择不同类型的账号将资源授权给不同用户进行访问。
匿名账号(*):如果您需要给所有用户授权访问指定资源,请选中此项。 子账号:如果您需要给当前账号下的RAM用户授权访问指定资源, 请选中此项,并从下拉菜单中选择目标RAM用户。若需要授权的RAM用户 较多时,建议直接在搜索框输入RAM用户名称关键字进行模糊匹配。 说明 您的账号必须是摩杜云账号,或拥有此Bucket管理权限及RAM控制台ListUsers权限 的RAM用户,否则无法查看当前账号的RAM用户列表。给RAM用户 授予ListUsers权限的具体操作请参见为RAM用户授权。 其他账号:如果您需要给其他摩杜云账号、RAM用户以及通过STS生成的临时用户授予访问权限,请选中此项。 当您需要给其他摩杜云账号或RAM用户授权时,请输入被授权账号的UID。 当您需要给STS临时用户授权时,输入格式为arn:sts::{RoleOwnerUid}:assumed-r ole/{RoleName}/{RoleSessionName}。例如生成临时用 户时使用的角色为testrole,角色拥有者的摩杜云账号UID为12345,生成临时 用户时指定的RoleSessionName为testsession。此时应填写arn:sts::12345:assumed-r ole/testrole/testsession。当您需要给所有临时用户授权时,请使用通配符星号(*)。例 如配置为arn:sts::*:*/*/*。生成临时授权用户的操作请参见STS临时授权访问MOS。 说明 当被授权的用户是STS临时用户时,该账号无法通过MOS控 制台访问授权资源,您可以通过命令行工具MOSutil、MOS SDK、MOS API访问授权资源。 |
授权操作 |
您可以通过简单设置和高级设置两种方式进行授权操作。
简单设置 选中此项后,您可以结合实际场景按照如下说明配置相应的 访问权限。将鼠标悬停在每一种访问权限右侧对应的mark,可获取各访问权限对应的Action列表。 只读:对相关资源拥有查看、列举及下载权限。 读/写:对相关资源有读和写权限。 完全控制:对相关资源有读、写、删除等所有操作权限。 拒绝访问:拒绝对相关资源的所有操作。 说明 若针对某用户同时配置了多条Bucket Policy规则,则该用户所拥有的权 限是所有Policy规则的叠加。当这些Bucket Policy中包含拒绝访问权限时, 遵循拒绝访问权限优先原则。例如针对某用户第一次设置了只读权限,第二次设置了 读/写权限,则该用户最终的权限为读/写。如果第三次设置了拒绝访问权限,则该用户最终的权限为拒绝访问。 高级设置选中此项后,您需要根据以下说明完成相关配置。 效力:包含允许(Allow)和拒绝(Deny)两种授权效力。 操作:支持配置所有MOS支持的Action。有关Action分类的更多信息,请参见RAM Policy概述。 |
条件(可选) |
您还可以在基础设置和高级设置模式下选中此项,用于限定只有满足条件的用户能够访问MOS资源。
访问方式:选中HTTPS或HTTP的访问方式。 IP =:设置IP等于某个IP地址或IP地址段。如 有多个IP地址,各个IP地址之间用英文逗号(,)分隔。 IP ≠:设置IP不等于某个IP地址或IP地址段。如有多 个IP地址,各个IP地址之间用英文逗号(,)分隔 。 |
6.单击确定。
1.登录MOS管理控制台。
2.单击Bucket列表,然后单击目标Bucket名称。
3.单击文件管理页签,然后单击授权。
4.在策略语法页面,单击编辑。
您可以根据实际使用场景,编辑不同的策略语法,用于实现更精细的权限管
理。以下为资源拥有者(UID为174649585760xxxx)为不同授权场景配置的Bucket Policy示例。
允许匿名用户列举存储空间examplebucket下所有文件的权限。
{
"Statement": [
{
"Action": [
"MOS:ListObjects",
"MOS:ListObjectVersions"
],
"Effect": "Allow",
"Principal": [
"*"
],
"Resource": [
"acs:MOS:*:174649585760xxxx:examplebucket"
]
},
],
"Version": "1"
}
示例2:拒绝源IP地址不在192.168.0.0/16范围内的匿名用户对存储空间examplebucket执行任何操作
{
"Version": "1",
"Statement": [
{
"Effect": "Deny",
"Action": "MOS:*",
"Principal": [
"*"
],
"Resource": [
"acs:MOS:*:174649585760xxxx:examplebucket"
],
"Condition":{
"NotIpAddress": {
"acs:SourceIp": ["192.168.0.0/16"]
}
}
}
]
}
示例3:允许指定的RAM用户(UID为20214760404935xxxx)拥 有目标存储空间examplebucket下hanghzou/2020和hanghzou/2015目录的只读权限。
{
"Statement": [
{
"Action": [
"MOS:GetObject",
"MOS:GetObjectAcl",
"MOS:GetObjectVersion",
"MOS:GetObjectVersionAcl"
],
"Effect": "Allow",
"Principal": [
"20214760404935xxxx"
],
"Resource": [
"acs:MOS:*:174649585760xxxx:examplebucket/hanghzou/2020/*",
"acs:MOS:*:174649585760xxxx:examplebucket/hangzhou/2015/*"
]
},
{
"Action": [
"MOS:ListObjects",
"MOS:ListObjectVersions"
],
"Condition": {
"StringLike": {
"MOS:Prefix": [
"hanghzou/2020/*",
"hangzhou/2015/*"
]
}
},
"Effect": "Allow",
"Principal": [
"20214760404935xxxx"
],
"Resource": [
"acs:MOS:*:174649585760xxxx:examplebucket"
]
}
],
"Version": "1"
}
5.单击保存。
Bucket Policy配置完成后,您可以通过以下方式访问授权资源:
文件URL(仅当授权对象为匿名用户时)
在浏览器上,使用Bucket默认域名或自有域名加文件路径进行访问。例
如http://mybucket.MOS-cn-beijing.moduyuncs.com/file/myphoto.png。详情请参见MOS访问域名使用规则。
控制台
登录MOS控制台,在左边菜单栏单击我的访问路径后的加号(+),添加授权访问的Bucket和文件路径。具体操作,请参见设置我的访问路径。
命令行工具MOSutil
使用被授权的账号通过MOSutil访问授权资源。具体操作,请参见MOSutil。
图形化工具MOSbrowser
使用被授权的账号登录MOSbrowser,登录时在预设MOS路径栏输入被授权访问的文件目录。具体操作,请参见MOSbrowser。
MOS SDK
支持通过Java、PHP、Node.js、Python、Browser.js、.NET、Android、Go、iOS、C++、C
SDK访问授权资源。
当文件(Object)上传至存储空间(Bucket)后,您可以将 文件下载至浏览器默认路径或本地指定路径。本文介绍如何通过 控制台的方式在未开启版本控制的Bucket中下载文件。
对于归档或者冷归档存储类型的Object,需要确认Object处于“解冻”状态才能对其进行下载。具体操作,请参见 解冻文件。
1.登录 MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,然后单击目标Bucket名称。
3.在左侧导航栏,单击文件管理,然后下载单个或多个文件。
下载单个文件
方式一:选择目标文件右侧的更多 > 下载。
方式二:单击目标文件的文件名或其右侧的详情,在弹出的详情面板中单击下载。
下载多个文件
选中多个文件,选择批量操作 > 下载。通过MOS控制台可一次批量下载最多100个文件。
有关如何在受版本控制的Bucket中下载文件的具体操作,请参见版本控制。
文件(Object)上传至存储空间(Bucket)后,您可以通过文件URL将文件分享给第三方预览或下载。
1.登录 MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,之后单击目标Bucket名称。
3.在左侧导航栏,单击文件管理。
4.获取文件URL。
获取单个文件URL
a.单击目标文件名称。
b.在详情面板配置以下参数,然后单击复制文件URL。
参数 | 说明 |
---|---|
过期时间 |
当目标文件为私有文件时,需设置文件URL的有效时间。
取值范围:60~32400 单位:秒 若您希望获取更长时效的文件URL,建议使用命令行工具MOSutil或图形化工具MOSbrowser。 |
自有域名 |
如需确保第三方访问图片或网页文件时是预览行为,请使用Bucket绑定的自定义域名生成文件URL。
仅当Bucket绑定自定义域名后可配置此项。更多信息,请参见绑定自定义域名。 |
使用HTTPS | 默认使用HTTPS协议生成文件URL。如需使用HTTP协议生成文件URL,请关闭使用HTTPS开关。 |
批量获取文件URL
a.选中目标文件,然后选择批量操作 > 导出URL列表。
b.在导出URL列表面板配置以下参数:
参数 | 说明 |
---|---|
使用HTTPS | 默认使用HTTPS协议生成文件URL。如需使用HTTP协议生成文件URL,请关闭使用HTTPS开关。 |
过期时间 |
当目标文件为私有文件时,需设置文件URL的有效时间。 取值范围:60~32400 单位:秒 若您希望获取更长时效的文件URL,建议使用命令行工具MOSutil或图形化工具MOSbrowser。 |
自有域名 |
如需确保第三方访问图片或网页文件时是预览行为,请使用Bucket绑定的自定义域名生成文件URL。
仅当Bucket绑定自定义域名后可配置此项。更多信息,请参见绑定自定义域名。 |
传输加速域名 |
若第三方涉及跨国或跨洋等超远距离文件访问场景时,建议使用传输加速域名生成文件URL。
仅当Bucket开启传输加速后可配置此项。更多信息,请参见开启传输加速。 |
c.单击确定,然后将URL列表文件保存到本地。
5.将文件URL分享给第三方预览或下载。
您可以使用MOS的定时备份功能将存储空间(Bucket)内的文 件(Object)定期备份到混合云备份服务HBR中,当您的Obj ect意外丢失时,可通过HBR进行恢复。
已开通HBR。您可以在混合云备份产品页开通此功能。
已授权HBR读取MOS数据。在混合云备份管理控制台单击MOS备份,之后按步骤完成授权。
使用定时备份时,会产生如下费用:
MOS的请求费用
每次备份任务开始前,HBR会使用ListObject接口获取Object列表。每1000个Object产生1次API请求。
获取Object列表后,HBR会通过HeadObject接口获取目标文件的元信息。每个Object产生1次API请求。
备份文件时,HBR会通过GetObject接口备份文件。每个Object产生1次API请求。
备份文件时,HBR会通过ListObject接口获取备份进度并校验文件,每1000个Object产生1次API请求。
MOS API请求的计费方式,请参见请求费用。
备份低频访问类型文件时会产生低频访问数据取回费用。计费方式,请参见低频访问数据取回费用。
存储备份文件会产生HBR备份库存储容量费用。计费方式,请参见计费方式与计费项。
不支持为归档和冷归档存储类型的Bucket配置定时备份。
不支持备份和恢复软链接(Symlink)、归档和冷归档存储类型的Object以及Object的读写权限ACL。
仅华东1(杭州)、华东2(上海)、华南1(深圳)、华北2(北京)、华北3(张家口)、
中国(香港)、新加坡、澳大利亚(悉尼)、印度尼西亚(雅加达)、美国(硅谷)地域支持定时备份功能。
1.登录 MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,之后单击目标Bucket。
3.在左侧导航栏,选择文件管理 > 定时备份。
4.单击备份Bucket。
5.配置备份计划。
配置免费备份计划
HBR为MOS定时备份提供30天的免费试用期,试用期内不会产
生HBR的相关费用。若您希望免费试用定时备份功能,请在创建备份计划面板配置以下参数:
参数 | 说明 |
---|---|
备份MOS Bucket | 显示当前Bucket名称。 |
备份计划名称 |
设置备份计划名称,长度不得超过64个字符。
可不填,HBR会根据当前时间生成备份计划名称。 |
备份起始时间 | 选择备份开始执行的时间。 |
到期付费续用 |
选择免费备份服务到期后,是否执行到期付费续用。
否:免费备份计划到期后自动停止,已备份文件会在到期一周后删除。 是:免费备份计划到期后自动转为付费使用,HBR将按照备份文件大小收取备份库存储容量费用。 |
以上配置会创建一个每天执行一次,备份文件保存一周的备份计划。
配置付费备份计划
若您希望手动指定备份执行间隔、备份目标文件、备份保留天数等,可以配置付费备份计划。
a.在创建备份计划面板,单击显示高级设置。
b.单击立即转为付费使用,然后单击确定。
c.配置以下参数:
参数 | 说明 |
---|---|
备份MOS Bucket | 显示当前Bucket名称。 |
备份计划名称 |
设置备份计划名称,长度不得超过64个字符。
可不填,HBR会根据当前时间生成备份计划名称。 |
备份起始时间 | 选择备份任务开始执行的时间。 |
备份Bucket Prefix | 设置目标Object前缀,备份任务 只备份拥有指定前缀的Object。置空时备份整个Bucket。 |
备份执行间隔 | 选择备份任务的执行频率。时间单位:天、周。 |
备份保留策略 |
选择备份的保留策略。
指定保留时间:HBR将按您指定的时间保留备份文件,并在到期后自动删除备份文件。 永久:您的备份文件会被永久保存。 |
备份保留时间 |
设置备份文件保留的时间。时间单位:天、周、月、年。
仅在备份保留策略为指定保留时间时设置。 |
备份库配置 |
设置备份文件存放的备份库。
创建新备份库:若您在HBR中没有备份库,或您希望将 当前备份任务生成的备份文件存放在新的备份库时,您可以创建一个新的备份库。 选择已有备份库:若您在HBR中已有备份库,且您希望将当 前备份任务生成的备份文件存储在指定备份库中,您可以选择已有备份库。 |
6.单击确定。
1登录 MOS管理控制台。
2在左侧导航栏,单击Bucket列表,之后单击创建Bucket。
3在创建Bucket面板填写各项参数。
其中,选择定时备份为开通。其他参数说明,请参见创建存储空间。
4单击确定。
Bucket创建成功后,会自动创建一个每天备份一次、备份文件保存一周的备份计划。此备份计划可免费试用30天,您可以选择文件管理 >
定时备份,查看或修改已创建的计划。
文件元信息是对文件的属性描述,包括HTTP标准属性(HTTP Header)和用户自定义元数据(User Meta)两种。您可以通过设置文件HTTP头来自定义HTTP请求的策略,例如文件(Object)缓存策略、强制下载策略等。您还可以通过设置用户自定义元数据来标识Object的用途或属性等。
使用MOS管理控制台每次可批量设置100个Object的文件元信息。如需为更多Object同时设置文件元信息,请使用MOSutil。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket。
3.单击左侧导航栏的文件管理。
4.通过以下任意方式打开设置HTTP头面板。
设置批量Object的HTTP头
选中一个或多个Object,然后选择批量操作 > 设置HTTP头。
设置单个Object的HTTP头
在目标Object右侧选择更多 > 设置HTTP头。
5.在设置HTTP头页面,按以下说明配置各项参数。
参数 | 说明 |
---|---|
Content-Type |
声明Object的文件类型,浏览器根据文件类型决
定Object的默认打开方式。例如GIF类型的图片设置为image/gif。 不同文件类型对应的Content-Type设置,请参见 如何设置Content-Type(MIME)?。 |
Content-Encoding |
声明Object的编码方式。您需要按照Object 的实际编码类型填写,否则可能
造成客户端(浏览器)解析编码失败或Object下载失败。若Object未编码,请置空此项。取值如下: identity(默认值):表示Object未经过压缩或编码。 gzip:表示Object采用Lempel-Ziv(LZ77)压缩算法以及32位CRC校验的编码方式。 compress:表示Object采用Lempel-Ziv-Welch(LZW)压缩算法的编码方式。 deflate:表示Object采用zlib结构和deflate压缩算法的编码方式。 br:表示Object采用Brotli算法的编码方式。 有关Content-Encoding的更多信息,请参见RFC2616。 说明 如果您希望访问MOS内常见网页静态文件(HTML、Javascript、XML、json)时进行Gzip压缩,您 需要置空此项,并在请求中增加Accept-Encoding: gzip。具体操作,请参见MOS的Gzip压缩如何使用?。 |
Content-Language | 声明Object内容使用的语言。例如某个Object使用简体中文编写,此项可设置为zh-CN。 |
Content-Disposition |
指定Object的访问形式。取值如下:
inline:直接在浏览器中打开Object。 如需确保通过浏览器访问图片或网页文件时是预览行为,除设 置Content-Disposition为inline外,您还必须使用Bucket绑定的自 定义域名进行访问。有关绑定自定义域名操作,请参见绑定自定义域名。 attachment:将Object下载到本地。例如attachment; filename="example.jpg",表示下载Object到本地并以example.jpg文件名进行保存。 有关Content-Disposition的更多信息,请参见RFC2616。 |
Cache-Control |
指定Object的缓存配置。取值如下:
no-cache:Object允许被缓存在客户端或代理服务器的浏览器中,但每次访问时需要向MOS验证缓存是否可用。缓存可用时直接访问缓存,缓存不可用时重新向MOS请求。 no-store:所有内容都不会被缓存。 public:所有内容都将被缓存。 private:所有内容只在客户端缓存。 有关Cache-Control的更多信息,请参见RFC2616。 |
Expires | 缓存内容的绝对过期时间,格式是格林威治时间(GMT)。例 如2022-10-12T00:00:00.000Z。若Cach e-Control设置了max-age=< seconds>,以max-age=< seconds>为准。 |
用户自定义元数据 | 用于为Object添加描述信息。您可以添加多条自定 义元数据(User Meta),但所有的自定义元数据总大小不能超过8 KB。添 加自定义元数据时,要求以x-MOS-meta-为前缀,并 为参数赋值,例如x-MOS-meta-last-modified:20200909u。 |
6.单击确定。
如果您需要访问归档或冷归档类型的文件, 必须先对文件进行解冻操作。本文主要介绍如何通过对象存储MOS控制台解冻归档和冷归档类型文件。
解冻文件会产生数据取回费用。详情请参见
计量项和计费项。
关于归档和冷归档存储类型的介绍请参见
存储类型介绍。
1.进入 MOS管理控制台。
界面。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签。
4.找到您希望解冻的文件,鼠标移至文件后的更多,在下拉菜单中单击解冻。
归档存储类型文件
解冻需要约1分钟时间,解冻成功后,文件变为解冻状态。
解冻状态默认持续1天,您可以通过MOSutil工具或SDK延长解冻时间,最多延长7天,之后文件又回到冷冻状态。
冷归档存储类型文件
您需要设置解冻参数:
副本有效期:设置文件解冻状态的持续时间,可设置1~7天。有效期结束后文件又回到冷冻状态。
恢复模式:选择解冻模式,不同模式的解冻费用和解冻时间均不相同。
高优先级:1小时内完成解冻。
标准:2~5小时完成解冻。
批量:5~12小时完成解冻。
根据解冻文件的大小,实际解冻时间可能会有变化,请以实际解冻时间为准。
MOS允许对文件(Object)进行重命名操作。
重命名文件时有如下注意事项:
重命名文件操作实际是通过CopyObject接口来实现。
MOS控制台仅支持重命名1 GB以下的文件,1 GB以上的文件建议使用MOSutil工具。
对于已开启版本控制的Bucket,仅在历史版本设为隐藏后才允许执行重命名操作。将文件重命名后,原有的文件会增加删除标记。
若重命名文件操作涉及的Object类型为低频、归档、冷归档存储类型且存储未满规定时长,则会产生存储不足规定时长容量费用。更多详情,请参见存储费用。
1.登录
MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.单击文件管理,将鼠标指针悬停在目标文件上,然后单击图标edit,对文件进行重命名。重命名时,文件名称需包含后缀。
利用 MOS Select,您可以使用简单的SQL语句从MOS 的单个文件中选取内容,仅获取所需要的数据,从而减少从 MOS传输的数据量,提升您获取数据的效率。
目前支持RFC 4180标准的CSV(包括TSV等类CSV文件,文件的行列分隔符以及Quote字符都可自定义)和JSON文件,且文件编码为UTF-8。
通过控制台可以对128MB以下的文件提取40MB以下的数据记录。如果您需要处理更大的文件或返回更多的记录,请使用 API:SelectObject。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签。
4.选择目标文件对应的更多 > 选取内容。
5.在选取内容页面设置相关参数。
文件类型:按文件实际情况选择文件的类型,可选项为:CSV和JSON。
分隔符(针对CSV文件):选择逗号(,)或自定义分隔符。
标题行(针对CSV文件):选择文件第一行是否包含列标题。
JSON格式符(针对JSON文件):选择您的JSON文件对应的格式。
压缩格式:选择您当前的文件是否为压缩文件。目前压缩文件仅支持GZIP文件。
6.单击显示文件预览可预览文件。
说明
预览文件会产生Select扫描费用。
标准存储类型:Select扫描费用
低频访问、归档存储类型:Select扫描费用和数据取回费用。
7.单击下一步,输入SQL语句并执行。
说明 关于SQL语句的使用说明,请参见SelectObject API文档中的常见SQL用例。
8.查看执行结果。单击下载,下载所选取的内容到本地。
假如名为People的CSV文件,有3列数据,分别是姓名、公司和年龄。
如果想查找年龄大于50岁,并且名字以Lora开头的人(其中_1,_2,_3是
列索引,代表第一列、第二列、第三列),可以执行如下SQL语句:
select * from MOSobject where _1 like 'Lora*' and _3 > 50
如果想统计这个文件有多少行,最大年龄与最小年龄是多少,可以执行如下SQL语句:
select count(*), max(cast(_3 as int)), min(cast(_3 as int)) from MOSobject
本文介绍如何通过对象存储MOS控制台设置文件(Object)的软链接。
软链接功能用于快速访问对象存储空间内的常用文件。设置软链接后,您可以通过软链接文件快速打开源文件,类似于Windows的快捷方式
说明 仅支持对标准存储类型的文件设置软链接。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.找到需要设置软链接的文件,单击文件右侧更多 > 设置软连接。
4.在设置软链接对话框,填写软链接文件名,然后单击确定。
源文件(全路径):显示您当前文件的完整路径。
软链接文件目录:按照软链接文件目录命名规范填写软链接名称。MOS将根据您的命名情况在根目录或指定目录创建软链接文件。
在根目录创建软链接文件:直接填写自定义的软链接文件名,不添加文件路径。例如源文件为user/myphoto/myphoto.jpg,命名为myphoto.jpg。MOS会在根目录创建一个名为myphoto.jpg的软链接文件。
在指定目录创建软链接文件:填写文件名的时候,使用正斜线(/)添加文件路径。例如源文件为user/myphoto/myphoto.jpg,命名为shortcut/myphoto.jpg,MOS会在指定的shortcut/目录创建一个名为myphoto.jpg的软链接文件。
说明 若设置的软链接文件名未包含文件扩展名,例如文件myphoto.jpg的软链 接文件名为myphoto,通过控制台或URL访问该软链接文件时可正常预览。通 过工具或控制台下载该软链接文件时,因文件无文件扩展名,下载后是一 个未知文件,无法直接打开,需要添加正确的文件扩展名方可打开。
对象存储MOS支持使用对象标签(Object Tagging)对存储的对象(Object)进行分类。对象标签使用一组键 值对(Key-Value)标记Object,您可以批量操作拥有相同标签的Object,例如针对拥有相同标签的Object设置生命周期规则。
对象标签使用一组键值对(Key-Value)标记对象,您可以批量管理拥有相同标签的对象,例如针对相同标签的对象设置生命周期规则、授权RAM用户访问拥有相同标签的对象等,详情请参见对象标签。
单个文件最多可设置10个标签,Key不可重复。
每个Key长度不超过128字节,每个Value长度不超过256字节。
Key和Value区分大小写。
标签合法字符集包括大小写字母、数字、空格和以下符号:
+‑=._:/
只有Bucket拥有者和授权用户拥有读写对象标签的权限,该权限不受对象ACL控制。
跨区域复制时,对象标签也会复制到目的端。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签。
4.鼠标移至目标Object右侧的更多,在下拉菜单单击标签。
5.在弹出的标签页面设置对象标签。
6.单击确定。
本文介绍如何通过对象存储MOS控制台删除存储空间(Bucket)内的文件。
您可以通过MOS控制台删除单个文件或批量删除文件。通过控制台 批量删除文件个数上限为100。如果想更灵活的选择删除的文件,或实现更大批量的删除,请参见开发指南中的 删除文件。
说明 文件删除后无法恢复,请谨慎操作。
1.登录 MOS管理控制台。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理。
4.选择一个或多个文件,选择批量操作 > 删除。
您也可以选择目标文件右侧的更多 > 删除来删除单个文件。
5.在删除文件对话框中,单击确定。
您可以在对象存储MOS管理控制台删除存储空间(Bucket)中的目录,该操作会将目录及目录下的文件一起删除。
删除目录前,请确保目录下需要的文件已移除,防止文件被误删。
当目录下的文件数量较多时,删除目录下的文件会占用大量时间,建议通过生命周期规则删除。详情请参见
设置生命周期规则。
1.登录 MOS管理控制台。
2.单击左侧导航栏的Bucket列表,然后单击目标Bucket名称。
3.单击文件管理页签,然后根据您的需求删除目标目录。
说明 删除目录及文件期间,请勿刷新或关闭任务列表,否则会导致任务中断。
Bucket未开启版本控制
单击目标目录右侧的彻底删除,然后在弹出的对话框单击确认。
此时,目录及其目录下的文件会被彻底删除。
Bucket已开启或暂停版本控制
将目录转为历史版本
a.在文件列表右上角,将历史版本设置为隐藏。
b.单击目标目录右侧的删除,然后在弹出的对话框单击确认。
此时,删除的目录及目录下的文件会被转为历史版本,您可以在需要时对目录和文件进行恢复。恢复历史版本文件的具体操作,请参见恢复历史版本Object。
将目录彻底删除
a.在文件列表右上角,将历史版本设置为显示。
b.单击目标目录右侧的彻底删除,然后在弹出的对话框单击确认。
此时,目录及其目录下的文件会被彻底删除。
4.在弹出的任务列表面板查看删除进度。
删除任务进行期间,您可以进行以下操作:
移除已完成:单击可移除列表中已完成的删除任务。
全部暂停:单击可暂停正在进行中的删除任务。任务暂停期间,您可以进行以下操作:
单击目标任务右侧的开始,可以重新开始任务。
单击目标任务右侧的移除,可以移除该任务。任务移除后,未删除的文件将继续保留。
全部开始:单击可开始全部暂停中的删除任务。
进行分片上传时,文件(Object)会被切成若干个Part,这些Part被称为碎片。当您将这些Part上传到MOS服务端后,可以调用CompleteMultipartUpload将这些碎片(Part)组合成一个完整的Object。
使用支持断点续传的MOS管理工具传输文件时,也会产生Part。
您可以通过调用CompleteMultipartUpload,将这些Part组合成一个完整的Object。MultipartUpload使用详情请参考简介。
您可以通过设置生命周期管理来定时清理不需要的Part,此配置可以用于清理Bucket中长期没有完成CompleteMultipartUpload的Part,减少空间占用。具体操作请参见设置生命周期规则。
Part在完成Object组合前,不能被读取。删除Bucket时,必须先删除Object和Part。碎片主要是由分片上传操作产生,具体可参见API文档简介 。
1.进入MOS 管理控制台界面。
2.单击Bucket列表,之后单击目标Bucket名称。
3.单击文件管理页签,然后单击碎片管理。
4.在碎片管理页面,删除碎片文件。
如果要删除该存储空间所有的碎片文件,单击删除所有。
如果要删除部分碎片文件,选择或搜索碎片文件,然后单击删除。
5.在弹出的清空或删除确认对话框中,单击确定。
MOS的存储空间(Bucket)内部是扁平的,没有文件系统的文件夹等概念。若您希望像使用本地文件夹和磁盘那样使用MOS,您可以通过云存储网关将MOS的Bucket作为文件系统挂载至MCS实例中使用。
已开通云存储网关服务,并授予访问MOS、MCS及VPC的权限。
已创建与目标Bucket同地域的专有网络VPC和交换机。操作步骤,请参见使用专有网络和使用交换机。
已创建与MOS同地域的MCS实例。操作步骤,请参见创建MCS实例。
解冻归档或冷归档类型文件
通过云存储网关访问未解冻的归档或冷归档类型文件时,文件会被自动解冻。归档类型文件解冻需要约1分钟;冷归档类型文件解冻需要1小时以上。基于使用协议不同,解冻时的访问情况如下:
NFS协议:访问文件时会触发解冻操作,并在文件完成解冻后继续访问操作。
SMB协议:访问文件时会触发解冻操作,并返回报错信息。您需要在文件解冻完成后再次访问。
支持地域
华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华北3(张家口)、华北5(呼和浩特)、华南1(深圳)地域。
有关云存储网关的详细介绍,请参见什么是云存储网关CSG。
1.登录 MOS管理控制台。
2.单击Bucket列表,然后单击目标Bucket名称。
3.选择文件管理 > MCS挂载MOS,然后单击配置云存储网关。
4.在选择/创建项目步骤选择网关集群,然后单击下一步。
若没有已存在的网关集群,请单击创建网关集群进行创建。集群命名规则与下一步中网关名称命名规则一致。
5.在选择/选择网关步骤配置以下参数,然后单击下一步。
参数 | 说明 |
---|---|
网关名称 |
填写云存储网关的名称。
只能以大小写字母或者中文开头,且只能 包含大小写字母、中文、数字或字符._-,最大支持60个字符。 |
所在网络 | 选择挂载Bucket的MCS实例所在的VPC和交换机。选择后,Bucket仅允许挂载至该VPC内的MCS实例上。 |
网关规格 |
根据您挂载的Bucket的容量及访问需求带宽选择合适的网关规格。
例如您Bucket内文件不超过1000万个,容量不超过64 TB,且读 写带宽需求不超过1 Gbps时,可以选择基础型。网关规格的详细介绍,请参见产品规格。 |
类型 | 选择文件网关,Bucket将作为文件系统挂载至MCS实例。 |
数据缓存区容量 | 设置数据缓存的容量大小,不能小于40 GB。 云存储网关将使用指定大小的MCS存储空间缓存热数据, 以保障数据访问的性能。 |
6.在配置协议步骤配置以下参数,然后单击下一步。
参数 | 说明 |
---|---|
协议类型 |
选择文件网关使用的协议类型。
NFS:适用于Linux系统。 SMB:适用于Windows系统。 |
共享名称 |
设置Bucket挂载后的网络共享名称。
只能以大小写字母开头,且只能包含大小写 字母、数字或字符._-。最大支持32个字符。 |
用户映射 |
设置NFS客户端访问挂载文件夹时使用的用户身份。仅当协议类型为NFS时配置。
NONE:所有用户都以自己登录NFS客户端的身份访问挂载文件夹。 ROOT_SQUASH:root用户以匿名用户身份nfsnobody访问挂载文件夹。 ALL_SQUASH和ALL_ANOMNYMOUS:所有用户都以匿名用户身份nfsnobody访问挂载文件夹。 MOS通过云存储网关挂载到MCS实例后,所有用户对MOS文件都有可读、可写、可执行的权限,您可以根据以下需求设置用户映射: 若您需要进行权限管理,先将用户映射设置为NONE,然后使用root用户进行权限管理。具体步骤,请参见设置文件访问权限。 若您无需进行权限管理,可选择任意映射方式。 |
反向同步 |
是否将Bucket中文件的元信息同步到本地。
说明 反向同步功能会扫描Bucket中所有文件,会产生一定的API请求费用。计费详情,请参见请求费用。 |
1.在购买链接对话框中,单击跳转购买链接。
2.在云存储网关购买页面,设置公网带宽和购买数量,然后单击立即购买。
云存储网关的详细计费信息,请参见
计量项和计费项。
云存储网关购买完成后,您需要通过MCS实例挂载目标Bucket。以下步 骤以NFS协议的云存储网关挂载Bucket为例,若您需要使用 SMB协议的云存储网关挂载Bucket,请参见访问SMB共享目录。
1.在Bucket管理页面,选择文件管理 > MCS挂载MOS。
2.在云存储网关的列表中,查看目标网关的服务器挂载点信息。
3.登录同地域Linux系统的MCS实例。
登录方式,请参见通过密码认证登录Linux实例。
4.使用NFS挂载命令挂载目标Bucket。
例如Bucket服务器挂载点为172.16.0.2:/test,本地文件夹名为mnt/nfs/,则挂载命令为:
mount.nfs 172.16.0.2:/test mnt/nfs/
5.访问目标Bucket。
您可以使用NFS命令通过挂载后的文件夹访问目标Bucket。示例如下:
列举Bucket根目录的文件,命令如下:
ls mnt/nfs/
下载Bucket根目录example.txt文件到本地根目录,命令如下:
cp mnt/nfs/example.txt example.txt
1.使用root身份登录NFS客户端。
2.设置文件访问权限。
以授予nfsnobody用户(默认UID和GID为4294967294)只读访问example.txt文件为例,步骤如下:
i.将example.txt文件所属组修改为nfsnobody组,命令如下:
chgrp -R 4294967294 example.txt
ii.为nfsnobody组授予example.txt文件的只读权限,命令如下:
chmod 444 example.txt
3.可选:修改用户映射。
权限配置完成后,建议您将用户映射修改为ROOT_SQUASH、ALL_SQUASH或ALL_ANOMNYMOUS,以限制root用户的权限。
i.登录云存储网关控制台。
ii.单击网关列表,然后单击目标网关名称。
iii.单击共享,然后在共享列表页面单击操作列的设置。
iv.在NFS共享设置对话框,根据您的需求修改用户映射。
v.单击确定。
您可以通过MOS的敏感数据保护功能对存储空间(Bucket)内存储的海量数据进行识别、分类和分级,并根据等保2.0规定对识别到的敏感数据进行安全审计和保护。
敏感数据主要包括个人隐私信息、密码密钥、企业敏感信息等高价值数据,这些数据通常会以不同的格式存储在您的MOS
Bucket中,一旦发生泄漏,会给企业带来重大的经济和名誉损失。敏感数据识别可以在您完成授权后,从您存储在MOS的海量数据中快速发现和定位敏感数据,对敏感数据自动梳理、自动分类分级并统一展示,以便您随时了解MOS数据资产的安全状态。
有关敏感数据保护分类分级标准、所需权限、支持地域、计费说明等更多信息,请参见敏感数据保护。
1.登录 MOS管理控制台。
2.在左侧导航栏,单击Bucket列表,然后单击目标Bucket。
3.在左侧导航栏,单击数据安全,然后单击授权并开通。
初次开启敏感数据保护时,MOS会对指定Bucket内存储的数据进行全量扫描并收取扫描费用。完成初次扫描的时间因扫描的数据量会存在差异,请间隔一段时间后查看扫描结果。敏感数据扫描完成后,您可以查看各等级敏感数据的占比以及Top
5的敏感数据类型等信息。
当您对多个Bucket进行敏感数据扫描后,您可以通过单击左侧导航栏的数据安全,查看所有扫描过的Bucket数据,如下图所示:
操作 | 说明 |
---|---|
查看敏感数据详情 | 如果您需要查看被命中文件的敏感数据类型、敏感等级、命中规则和命中数量等,您可以单击目标文件右侧的命中详情 |
搜索指定文件 | 如果您想快速查看与指定字段匹配的文件包含的敏感信息,您可以在搜索栏输入文件名称关键字,然后单击搜索。 |
修改扫描设置 | 初次扫描任务完成后,如果您仅需要扫描该Bucket中新增或修改的数据,您可以单击扫描设置定义自动扫描周期和自动扫描开始时间。 |
关闭敏感数据扫描 | 如果您已完成敏感数据识别,且后续不需要进行增量数据的识别,您可以单击关闭扫描。 |
保护敏感数据 | 对于扫描出的敏感数据,您可以结合等保V2.0的要求和业务的实际需要,通过加密、设置访问权限等方式对数据进行安全审计或保护。 |
MOS加速器用于缓存MOS中的热点文件,并提供高性能、高吞吐 量的数据访问服务。适用于基因训练、机器学习、数据湖、大数据计算等需要大量带宽,且数据重复读的场景。
说明 加速器功能目前在华东2(上海)地域公测,请联系技术支持申请试用。
1.创建加速器。
i.登录 MOS管理控制台。
ii.单击MOS加速器,之后单击创建MOS加速器。
iii.在创建MOS加速器面板设置加速器参数。
参数 | 说明 |
---|---|
MOS加速器名称 | 设置加速器的名称。长度必须在3~63字节之间。 |
可用区 | 选择加速器可用区。 |
加速域名 | 用于访问加速器的加速域名。 |
加速器容量 | 设置加速器的缓存大小,单位TB。 填写的数值必须大于等于20,且是5的整数倍。 |
吞吐能力 | 显示加速器当前的吞吐能力。吞吐能力=加速器容量(TB)×200 MB/s/TB。 |
iv.单击确定。
2.设置加速策略。
i.单击目标加速器右侧的设置加速路径。
ii.在设置加速路径面板配置如下参数:
参数 | 说明 |
---|---|
Bucket名称 |
选择加速器对应的目标Bucket。
说明 如果目标Bucket此前已被其他加速器加速,此操作会覆写先前的配置。 |
策略 |
选择加速器的策略:
指定路径加速:指定文件目录访问路径,最多 可添加10条。指定后,加速器将只加速指定目录下 的文件。例如您需要加速根目录下example目录的文件,则填写example/。 加速整个Bucket:加速Bucket内所有文件。 |
iii.单击保存。
您还可以单击新增,按如上配置步骤新增多个使用加速器的目标Bucket。
您可以随时对加速器进行扩容或缩容。
1.在MOS加速器页面单击目标加速器右侧的编辑。
2.在修改MOS加速器面板修改加速器容量。
加速器扩容或缩容的值必须是5的整数倍,且加速器的最低容量不得低于20 TB。扩容约1分钟完成,缩容约1小时完成。
MOS高防是MOS结合DDoS高防推出的DDoS攻击代理防护服务。当受保护 的存储空间(Bucket)遭受大流量攻击时,MOS高防会将攻击流量牵引至 高防集群进行清洗,并将正常访问流量回源到目标Bucket,确保业务的正常进行。
Bucket已绑定自定义域名。操作步骤,请参见绑定自定义域名。
MOS高防已在华东1(杭州)、华东2(上海)、华北1(青岛)、华北2(北京)、华南1(深圳)地域公测,请联系技术支持申请试用。
您在使用MOS高防时需注意以下事项:
高防MOS实例创建后需至少使用7天,若实例在7天内被删除,MOS会收取剩余时间的高防基础资源费用。
每个地域可以创建一个高防MOS实例,每个实例最多只能绑定同一地域下的10个Bucket。
更多信息,请参见MOS高防。
1.创建高防MOS实例。
i.登录 MOS管理控制台。
ii.在左侧导航栏,单击MOS高防。
iii.单击创建高防MOS实例。
iv.在创建高防MOS实例面板选择目标地域。
v.单击确认。
2.绑定Bucket。
i.单击目标实例右侧的查看和绑定Buckets。
ii.在查看和绑定Buckets面板,单击绑定高防Buckets。
iii.在绑定高防Buckets面板的高防Buckets下拉列表,选择需要绑定的Bucket。
已被高防MOS实例绑定或未绑定自定义域名的Bucket不会在高防Buckets下拉列表显示。
iv.单击确定。
绑定后,Bucket处于初始化状态。待状态更新为防护中时,表明高防MOS实例已对Bucket开始实施保护。
当用户访问MOS出现错误时,MOS会返回给用户一个HTTP状态码, 以及application/xml格式的消息体,便于用户定位问题,并做出适当的处理。
错误响应的消息体示例如下:
< ?xml version="1.0" ?>
< Error xmlns=”http://doc.MOS-cn-hangzhou.moduyuncs.com”>
< Code>
AccessDenied
< /Code>
< Message>
Query-string authentication requires the Signature, Expires and MOSAccessKeyId parameters
< /Message>
< RequestId>
1D842BC54255****
< /RequestId>
< HostId>
MOS-cn-hangzhou.moduyuncs.com
< /HostId>
< /Error>
所有错误的消息体中都包含以下几个元素:
Code:MOS返回给用户的错误码。
Message:MOS给出的详细错误消息。
RequestId:用于唯一标识该次请求的UUID。您可以凭借此RequestId请求协助,排查并解决您遇到的问题。
HostId:用于标识访问的MOS集群,与用户请求时使用的Host一致。
如果在MOS支持的操作中添加了MOS不支持的参数,例如PUT操作中添加了If-Modified-Since参数,MOS将返回400 Bad Request错误。
错误请求示例如下:
PUT /abc.zip HTTP/1.1
Host: bucketname.MOS-cn-shanghai.moduyuncs.com
Accept: */*
Date: Thu, 11 Aug 2019 01:44:50 GMT
If-Modified-Since: Thu, 11 Aug 2019 01:43:51 GMT
Content-Length: 363
返回示例如下:
HTTP/1.1 400 Bad Request
Server: moduyunMOS
Date: Thu, 11 Aug 2019 01:44:54 GMT
Content-Type: application/xml
Content-Length: 322
Connection: keep-alive
x-MOS-request-id: 57ABD896CCB80C366955****
x-MOS-server-time: 0
< ?xml version="1.0" encoding="UTF-8"?>
< Error>
< Code>NotImplemented< /Code>
< Message>A header you provided implies functionality that is not implemented.< /Message>
< RequestId>57ABD896CCB80C366955****< /RequestId>
< HostId>bucketname.MOS-cn-shanghai.moduyuncs.com< /HostId>
< Header>If-Modified-Since< /Header>
< /Error>
更多MOS错误码信息,请参见MOS错误中心。
203错误
400错误
403错误
404错误
405错误
409错误
411错误
412错误
416错误
424错误
500错误
503错误
本文介绍MOS返回203错误的原因和解决方案。
错误信息:Get image info failed.
错误原因:MOS未能成功获取到图片信息,该图片可能上传失败或已被删除。
解决方案:
图片上传失败,请调用PutObject接口重新上传。
检查请求的图片是否触发了生命周期配置的删除规则,或者确认其他具有合法权限的用户是否删除了请求的图片。
错误信息:Too many callback requests.
错误原因:MOS正在处理的Callback请求过多。
解决方案:请稍后重试。
错误信息:Cost too long time.
错误原因:回调服务器处理时间超过5秒,MOS将其判断为超时行为。
解决方案:建议回调服务器的处理逻辑修改为异步,保证在5秒内处理完毕并将结果返回MOS。
错误信息:Response body is not valid json format.
错误原因:回调服务器返回给MOS的Body不为JSON格式。
解决方案:请参见上传回调中的常见错误及分析处理进行排查。
错误信息:Error Status : 400.User server return too long content-length value.
错误原因:应用服务器返回MOS的响应中没有携带Content-Length的Header,Body大小超过1 MB。
解决方案:应用服务器返回MOS的响应中必须携带Content-Length的Header,且Body大小不允许超过1 MB。
例如,如下返回示例中携带了Content-Length的Header,且Body为{"a":"b"},大小不超过1 MB。
HTTP/1.0 200 OK
Server: BaseHTTP/0.3 Python/2.7.6
Date: Mon, 14 Sep 2015 12:37:27 GMT
Content-Type: application/json
Content-Length: 9
{"a":"b"}
错误信息:Error Status : -1.MOS can not connect to your callbackUrl, please check it.
错误原因:MOS无法访问用户的应用服务器。
解决方案:请检查用户的应用服务器是否能正常运行,且与MOS之间的网络通讯是否正常。
错误消息:Error Status : 400.User server missing content-length.
错误原因:应用服务器返回MOS的响应中没有携带Content-Length的Header。
解决方案:应用服务器返回MOS的响应中必须携带Content-Length的Header。
错误信息:Error Status : 400.User server return invalid conent-length value.
错误原因:应用服务器返回MOS的响应中没有携带Content-Length的Header,或者Content-Length的值不为正整数。
解决方案:应用服务器返回MOS的响应中必须携带Content-Length的Header,且Content-Length的值必须为正整数。
例如,如下返回示例中携带了Content-Length的Header,且Content-Length的值为正整数9。
HTTP/1.1 200 OK
Date: Mon, 14 Sep 2015 12:37:27 GMT
Content-Type: application/json
Content-Length: 9
Connection: keep-alive
ETag: "D8E8FCA2DC0F896FD7CB4CB0031B****"
Server: moduyunMOS
x-MOS-bucket-version: 1442231779
x-MOS-request-id: 55F6BF87207FB30F2640****
{"a":"b"}
本文介绍MOS返回400错误的原因和解决方案。
错误消息:The specified bucket is not valid.
错误原因:Bucket命名不符合规范。
解决方案:检查并确保Bucket命名符合规范。
Bucket命名规范如下:
只包含小写字母、数字和短划线(-)。
以小写字母或者数字开头和结尾。
长度在3~63字节之间。
错误消息:
The Object name can not be empty.
The Length of Object name must be less than 1024.
The specified object is not valid.
错误原因:Object命名不符合规范。
解决方案:检查并确保Object命名符合规范。
Object命名规范如下:
使用UTF-8编码。
长度在1~1023字节之间。
不是以正斜线(/)或者反斜线(\)开头。
错误消息:You have attempted to create more buckets than allowed.
错误原因:同一摩杜云账号在同一地域内创建的Bucket数量已达到最大值100个。
解决方案:如需调整Bucket数量上限,请联系摩杜云客服
错误消息:Bucket POST must be of the enclosure-type multipart/form-data.
错误原因:Post操作提交表单编码不是multipart/form-data类型。
解决方案:Post操作提交表单编码必须为multipart/form-data,即Header中Content-Type为multipart/form-data;boundary=xxxxxx形式,boundary为边界字符串。详情请参见PostObject。
错误消息:A header you provided implies functionality that is not implemented.
错误原因:封装API时传递了错误的或者不支持的参数。
解决方案:请参见API概览中相应的API,填写正确的参数格式。
错误消息:Missing Some Required Arguments.
错误原因:封装API时缺少必选参数。
解决方案:请参见API概览中相应的API,补充必选参数。
错误消息:Invalid Argument. Parameter is invalid.
错误原因:参数格式不符合要求。
解决方案:请参见API概览中相应的API,填写正确的参数格式。
错误消息:The callback signature version is invalid.
错误原因:签名版本不支持。
解决方案:请确认当前签名为1.0或2.0版本。
错误消息:Copy Source must mention the source bucket and key:
/sourcebucket/sourcekey.
错误原因:拷贝文件时,没有指定源Bucket和源Object。
解决方案:拷贝文件时,需按照/sourcebucket/sourcekey的格式指定拷贝的源地址参数x-MOS-copy-source。例如源Bucket为examplebucket,源Object为exampleobject,则拷贝文件时x-MOS-copy-source应指定为/examplebucket/exampleobject。
错误消息:KMSMasterKeyID is not applicable if the default sse algorithm is not KMS.
错误原因:当SSEAlgorithm取值为AES256时,填写了KMSMasterKeyID。
解决方案:仅当SSEAlgorithm取值为KMS且使用指定的密钥加密时,需填写KMSMasterKeyID。
错误消息:KMSMasterKeyID is not applicable if user is not in white list.或者SM4 is not
applicable if
user is not in white list.
错误原因:用户无操作权限。
解决方案:只有Bucket拥有者或者授权的RAM用户才能为Bucket设置加密规则。详情请参见PutBucketEncryption。
错误消息:No such bucket storage class exists.
错误原因:指定的Bucket存储类型不存在。
解决方案:MOS仅支持Standard(标准存储)、低频访问(IA)、Archive(归档)和ColdArchive(冷归档)四种存储类型。详情请参见PutBucket。
错误消息:Invalid version id specified.
错误原因:指定的Object版本ID无效。
解决方案:请通过GetBucketVersions
(ListObjectVersions)接口确认Bucket是否已开启版本控制,以及Object填写的版本ID是否正确。
错误消息:Version id can not be the empty string.
错误原因:未指定VersionId字段。
解决方案:请在VersionId字段中填写Object的版本ID。详情请参见GetBucketVersions(ListObjectVersions)。
错误消息:
Authorization header is invalid.
Authorization header is invalid, bad num of Items in Authorization header.
AccessKeyId or Signature is missing in Authorization header value.
Authorization header value is empty.
Unknown parameter in Authorization header.
错误原因:Authorization头部计算方法中参数填写不规范。
解决方案:Authorization头部计算方法如下:
Authorization = "MOS " + AccessKeyId + ":" + Signature
Signature = base64(hmac-sha1(AccessKeySecret,
VERB + "\n"
+ Content-MD5 + "\n"
+ Content-Type + "\n"
+ Date + "\n"
+ CanonicalizedMOSHeaders
+ CanonicalizedResource))
参数 | 说明 |
---|---|
AccessKeySecret | 用于加密签名字符串的密钥。 |
VERB | 表示HTTP请求的Method,主要有PUT、GET、POST、HEAD、DELETE等。 |
\n | 换行符。 |
Content-MD5 |
表示请求内容的MD5值,可用于检查消息合法性,例如消息内容是否与发送时一致。
有关Content-MD5的详细计算方法的更多信息,请参见Content-MD5的计算方法。 |
Content-Type | 表示请求内容的类型。例如application/octet-stream,也可以为空。 |
Date | 表示此次操作的时间,且必须为GMT格式。例如Sun, 22 Nov 2015 08:16:38 GMT。 |
CanonicmoduzedMOSHeaders | 所有以x-MOS-为前缀的HTTP Header。 |
CanonicmoduzedResource | 用户访问的MOS资源。 |
错误消息:Post request accessKeyId is empty.
错误原因:Post请求Header中缺少MOSAccessKeyId表单域。
解决方案:当Bucket为非public-read-write或者提供了Policy(或Signature)表单域时,必须提供MOSAccessKeyId表单域。
错误消息:Post request signature is empty.
错误原因:Post请求Header中缺少签名信息。
解决方案:当Bucket为非public-read-write或者提供了MOSAccessKeyId(或Policy)表单域时,必须提供Signature表单域。
计算Signature的具体流程如下:
创建一个UTF-8编码的Policy。
将Policy进行Base64编码,其值即为Policy表单域填入的值,将该值作为将要签名的字符串。
使用AccessKeySecret对要签名的字符串进行签名,签名方法为Signature = base64(hmac-sha1(base64(policy),
AccessKeySecret)) 。
错误消息:MOS authentication requires a valid Date.
错误原因:Authorization头中的Date无效。
解决方案:Date表示此次操作的时间,且必须为GMT格式,例如Sun, 22 Nov 2015 08:16:38 GMT。
错误消息:The bucket POST must contain the specified field name.
错误原因:POST请求表单中包含无效参数,或者参数格式不正确。
解决方案:请参见PostObject填写规范的参数。
错误消息:The bucket POST contains unrecognized field name.
错误原因:filename字段的下一行包含了自定义参数。
解决方案:filename字段的下一行必须为规范的Content-Type参数。如下图所示:
错误消息:Post body size must be less than 5G.
错误原因:Post请求的Body总长度超过5 GB。
解决方案:Post请求的Body总长度不允许超过5 GB。详情请参见PostObject。
错误消息:The callback configuration is not base64 encoded.
错误原因:Callback参数未经过Base64编码。
解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL以及回调的内容。详情请参见Callback。
错误消息:The callback configuration is not json format.
错误原因:Callback参数不是JSON格式。
解决方案:Callback参数必须为经过Base64编码的JSON字符串。示例如下:
{
"callbackUrl":"121.101.166.30/test.php",
"callbackHost":"MOS-cn-hangzhou.moduyuncs.com",
"callbackBody":"{\"mimeType\":,\"size\":}",
"callbackBodyType":"application/json"
}
错误消息:The callback url configuration is invalid.
错误原因:Callback参数没有指定请求回调的服务器 URL(callbackUrl)。
解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL以及回调的内容。
错误消息:The callback host configuration is invalid.
错误原因:callbackHost参数无效,无法进行JSON解析。
解决方案:callbackHost表示发起回调请求的Host头,例如MOS-cn-hangzhou.moduyuncs.com。如果没有配置callbackHost,则解析callbackUrl中的URL,并将URL中解析到的Host填充到callbackHost中。
错误消息:The callback body type configuration is invalid.或The body type of callback
is not
supported.
错误原因:callbackBodyType参数无效,无法进行JSON解析。
解决方案:callbackBodyType表示发起回调请求的Content-Type,支持application/x-www-form-urlencoded和application/json。
错误消息:The number of callback url exceed max value.
错误原因:请求的callbackurl个数超过5个。
解决方案:MOS支持同时配置最多5个URL,每个URL之间以分号(;)分隔。
错误消息:The header value specified by persistent header is not utf-8 encoded.
错误原因:用户自定义Header中的Value值不合法。
解决方案:对自定义Header中Value值包含的中文等特殊字符进行UTF-8编码。
错误消息:The header value specified by persistent header is not equal to reqeust
header value.
错误原因:用户自定义Header与请求头中的Header重名时,两者的Value值不一致。
解决方案:用户自定义Header与请求头中的Header重名时,两者的Value值需保持一致。
错误消息:The header value specified by persistent header contains CR or LF.
错误原因:用户自定义Header中的Value值包含了回车符\r或换行符\n。
解决方案:请删除用户自定义Header中Value值包含的回车符\r和换行符\n。
错误消息:Either the callback query string parameter or the x-MOS-callback header
should be
specified, not both.
错误原因:请求URL和请求Header中同时包含了callback参数。
解决方案:仅允许在请求URL或请求Header中包含callback参数。
错误消息:Either the callback-var query string parameter or the x-MOS-callback-var
header should be
specified, not both.
错误原因:请求URL和请求Header中同时包含了callback var参数。
解决方案:仅允许在请求URL或请求Header中包含callback var参数。
错误消息:x-MOS-traffic-limit should be specified either in query string or header,
not both.
错误原因:请求URL和请求Header中同时包含了单链接限速参数x-MOS-traffic-limit。
解决方案:仅允许在请求URL或请求Header中包含单链接限速参数x-MOS-traffic-limit。
错误消息:x-MOS-traffic-limit is invalid, should be specified between 819200(100KB/s)
and
838860800(100MB/s).
错误原因:单链接限速取值无效。
解决方案:单链接限速取值范围为819200~838860800,即100 KB/s~100 MB/s。
错误消息:The format of persistent header is invalid, should be
\"name:Base64Encode(value),name:Base64Encode(value)...\".或The header value
specified by
persistent header is not base64 encoded.
错误原因:用户自定义Header的格式错误。
解决方案:用户自定义Header格式为x-MOS-persistent-headers:
key1:base64_encode(value1),key2:base64_encode(value2)....。其中key1、key2等为自定义的Header,value1、value2为自定义Header对应的值,Base64_encode表示对自定义Header的值进行Base64编码。
例如自定义Header为myheader1和myheader2,其值分别为myvalue1、myvalue2,则自定义请求Header应为x-MOS-persistent-headers:myheader1:bXl2YWx1ZTE=,myheader2:bXl2YWx1ZTI=。
错误消息:The header 'x-MOS-tagging' shall be encoded as UTF-8 then URLEncoded URL
query parameters
without tag name duplicates.
错误原因:标签中Key和Value值未进行URL编码,且Key值重复。
解决方案:对象标签使用一组键值对(Key-Value)标记对象,对象标签规则如下:
单个Object最多可设置10个标签,Key不可重复。
每个Key长度不超过128字节,每个Value长度不超过256字节。
Key和Value区分大小写。
标签合法字符集包括大小写字母、数字、空格和以下符号:
+‑=._:/
通过HTTP Header的方式设置标签且标签中包含任意字符时,您需要对标签的Key和Value做URL编码。
错误消息:The header specified by persistent header is reserved.
错误原因:用户自定义Header中与HTTP中规定的标准头冲突。
解决方案:用户自定义Header中不能指定HTTP中规定的标准头,例如Host、Content-MD5、Origin或Range等。
错误消息:The header specified by persistent header is not valid HTTP token.
错误原因:用户自定义Header包含非法字符。
解决方案:MOS遵循RFC7230规范,请根据RFC7230规范判断HTTP Header是否包含非法字符。
错误消息:Can not get ip by this host.
错误原因:Host无效。
解决方案:Host包含Bucket域名以及IP地址两种。Bucket域名格式为BucketName.Endpoint,例如examplebucket.MOS-cn-hangzhou.moduyuncs.com。如Host为IP地址,需确保IP地址有效。
错误消息:Private address is forbidden to callback.
错误原因:MOS无法向内网IP地址发送callback请求。
解决方案:请使用公网地址发送callback请求。
错误消息:The length of callback exceed max value.
错误原因:callback参数的Base64编码总长度超过了5 KB。
解决方案:callback参数的Base64编码总长度最大为5 KB。
错误消息:The callback body is empty.
错误原因:没有填写callbackBody参数。
解决方案:Callback参数必须为经过Base64编码的JSON字符串,且必须指定请求回调的服务器URL(callbackUrl)以及回调的内容(callbackBody)。
错误消息:The callback body is invalid.
错误原因:callbackBody参数无效,无法进行JSON解析。
解决方案:callbackBody表示发起回调时请求Body的值,例如key=$(object)&etag=$(etag)&my_var=$(x:my_var)。请参见Callback进行排查。
错误消息:The length of callback var exceed max value.
错误原因:callback var参数的Base64编码总长度超过了5 KB。
解决方案:callback var参数的Base64编码总长度最大为5 KB。
错误消息:The callback var is not expecten json.
错误原因:callback-var参数不是JSON格式。
解决方案:callback-var用于配置自定义参数,自定义参数格式为Key-Value对,Key要以 x:
开头且必须为小写格式。假设需要设置的Key分别为x:var1和
x:var2,对应的值分别为value1和value2,则JSON格式如下:
{
"x:var1":"value1",
"x:var2":"value2"
}
错误消息:Invalid date. Must be later than 1970-01-01 00:00:00.
错误原因:时间参数无效,Unix时间戳小于0。
解决方案:Unix时间戳必须大于0。
错误消息:Invalid date. Cannot be later than the current time.
错误原因:时间参数无效,Unix时间戳晚于当前时间。
解决方案:Unix时间戳必须早于当前时间。
错误消息:Bad date format.
错误原因:时间参数无效。
解决方案:时间格式需遵从RFC 1123标准,例如Sun, 06 Nov 1994 08:49:37 GMT。
错误消息:The Versioning element must be specified.
错误原因:< VersioningConfiguration>字段中未指定Bucket的版本控制状态。
解决方案:在< VersioningConfiguration>字段中指定Bucket的版本控制状态。示例如下:
PUT /?versioning HTTP/1.1
Host: bucket-versioning.MOS-cn-hangzhou.moduyuncs.com
Date: Tue, 09 Apr 2019 02:20:12 GMT
Authorization: MOS e7thre3jj5mlvqk:12ztptkaR8a74gIGFzOaZZQe****
< ?xml version="1.0" encoding="UTF-8"?>
< VersioningConfiguration>
< Status>Enabled< /Status>
< VersioningConfiguration>
错误消息:Tag keys must be unique.
错误原因:标签中的Key已存在。
解决方案:调用GetBucketTags获取存储空间已配置的标签信息,然后参见PutBucketTags配置新的标签。
错误消息:Your host is invalid. Please put bucket use Open Storage Service standard
host.
错误原因:Host参数错误。
解决方案:请使用标准访问域名。有关访问域名和数据中心的更多信息,请参见访问域名和数据中心。
错误消息:The encryption algorithm specified is not valid.或The Encryption request you
specified is
not valid. Supported value: AES256/SM4/KMS.
错误原因:x-MOS-server-side-encryption参数指定的值无效。
解决方案:x-MOS-server-side-encryption有效值为AES256、KMS或SM4。有关服务器端加密方式的更多信息,请参见PutObject。
错误消息:The KMS Data Encryption request you specified is not valid. Supported
value:SM4
错误原因:指定的Object加密算法无效。
解决方案:当Object的加密方式为KMS时,加密算法仅支持SM4。更多信息,请参见服务器端加密。
错误消息:The specified parameter KMS keyId is not valid.
错误原因:指定的CMK ID无效。
解决方案:当Object加密方式为KMS且使用指定的密钥加密时,需输入CMK ID。CMK
ID示例值为9468da86-3509-4f8d-a61e-6eab1eac****。
错误消息:Invalid WORM Configuration.
错误原因:合规保留策略无效。
解决方案:通过InitiateBucketWorm接口新建合规保留策略示例如下:
POST /?worm HTTP/1.1
Date: Thu, 15 May 2014 11:18:32 GMT
Content-Length:556
Content-Type: application/xml
Host: BucketName.MOS.moduyuncs.com
Authorization: MOS nxj7dtlhcyl5hp****:COS3OQkfQPnKmYZTEHYv2****
< InitiateWormConfiguration>
< RetentionPeriodInDays>365< /RetentionPeriodInDays>
< /InitiateWormConfiguration>
错误消息:You are not allowed to create more inventory than limit.
错误原因:单个Bucket配置的清单规则已达到最大值1000条。
解决方案:如需调整清单规则上限,请联系摩杜云客服
错误消息:daily inventory object count exceed limit.
错误原因:以天为单位导出清单文件时,Bucket中的文件数量超出限制。
解决方案:以天为单位导出清单文件时,Bucket中的文件数量必须小于10亿。您可以通过GetBucketV2
(ListObjectsV2)接口获取Bucket内的文件数量。
错误消息:weekly inventory object count exceed limit.
错误原因:以周为单位导出清单文件时,Bucket中的文件数量超出限制。
解决方案:以周为单位导出清单文件时,Bucket中的文件数量必须小于100亿。您可以通过GetBucketV2
(ListObjectsV2)接口获取Bucket内的文件数量。
错误消息:Insufficient information. Origin request header needed.
错误原因:缺少Origin请求头。
解决方案:浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)给MOS,并带上特定的请求头Origin,用于标识跨域请求的来源域。示例如下:
错误消息:Insufficient information. Request Access-Control-Request-Method header
needed.
错误原因:缺少Access-Control-Request-Method请求头。
解决方案:浏览器在发送跨域请求之前会发送一个preflight请求(OPTIONS)给MOS,并带上特定的请求头Access-Control-Request-Method,用于标识实际请求所用的方法。示例如下:
错误消息:Your socket connection to the server was not read from or written to within
the timeout
period. Idle connections will be closed.
错误原因:因网络环境或网络配置等引起的网络超时。
解决方案:请参见网络超时处理。
错误消息:The tagging key you provided is invalid.
错误原因:对象标签中配置的Key不合法。
解决方案:对象标签使用一组键值对(Key-Value)标记对象,对象标签规则如下:
每个Key长度不超过128字节,每个Value长度不超过256字节。
Key和Value区分大小写。
标签合法字符集包括大小写字母、数字、空格和以下符号:
+‑=._:/
通过HTTP Header的方式设置标签且标签中包含任意字符时,您需要对标签的Key和Value做URL编码。
错误消息:You have attempted to create more cname than allowed.
错误原因:单个Bucket可绑定的域名数量已达到最大值100个。
解决方案:如需调整Bucket域名上限,请联系摩杜云客服
错误消息:
The Length of channel name must be less than 64.
ChannelName must not be empty.
The characters encoding must be utf-8.
ChannelName must not contain a slash.
错误原因:Channel命名不符合规范。
解决方案:检查并确保Channel命名符合规范。
Channel命名规范如下:
使用UTF-8编码。
长度在1~64字节之间。
不能包含正斜线(/)或者反斜线(\)。
错误消息:One or more of the specified parts could not be found or the specified
entity.
错误原因:PartNumber或ETag错误导致CompleteMultipartUpload提交的Part无效。
解决方案:服务端在调用CompleteMultipartUpload接口时会对PartNumber和ETag做校验。
PartNumber取值为1~10000。PartNumber可以不连续,但必须升序排列。例如第一个Part的PartNumber是1,第二个Part的PartNumber可以是5。
通过CompleteMultipartUpload请求创建的Object,ETag值是其内容的UUID。ETag值可以用于检查Object内容是否发生变化。
错误消息:The list of parts was not in ascending order.
错误原因:CompleteMultipartUpload提交的Part未按照partNumber升序排列。
解决方案:CompleteMultipartUpload提交的Part需按照partNumber升序排列。例如第一个Part的PartNumber是1,第二个Part的PartNumber可以是5。
错误消息:Part number must be an integer between 1 and 10000, inclusive.
错误原因:无效的PartNumber。
解决方案:请确保PartNumber取值为1~10000。
错误消息:The Part you read had been deleted.
错误原因:请求的Part已删除。
解决方案:请参见CompleteMultipartUpload查看是否已上传所有的Part。
错误消息:The XML you provided was not well-formed.
错误原因:参数不符合XML格式。
解决方案:请检查参数是否符合XML格式。
错误消息:Request specific response headers cannot be used for anonymous GET
requests.
错误原因:请求参数中缺少必选参数。
解决方案:请根据所调用的API接口,检查是否已填写所有必选参数。详情请参见API概览。
错误消息:Security-token must be provided by query string parameter.
错误原因:没有携带security-token。
解决方案:临时用户使用URL签名时,必须携带security-token。临时用户使用签名URL的格式为:http://MOS-example.MOS-cn-hangzhou.moduyuncs.com/MOS-api.pdf?MOSAccessKeyId=nz2pc56s936****&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv****&security-token=SecurityToken。详情请参见在URL中包含签名。
错误消息:Size of playlist is too big.
错误原因:Playlist文件大小超出最大限制。
解决方案:请确保Playlist文件大小不超过1 MB。
错误消息:No ts found in the playlist.
错误原因:未找到ts音视频文件。
解决方案:通过推流的方式上传音视频文件。详情请参见PutLiveChannel。
错误消息:Playlist name must ends with \".m3u8\".
错误原因:文件不以.m3u8结尾。
解决方案:当转储类型为HLS时,指定生成的m3u8文件名称。文件名称需以.m3u8结尾,文件长度在6~128字符之间,例如playlist.m3u8。
错误消息:Master playlist has ts file.
错误原因:playlist文件中同时包含了m3u8和ts类型文件。
解决方案:通常playlist文件类型为m3u8,用于记录ts视频文件信息。详情请参见基于MOS构建HLS流。
错误消息:Your POST request fields preceding the upload file were too large.
错误原因:上传的文件过大。通过Post方法上传的文件不能超过5 GB。
解决方案:请参见PostObject错误及排查。
错误消息:Maximal number of pipes supported is.
错误原因:图片操作次数过多。
解决方案:请减少您的图片操作次数,按提示限制在合法值以下。
错误消息:Your name of form field is too long.
错误原因:Post请求中表单域过大。
解决方案:除了file表单域外,其他表单域大小不得超过4 KB。请参见PostObject错误及排查。
错误消息:The body of your POST request is not well-formed multipart/form-data.
错误原因:PostObject请求中表单域格式不符合要求。
解决方案:遵循表单域格式要求。
表单域格式如下 :
Content-Disposition: form-data;
name="{key}"\r\n\r\n{value}\r\n--{boundary}
PostObject请求示例如下:
POST / HTTP/1.1
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; zh-CN; rv:1.9.2.6)
Content-Type: multipart/form-data; boundary=9431149156168
Host: xxxx-hz.MOS-cn-hangzhou.moduyuncs.com
Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2
Connection: keep-alive
Content-Length: 5052
--9431149156168
Content-Disposition: form-data; name="key"
test-key
--9431149156168
Content-Disposition: form-data; name="Content-Disposition"
attachment;filename=D:\img\example.png
--9431149156168
Content-Disposition: form-data; name="MOSAccessKeyId"
2NeL********j2Eb
要求如下:
Header必须包含Content-Type: multipart/form-data; boundary={boundary}。
Header和Body之间由\r\n--{boundary} 分割。\r\n显示为换行。
表单域名称大小写敏感,如policy、key、file、MOSAccessKeyId、MOSAccessKeyId、Content-Disposition。
表单域file必须为最后一个表单域。
Bucket为public-read-write时,可以不指定表单域MOSAccessKeyId、policy、Signature。如果指定了其中一个,则无论Bucket是否为public-read-write,都必须指定另外两个。
说明 上面的示例为请求的部分内容,完整的请求请参见PostObject。
Invalid Simple-Condition
错误消息:Invalid Policy: Invalid Simple-Condition: Simple-Conditions must have
exactly one property
specified.
错误原因:请求Policy中没有包含conditions。
解决方案:请求Policy中必须包含至少一项conditions。
Invalid JSON: unknown char e
错误消息:Invalid Policy: Invalid JSON: unknown char e.
错误原因:请求中的Policy格式错误。
解决方案:请检查Policy格式,是否缺失",转义字符前是否有\。
Invalid JSON: , or ] expected
错误消息:Invalid Policy: Invalid JSON: , or ] expected.
错误原因:请求中的Policy格式错误。
解决方案:请检查Policy中是否缺少,或]。
错误消息:POST requires exactly one file upload per request.
错误原因:Post请求中文件个数无效。Post请求中只能有一个file表单域。
解决方案:确保Post请求中只有一个file表单域。
错误消息:Your proposed upload smaller than the minimum allowed size.
错误原因:上传的Object超出允许的最小值。
解决方案:采用Post方法上传文件时,通过PostPolicy设置表单域的有效值。可使用限定条件content-length-range指定允许上传Object的大小范围。
错误消息:Your proposed upload exceeds the maximum allowed size.或Source object Length
exceeds the
maximum allowed size.
错误原因:上传的Object超出允许的最大值。
解决方案:采用Post方法上传文件时,通过PostPolicy设置表单域的有效值。可使用限定条件content-length-range指定允许上传Object的大小范围。
错误消息:The XML you provided was not well-formed or did not validate against our
published schema.
错误原因:请求中的XML格式非法。
解决方案:请根据具体请求进行错误排查。
各请求的详细信息如下:
DeleteMultipleObjects
CompleteMultipartUpload
PutBucketLogging
PutBucketWebsite
PutBucketLifecycle
PutBucketReferer
PutBucketCORS
错误消息:No replication rule specified.
错误原因:请求的Bucket没有配置跨区域复制规则。
解决方案:请参见PutBucketReplication配置跨区域复制规则。
错误消息:MOS only support one replication rule now.
错误原因:单个Bucket配置的跨区域复制规则数量超出限制。
解决方案:单个Bucket仅允许配置一条跨区域复制规则。
错误消息:The src and dest bucket must be versioning enabled when drs tagging rule
exist.
错误原因:跨区域复制的源Bucket和目标Bucket的版本控制状态不一致。
解决方案:跨区域复制的源Bucket和目标Bucket同时处于版本控制或非版本控制状态。
错误消息:The target bucket is invalid for bucket replication.
错误原因:跨区域复制的目标Bucket无效。
解决方案:调用GetBucketReplicationLocation获取可复制到的目标存储空间(Bucket)所在的地域。您可以根据返回结果决定将源Bucket的数据复制到哪个地域。
错误消息:The target bucket you specified does not locate in the target location.
错误原因:目标地域不存在此Bucket。
解决方案:请检查Bucket所在地域。
错误消息:The replication location you choose is invalid.
错误原因:跨区域复制对应的目标地域不存在。
解决方案:请检查目标Bucket所在地域。
错误消息:The bucket does not have corresponding replication location.
错误原因:源Bucket所在的数据中心没有与之配对的可实施跨区域复制的数据中心。
解决方案:请参见GetBucketReplicationLocation进行排查。
错误消息:Bucket replication already exists.
错误原因:源Bucket到目标Bucket已存在跨区域复制关系。
解决方案:如需配置新的跨区域复制规则,请先删除已有的跨区域复制规则后再配置。
错误消息:You have attempted to create more incoming replication for bucket than
allowed.
错误原因:与Bucket关联的跨区域复制规则个数已达到100条。
解决方案:单个Bucket支持配置100条跨区域复制规则。如果业务需求超出数量限制,请联系我们。
错误消息:You have attempted to create more outgoing replication for bucket than
allowed.
错误原因:与Bucket关联的跨区域复制规则个数已达到100条。
解决方案:单个Bucket支持配置100条跨区域复制规则。如果业务需求超出数量限制,请联系我们。
错误消息:The CORS Rules num is beyond limit.
错误原因:Bucket配置的CORS规则数量超出限制。
解决方案:Bucket允许配置最多10条CORS规则。详情请参见PutBucketCors。
错误消息:The bucket tags num is beyond limit.
错误原因:Bucket配置的标签数量超出限制。
解决方案:Bucket允许配置最多20个标签。详情请参见PutBucketTags
错误消息:The bucket replication rule's filter object tags number is beyond limit.
错误原因:跨区域复制规则中配置的对象标签个数超出限制。
解决方法:同步与指定标签匹配的Object到目标Bucket,最多可添加10个标签。
错误消息:The Content-MD5 you specified was invalid.
错误原因:上传的Content-MD5请求头与MOS计算消息体的Content-MD5不一致。
解决方案:请参见Content-MD5的计算方法进行排查。
错误消息:The x-MOS-hash-crc64ecma you specified does not match what we calculated.
错误原因:本地计算的crc64值与服务器返回的crc64值不一致。
解决方案:请参见通过crc64校验数据传输的完整性进行排查。
错误消息:Inline data exceeds the maximum allowed size.
错误原因:Object大小超出最大限制。
解决方案:不同上传方式对文件大小的限制如下:
通过简单上传方式上传的Object大小不能超过5 GB。
通过表单上传方式上传的Object大小不能超过5 GB。
通过追加上传方式上传的Object大小不能超过5 GB。
通过分片上传方式上传的Object大小不能超过48.8 TB。
错误消息:Inline data exceeds the maximum allowed size.
错误原因:Object大小超出最大限制。
解决方案:不同上传方式对文件大小的限制如下:
通过简单上传方式上传的Object大小不能超过5 GB。
通过表单上传方式上传的Object大小不能超过5 GB。
通过追加上传方式上传的Object大小不能超过5 GB。
通过分片上传方式上传的Object大小不能超过48.8 TB。
错误消息:Maximal size of image supported is.
错误原因:图片大小超出限制。
解决方案:原图文件大小限制如下:
原图文件大小不能超过20 MB。
使用旋转图片时原图的宽或高不能超过4096 px。
原图单边大小不能超过30000 px。
错误消息:You did not provide the number of bytes specified by the Content-Length
HTTP header.
错误原因:Content-length参数指定的字节大小与用户实际发送的字节大小不一致。
解决方案:请根据实际发送的字节大小填写相应的Content-length参数。
错误消息:This user does not turn on KMS service.
错误原因:使用KMS加密方式进行服务器端加密时,未开通KMS服务。
解决方案:使用KMS加密方式进行服务器端加密前,请预先开通KMS服务。详情请参见开通密钥管理服务。
错误消息:The operation is not supported for this resource.
错误原因:该资源不支持此类操作。
解决方案:常见的非法操作为试图解冻非归档或冷归档类型的文件。有关各类资源支持的操作类型,请参见API概览。
错误消息:The object is not symlink.
错误原因:操作的Object不是软链接类型。
解决方案:请确保PutSymlink或GetSymlink操作仅作用于软链接。
错误消息:The TagKey you have provided is invalid.或The TagValue you have provided is
invalid.
错误原因:存储空间标签的Key或Value不合法。
解决方案:检查并确保存储空间标签命名符合规范,标签规范如下:
Key和Value必须为UTF-8编码。
Key最大长度为64字节,不能以http://、https://、moduyun为前缀,且不能为空。
Value最大长度为128字节,可以为空。
错误消息:The parameters of client encryption are allowed to be set once.
错误原因:通过CopyObject接口修改客户端加密元数据。
解决方案:调用客户端加密上传文件后,加密元数据会被保护,无法通过CopyObject修改Object meta信息。详情请参见CopyObject。
错误消息:Miss some necessary client encryption meta parameters.
错误原因:客户端加密缺少必要参数。
解决方案:请确保已填写以下各项必选参数。
参数 | 描述 |
---|---|
x-MOS-meta-client-side-encryption-key | 加密后的密钥。 经过主密钥加密后再经过Base64编码的字符串。 |
x-MOS-meta-client-side-encryption-start | 随机产生的用于加密数据的初始值 。经过主密钥加密后再经过Base64编码的字符串。 |
x-MOS-meta-client-side-encryption-cek-alg | 数据的加密算法。 |
x-MOS-meta-client-side-encryption-wrap-alg | 数据密钥的加密算法。 |
错误消息:The parts count calculated by client encryption meta is too large.
错误原因:客户端加密元信息中输入的Part数量超出限制。
解决方案:每个Object最多支持切分为10000个Part。
错误消息:The client encryption meta data_size or part_size is invalid.
错误原因:客户端加密元信息中输入的文件总大小或分片大小不合法。
解决方案:通过客户端加密Multipart文件时,需要在init_multipart时传入整个大文件的总大小(x-MOS-meta-client-side-encryption-data-size)以及分片大小(x-MOS-meta-client-side-encryption-part-size),且分片大小必须是16的整数倍。详情请参见客户端加密。
错误消息:The client encryption part list is unexpected with init_multipart
setted.
错误原因:实际上传的分片数量和初始化分片上传指定的分片数量不一致。
解决方案:请确保指定的分片数量与实际上传的分片数量一致。
错误消息:The partId must less or equal to expectedPartNumber.
错误原因:分片ID大于总分片数(PartNumber)。
解决方案:请确保分片ID等于或者小于总分片数。详情请参见UploadPart。
错误消息:The partSize must same with init_multipart setted except last part.
错误原因:实际上传的每个分片大小与初始化分片上传指定的每个分片大小不一致。
解决方案:除最后一个分片外,其他分片大小均要求与初始化分片上传指定的每个分片大小一致。详情请参见UploadPart。
错误消息:The last partSize must same with init_multipart setted.
错误原因:实际上传的所有分片总大小与初始化分片上传指定的分片总大小不一致。
解决方案:上传最后一个分片后,请确保实际上传的所有分片总大小与初始化分片上传指定的分片总大小一致。详情请参见CompleteMultipartUpload。
错误消息:The client encryption meta is inconsistent with init_multipart
setted.
错误原因:客户端加密配置的分片加密信息与初始化分片上传中设置的加密信息不一致。
解决方案:请确保客户端配置的分片加密信息与初始化分片上传中设置的加密信息一致。详情请参见客户端加密。
错误消息:Client encryption doesn't support upload part copy.
错误原因:不支持对经过客户端加密的源文件中调用UploadPartCopy接口。
解决方案:仅支持从未经客户端加密的源文件中调用UploadPartCopy接口,实现从一个已存在的Object中拷贝数据来上传一个Part。详情请参见UploadPartCopy。
错误消息:User key must be specified.
错误原因:删除Object时未指定Object名称。
解决方案:删除Object时需指定Object名称。详情请参见DeleteMultipleObjects。
错误消息:Put bucket log requester is not target bucket owner.
错误原因:存放日志的目标Bucket不存在。
解决方案:请更换为有效的目标Bucket。
错误消息:One or more of the specified parts could not be found or the specified
entity tag might not
have matched the part's entity tag.
错误原因:PartNumber或ETag错误导致CompleteMultipartUpload提交的Part无效。
解决方案:请参见CompleteMultipartUpload。
partNumber排序错误
错误消息:The list of parts was not in ascending order.
错误原因:CompleteMultipartUpload提交的Part未按照partNumber升序排列。
解决方案:请参见CompleteMultipartUpload。
partNumber取值错误
错误消息:Part number must be an integer between 1 and 10000, inclusive.
错误原因:无效的partNumber。partNumber的取值范围为1~10000。
解决方案:请参见CompleteMultipartUpload。
错误消息:The encryption algorithm specified is not valid.
错误原因:指定的x-MOS-server-side-encryption值无效。有效值为AES256或KMS。
解决方案:请参见PutObject。
错误消息:The symbolic's target file type is invalid.
错误原因:Object类型为软链接,且软链接指向的目标Object类型仍为软链接。
解决方案:确保软链接指向的目标Object不是软链接。
本文介绍MOS返回403错误的原因和解决方案。
错误消息:The bucket you are attempting to access must be addressed using the
specified endpoint.
Please send all future requests to this endpoint.
问题原因:访问Bucket时使用的Endpoint不正确。
解决方案:确保使用正确的Endpoint访问Bucket。例如Bucket所在地域为MOS-cn-hangzhou,则外网Endpoint为MOS-cn-hangzhou.moduyuncs.com。有关Endpoint的更多信息,请参见MOS访问域名使用规则。
错误消息:This request is forbidden by kms.
问题原因:没有KMS使用权限。
解决方案:请确保对指定的CMK ID具有使用权限。详情请参见服务器端加密。
错误消息:AccessDenied.
问题原因:没有相应的访问权限。
解决方案:
确认使用了正确的AccessKey ID和AccessKey Secret。详情请参见为RAM用户创建访问密钥。
确认RAM用户是否拥有Bucket或Object相关操作权限。
错误消息:You have no right to access this object.
问题原因:RAM用户无权访问此Object。
解决方案:确认RAM用户是否拥有Object相关操作权限。根据使用场景设置不同访问权限的详情,请参见教程示例:使用RAM
Policy控制MOS的访问权限。
错误消息:Anonymous user has no right to access this bucket.
问题原因:匿名用户无权访问此Bucket。
解决方案:请通过Bucket Policy授权匿名用户访问目标Bucket。详情请参见添加Bucket授权策略(Bucket Policy)。
错误消息:Anonymous user has no right to access this object.
问题原因:匿名用户无权访问此Object。
解决方案:请通过Bucket Policy授权匿名用户访问目标Bucket中的指定资源。详情请参见添加Bucket授权策略(Bucket
Policy)。
错误消息:You are denied by bucket referer policy.
问题原因:防盗链校验未通过。
解决方案:通过设置Referer白名单以及是否允许空Referer,限制仅白名单中的域名可以访问Bucket内的资源。详情请参见设置防盗链。
错误消息:Invalid according to Policy: Policy expired.
问题原因:PostObject中的Policy表单域无效。
解决方案:Post请求的Policy表单域用于验证请求的合法性。Policy为一段经过UTF-8和Base64编码的JSON文本,声明了Post请求必须满足的条件。Post
Policy格式如下:
{ "expiration": "2014-12-01T12:00:00.000Z",
"conditions": [
{"bucket": "johnsmith" },
["starts-with", "$key", "user/eric/"]
]
}
有关Policy中支持的Conditions详情,请参见附录:Post Policy。
错误消息:Invalid according to Policy: Policy Condition failed: " +
RelatedUnit; //XXX
问题原因:Policy表单域中指定的Conditions无效。
解决方案:确保在Policy表单域中指定有效的Conditions。有关Policy表单域中支持的Conditions以及Conditions匹配方式详情,请参见附录:Post
Policy。
错误消息:Target object does not reside in the same data center as source
object.
问题原因:不支持跨地域拷贝文件。
解决方案:仅支持拷贝同一地域下相同或不同存储空间(Bucket)之间的文件(Object)。详情请参见CopyObject。
错误消息:Query string authentication requires the Signature, Expires and
MOSAccessKeyId
parameters.
问题原因:URL签名缺少必要参数。
解决方案:URL签名必须至少包含Signature、Expires和MOSAccessKeyId参数。URL签名示例为http://MOS-example.MOS-cn-hangzhou.moduyuncs.com/MOS-api.pdf?MOSAccessKeyId=nz2pc56s936**9l&Expires=1141889120&Signature=vjbyPxybdZaNmGa%2ByT272YEAiv****。有关URL签名的详情,请参见在URL中包含签名。
错误消息:Invalid date (should be seconds since epoch).
问题原因:请求的时间戳无效。
解决方案:Expires参数的值是一个Unix time(自UTC时间1970年1月1号开始的秒数),用于标识该URL的超时时间。
错误消息:Request has expired.
问题原因:请求已过期。
解决方案:请结合实际使用场景,设置合理的Expires。
错误消息:You do not have read permission on this object.
问题原因:没有该Object的读取权限。
解决方案:请联系Object拥有者授予您对Object的读取权限。
错误消息:You do not have write permission on this object.
问题原因:没有该Object的写入权限。
解决方案:请联系Object拥有者授予您对Object的写入权限。
错误消息:You do not have read acl permission on this object.
问题原因:没有该Object的ACL读取权限。
解决方案:请联系Object拥有者授予您GetObjectACL的权限。
错误消息:You do not have write acl permission on this object.
问题原因:没有该Object的ACL写入权限。
解决方案:请联系Object拥有者授予您PutObjectACL的权限。
错误消息:You have no right to access this object because of bucket acl.
问题原因:没有该Object的访问权限。
解决方案:请授予访问者MOS相关访问权限,例如PutObject、GetObject、AppendObject等。详情请参见RAM
Policy常见示例。
错误消息:Anonymous access is forbidden for this operation.
问题原因:匿名用户没有该操作的对应权限。
解决方案:请通过Bucket Policy授权匿名用户访问目标Bucket中的指定资源。详情请参见添加Bucket授权策略(Bucket
Policy)。
错误消息:Access denied by bucket policy.
问题原因:通过Bucket Policy的授权访问被拒绝。
解决方案:请结合不同的使用场景灵活配置Bucket Policy。详情请参见添加Bucket授权策略(Bucket Policy)。
错误消息:Access denied by authorizer's policy.
问题原因:通过STS的授权访问被拒绝。
解决方案:请参见STS临时授权访问MOS进行排查。
错误消息:CORSResponse: This CORS request is not allowed. This is usually because the
evalution of
Origin, request method / Access-Control-Request-Method or
Access-Control-Requet-Headers
are not
whitelisted by the resource's CORS spec.
问题原因:没有配置CORS或CORS配置错误。
解决方案:请参见设置跨域访问进行排查。
错误消息:The bucket you are attempting to access must be addressed using the
specified endpoint.
Please send all future requests to this endpoint.
问题原因:通过SDK访问MOS中的Bucket时,未指定Endpoint或者指定的Endpoint有误。
例如创建的Bucket位于青岛地域,使用了默认配置的MOS-cn-hangzhou.moduyuncs.com的Endpoint地址发起请求,则出现该报错。
解决方案:确认请求的Endpoint地址与Bucket实际的Endpoint地址一致。例如
需要访问青岛和杭州两个节点的Bucket,建议创建多个MOSclient,并在MOSclient中添加MOS-cn-hangzhou.moduyuncs.com和MOS-cn-qingdao.moduyuncs.com两个Endpoint。
错误消息:The bucket you are attempting to access must be addressed using MOS third
level domain.
问题原因:Bucket的请求域名不为三级域名。
解决方案:针对MOS的网络请求,除了GetService
(ListBuckets)API以外,其他所有请求的域名均由带有指定Bucket信息的三级域名组成。访问域名结构为BucketName.Endpoint,BucketName为您的存储空间名称,Endpoint为存储空间对应的地域域名。例如https://examplebucket.MOS-cn-hangzhou.moduyuncs.com。
错误消息:Please use virtual hosted style to access.
问题原因:Host错误。
解决方案:通过外网访问MOS服务时,以URL的形式表示访问的MOS资源。MOS的URL结构为< Schema>://<
Bucket>.<
外网Endpoint>/< Object>
。其中Schema包含HTTP或者HTTPS,Bucket表示存储空间名称,外网Endpoint为Bucket所在数据中心供外网访问的Endpoint,Object填写上传到MOS上的文件的访问路径。
例如您的Region为华东1(杭州),Bucket名称为examplebucket,Object访问路径为destfolder/example.txt,则外网访问地址为https://examplebucket.MOS-cn-hangzhou.moduyuncs.com/destfolder/example.txt。
错误消息:Your host is invalid. Please use Open Storage Service standard host.
问题原因:Host错误。
解决方案:请使用标准的域名格式访问MOS资源。详情请参见MOS访问域名使用规则。
错误消息:Your account partner does not have KMS Service.
问题原因:请求者未开通KMS服务。
解决方案:使用SSE-KMS对MOS数据进行加密前,请先开通KMS服务。详情请参见开通密钥管理服务。
错误消息:Current user is indebted.
问题原因:当您的摩杜云账户进入欠费状态时,您会收到相应的通知。同时,您对密钥管理服务KMS(Key Management Service)的访问会被拒绝。
解决方案:如需正常使用KMS服务时,请确保您的摩杜云账户不欠费。
错误消息:Current user is indebted Overdue.
问题原因:KMS服务欠费已逾期。
解决方案:如需正常使用KMS服务,请及时续费。
错误消息:The WORM Configuration is locked.
问题原因:合规保留策略锁定后试图删除策略。
解决方案:若保留策略已提交锁定,则不允许删除此策略,且无法缩短策略保护周期,仅可以延长保护周期。详情请参见合规保留策略。
错误消息:The bucket you access does not belong to you.
问题原因:当前用户不是目标Bucket的拥有者。
解决方案:仅Bucket拥有者有权限执行此操作。
错误消息
The MOS Access Key Id you provided is disabled.
The MOS Access Key Id you provided does not exist in our records.
The MOS Access Key Id contains non-acceptable characters, which accepts only
alphanumeric
characters[0-9a-zA-Z] and several special characters[._=]
问题原因:AccessKey ID不存在或已失效。
解决方案:登录摩杜云管理控制台的AccessKey管理,确认访问MOS使用的AccessKey ID存在且处于启用状态。
如果您的AccessKey ID处于禁用状态,请开启。如果您的AccessKey ID不存在请新建,并使用新的AccessKey ID访问MOS。
错误消息:The request signature we calculated does not match the signature you
provided.
问题原因:签名错误。
解决方案:请参见签名常见问题进行排查。
错误消息:Transfer acceleration is disabled.
问题原因:未开启传输加速服务。
解决方案:如果您需要远距离数据传输加速、加速上传和下载GB或TB级大文件以及非静态、非热点数据下载加速等场景,请开启传输加速服务。详情请参见传输加速。
错误消息:The security token you provided is invalid.
问题原因:临时访问凭证无效。
解决方案:请参见STS临时授权访问MOS进行排查。
错误消息:The MOS access key id and security token you provided does not match.
问题原因:用户提供的AccessKey和临时访问凭证不匹配。
解决方案:请参见STS临时授权访问MOS进行排查。
错误消息:The security token you provided has expired.
问题原因:临时访问凭证已过期。
解决方案:重新请求STS服务获取临时访问凭证。
错误消息:The status of the bucket owner is abnormal.
问题原因:暂未向目标Bucket的所属用户提供服务。
解决方案:请检查用户的摩杜云账号是否已注销或因安全等原因被管控,是否因欠费被运营商暂时停止服务。
错误消息:This interface does not support security token.
问题原因:当前接口暂不允许通过临时访问凭证权限进行调用。
解决方案:STS Token仅适用于临时授权给特定用户访问MOS资源。如果您需要将Bucket开放给他人访问,请参见访问控制概述选择适用的授权机制。
错误消息:Security token is not supported in this region.
问题原因:暂不支持在当前地域使用STS Token。
解决方案:有关哪些地域支持使用STS Token的详情,请参见接入地址。
错误消息:The difference between the request time and the current time is too large.
问题原因:请求发起的时间超过MOS服务器当前时间15分钟。
解决方案:请检查发送请求设备的系统时间,并根据时区调整到正确时间。
发送请求的机器或设备的系统时间,调整标准如下:
MOS的系统时间采用GMT时间,您的设备的系统时间需要调整到GMT时间,或与其相对应的时区时间。GMT是零时区的区时,即世界标准时间。
Windows系统查看时区的方法:单击控制面板 > 时钟、语言和区域 > 设置日期和时间 。
例如,时区栏的+08:00表示您的设备系统时区是东八区。
Linux或Unix系统查看时区的方法:执行date -R查看时间和时区。
下图中的+0800表示您的设备系统时区是东八区。
支持在多个地域使用MOS。每个地域都使用GMT时间,您发送请求的设备系统时间也是GMT时间。
错误消息:The image file may be damaged.
问题原因:图片文件有部分信息丢失或损坏,导致无法正常识别或处理。
排查方法:请确保源文件没有损坏,如有损坏请重新上传本地文件。
错误消息:UserDisable
问题原因:账号欠费或者由于安全原因,账号被禁用。
解决方案:请检查账号是否已欠费,或联系技术支持进行安全受限核查。
错误消息:BucketDisable.
问题原因:Bucket因安全原因被禁用。
解决方案:请检查账号是否已欠费,或联系技术支持进行安全受限核查。
错误消息:The cname belongs to another user.
问题原因:该域名已绑定至其他Bucket。
解决方案:请更换域名或通过验证域名所有权强制绑定域名,验证域名所有权会解除域名与其他Bucket的绑定关系。请参见绑定自定义域名进行排查。
错误消息:The operation is not valid for the object's state.
问题原因:下载归档类型Object时,以下两种情况会导致报错无效的Object状态。
未提交RestoreObject请求或者上一次提交RestoreObject已超时。
已提交RestoreObject请求,但数据的RestoreObject操作还没有完成。
解决方案:请参见RestoreObject进行排查。
本文介绍MOS返回404错误的原因和解决方案。
错误消息:The specified parameter KMS keyId is not found.
问题原因:未找到指定的CMK。
解决方案:确认已开通KMS服务并填写正确的CMK ID,CMK
ID示例值为9468da86-3509-4f8d-a61e-6eab1eac****。详情请参见设置服务器端加密。
错误消息:The specified moduas is not found.
问题原因:未找到指定的CMK别名。
解决方案:确认已开通KMS服务并填写正确的CMK别名。CMK别名必须以moduas开头,例如moduas/example。
错误消息:The server side encryption configuration was not found.
问题原因:目标Bucket尚未开启服务器端加密。
解决方案:请为目标Bucket开启服务器端加密。详情请参见服务器端加密。
错误消息:The specified bucket does not have a website configuration.
问题原因:目标Bucket未配置静态网站托管。
解决方案:请为目标Bucket配置静态托管。详情请参见静态网站托管介绍。
错误消息:The specified bucket does not have a object tagging.
问题原因:此Bucket中的Object均未设置标签。
解决方案:请设置对象标签。对象标签使用一组键值对(Key-Value)标记对象,对象标签规则如下:
单个Object最多可设置10个标签,Key不可重复。
每个Key长度不超过128字节,每个Value长度不超过256字节。
Key和Value区分大小写。
标签合法字符集包括大小写字母、数字、空格和以下符号:
+‑=._:/
通过HTTP Header的方式设置标签且标签中包含任意字符时,您需要对标签的Key和Value做URL编码。
错误消息:The CORS Configuration does not exist.
问题原因:未配置跨域资源共享CORS规则。
解决方案:如果您想要允许或者拒绝相应的跨域请求,请为目标Bucket配置CORS规则。详情请参见设置跨域资源共享。
错误消息:The WORM Configuration does not exist.
问题原因:未配置合规保留策略。
解决方案:如果您希望以“不可删除、不可篡改”方式保存和使用数据,建议设置合规保留策略。具体操作,请参见设置合规保留策略。
错误消息:The specified WORM ID does not exist.
问题原因:指定的策略ID不存在。
解决方案:在锁定合规保留策略或延长保留周期操作中需要指定正确的策略ID,您可以通过GetBucketWorm接口获取策略ID。
错误消息:The symlink target object does not exist.
问题原因:
Object命名不符合规范。
软链接指向的Object不存在。
解决方案:
检查并确保Object命名符合规范。
Object命名规范如下:
不是以正斜线(/)或者反斜线(\)开头。
使用UTF-8编码。
长度在1~1023字节之间。
如果目标Object为软链接,则确保软链接指向的Object已存在。
错误消息:User not found.
问题原因:该用户不存在。
解决方案:请检查摩杜云账号是否被注销。
错误消息:NoSuchRegion
问题原因:该Region不存在。
解决方案:有关MOS已开通Region的详情,请参见访问域名和数据中心。
错误消息:No Row found in Lifecycle Table.
问题原因:Bucket未配置生命周期规则(Lifecycle)。
解决方案:如果您需要定期将Object转储为低频访问、归档存储或冷归
档存储类型,或删除过期的Object和碎片,从而节省存储费用,请配置生命周期规则。具体操作,请参见设置生命周期规则。
错误消息:No Row found in Inventory Table.
问题原因:Bucket未配置清单规则。
解决方案:如果您需要获取存储空间(Bucket)中指定文件(Object)的数量、大小、存储类型、加密状态等信息,请配置清单规则。具体操作,请参见PutBucketInventory。
错误消息:The specified bucket does not exist.
问题原因:Bucket命名不符合规范。
解决方案:检查并确保Bucket命名符合规范。
Bucket命名规范如下:
只包含小写字母、数字和短划线(-)。
以小写字母或者数字开头和结尾。
长度在3~63字节之间。
错误消息:The specified key does not exist.
问题原因:
Object命名不符合规范。
触发生命周期管理规则,Object被删除。
Object被其他具有合法权限的用户通过MOS控制台、MOS客户端或API等方式删除了。
目标Bucket与其他Bucket存在跨区域复制关系,其他Bucket中执行的删除操作被同步到目标Bucket中,此时Object也会被删除。
解决方案:
确保请求的Object命名符合规范。Object名称不能以正斜线(/)或者反斜线(\)开头,需使用UTF-8编码,且长度在1~1023字节之间。
检查MOS设置的生命周期规则,确认请求的Object未触发删除规则。详情请参见设置生命周期规则。
确认其他具有合法权限的用户未删除请求的Object。
检查Bucket配置的跨区域复制规则,确认请求的Object未被删除。详情请参见设置跨区域复制。
错误消息:The specified upload does not exist. The upload ID may be invalid, or the
upload may have
been aborted or completed.
问题原因:
上传成功后未收到MOS返回的requestId,即实际未上传成功。
分片上传或者断点续传时,部分分片上传成功,但最终未完成上传。
解决方案:
如果是上传Object资源后访问404,确认上传后收到返回的requestId。
如果是分片上传或断点续传,以调用CompleteMultipartUpload接口返回的HTTP状态码200以及requestId为准。详情请参见InitiateMultipartUpload。
错误消息:The specified version does not exist.
问题原因:指定的Object版本不存在。
解决方案:列举、下载或删除指定版本Object时需指定版本ID,您可以通过GetBucketVersions(ListObjectVersions)获取Object的所有版本ID。
错误消息:The specified live channel does not exist.
问题原因:指定的LiveChannel不存在。
解决方案:MOS推流上传视频时,需要创建一个LiveChannel,并获取对应的推流地址。详情请参见RTMP推流上传。
错误消息:The specified bucket policy does not exist.
问题原因:请求的Bucket没有配置授权策略(Policy)。
解决方案:如果您需要授权其他用户访问您的MOS资源,建议配置Bucket Policy。具体操作,请参见添加Bucket授权策略(Bucket Policy)。
错误消息:The bucket you specified does not have replication configuration.
问题原因:此Bucket未配置跨区域复制规则。
解决方案:如果您需要将源Bucket中Object的改动(新建、覆盖、删除等操作)自动、异步(近实时)
复制到目标Bucket中,以实现跨区域容灾或数据复制等需求,建议配置跨区域复制规则。具体操作,请参见设置跨区域复制。
错误消息:The BucketReplicationRule you specified does not exist.
问题原因:指定的跨区域复制规则不存在。
解决方案:获取某个Bucket的跨区域复制进度或者或删除Bucket的复制配置时
需指定复制规则ID,您可以通过GetBucketReplication获取目标Bucket的复制规则ID。
错误消息:The bucket you specified does not have transfer acceleration configuration.
问题原因:指定的Bucket未开启传输加速。
解决方案:如果您需要远距离数据传输加速、加速上传和下载GB或TB级大文件以及非静态、非
热点数据下载加速等场景,请开启传输加速服务。详情请参见传输加速。
错误消息:No Such Image Channel.
问题原因:该图片频道不存在。
解决方案:图片频道是老版图片服务手册中的概念,老版图片功能不再更新。推荐使用新版图片处理指南,详情请参见简介。
错误消息:No Such Image Style.
问题原因:该图片样式不存在。
解决方案:如果您需要在一个样式(Style)中包含多个图片处理
参数,建议您创建样式,以便快速实现复杂的图片处理操作。详情请参见图片样式。
错误消息:The bucket you specified does not have cache control configuration.
问题原因:该Bucket未配置缓存控制策略。
解决方案:如果您需要实现不同的缓存控制策略,请在HTTP请求和响应中使用cache-control
通用消息头。MOS支持在PutObject、AppendObject、GetObject等API接口中指定cache-control。
本文介绍MOS返回405错误的原因和解决方案。
错误信息:The specified method is not allowed against this resource.
问题原因:使用了MOS不支持的方法来请求访问资源。
解决方案:请使用API概览中支持的请求方式进行重试。
本文介绍MOS返回409错误的原因和解决方案。
错误消息:The requested bucket name is not available.
问题原因:该Bucket已存在或被其他用户占用。
解决方案:请使用新的Bucket名称创建Bucket。创建Bucket的详情,请参见创建存储空间。
错误消息:Bucket already exists can't modify location.
问题原因:不允许修改已创建Bucket所在的地域。
解决方案:重新创建Bucket,并在创建过程中指定Bucket所在的地域。
错误消息:Cannot modify existing bucket's storage class.或Bucket already exists
can't modify
storage
type.
问题原因:不允许修改已创建Bucket的存储类型。
解决方案:重新创建Bucket,并在创建过程中指定Bucket的存储类型。
错误消息:Bucket already exists can't modify data redundancy type.
问题原因:不允许修改已创建Bucket的数据容灾类型。
解决方案:重新创建Bucket,并在创建过程中指定Bucket的数据容灾类型。
错误消息:The bucket you tried to delete is not empty.
问题原因:要删除的Bucket中存在未删除的Object、未完成的分片上传任务或Livechannel。
解决方案:
删除Bucket中所有的文件(Object)。
删除文件的操作,请参见删除文件。如果文件数量较多,推荐结合生命周期规则批量删除文件,请参见设置生命周期规则。
删除Bucket中因分片上传或断点续传产生的碎片(Part)。
删除碎片的操作,请参见管理碎片。
删除Bucket中所有的Livechannel。
删除Livechannel的操作,请参见DeleteLiveChannel。有关Livechannel的信息,请参见RTMP推流上传。
错误消息:Position is not equal to file length.
问题原因:
Position的值和当前Object的长度不一致。
Position值为0时,如果没有同名的Appendable Object,或者同名Appendable
Object长度为0,则请求成功;其他情况均视为Position和Object长度不匹配的情形,返回此错误码。
解决方案:您可以通过响应头x-MOS-next-append-position得到下一次Position的值,并再次发起请求。由于并发的关系,
即使把Position的值设置为x-MOS-next-append-position,该请求依然可能因为PositionNotEqualToLength而失败。请参见AppendObject进行排查。
错误消息:The object you specified already exists and can not be overwritten.
问题原因:当请求的Header中携带x-MOS-forbid-overwrite=true时,表示禁止覆盖同名文件。如果文件已存在,则返回该错误。
解决方案:
您可以通过以下两种方式在简单上传、拷贝文件、分片上传等场景中覆盖同名文件:
不携带x-MOS-forbid-overwrite参数,或将此参数设置为false。
对Bucket开启版本控制,此时被覆盖的文件会以历史版本的形式保存下来,您可以随时恢复任意历史版本文件。
错误消息:Live channel is disabled by owner.
问题原因:LiveChannel处于disabled状态时,MOS会
禁止您对该LiveChannel进行推流操作。如果您正在向该
LiveChannel推流,那么推流的客户端会被强制断开(会有10s左右的延迟)。
解决方案:请确保LiveChannel处于enabled状态时,
再对该LiveChannel进行推流操作。详情请参见PutLiveChannelStatus。
错误消息:Live channel couldn't be updated or deleted when channel is live.
问题原因:LiveChannel处于Live状态,即连接上推流地址后客户端处于推流中的状态时,不允许更新或删除LiveChannel等操作。
解决方案:请在客户端停止推流后进行更新或删除LiveChannel等操作。
错误消息:The object you specified is immutable.
问题原因:您试图删除或修改Bucket内处于保护状态的Object。
解决方案:在Bucket的合规保留策略的保留周期内,不允许删除
或修改Bucket内的Object。保留周期到期后,您可以删除或修改
Bucket内的Object。请通过GetBucketWorm获取保留周期。
错误消息:The restore operation is in progress.
问题原因:您已经成功提交RestoreObject请求,且服务端正在执行解冻操作。
解决方案:请不要重复提交RestoreObject请求。
错误消息:The request was rejected because the key state is Disabled.
问题原因:KMS服务密钥已被禁用。
解决方案:调用EnableKey接口启用指定的主密钥进行加解密。
错误消息:The request was rejected because the key state is PendingDeletion.
问题原因:KMS服务密钥处于待删除状态。
解决方案:密钥状态处于待删除状态时,无法用于加密、解密、生成数据密钥操作。
主密钥一旦删除,将无法恢复,使用该主密钥加密的内容及产生的数据密钥也将无法解密。因此,对于主密钥的删除,
KMS只提供申请删除的方式,而不提供直接删除的方式,详情请参见ScheduleKeyDeletion。
如果您有删除密钥方面的需求,可以通过DisableKey禁用密钥。
错误消息:The request was rejected because the key state is PendingImport.
问题原因:KMS服务密钥正处于预导入状态。
解决方案:KMS服务密钥正处于预导入状态时,无法用于加密、解密、
生成数据密钥操作。请调用ImportKeyMaterial接口完成密钥材料的导入。
错误消息:The WORM Configuration already exists.
问题原因:合规保留策略已存在。
解决方案:仅支持为目标Bucket配置一条合规保留策略。
合规保留策略未锁定前,您可以删除该策略,然后新建策略。详情请参见合规保留策略。
错误消息:The Inventory Configuration already exists.
问题原因:Bucket清单规则已存在。
解决方案:为目标Bucket配置清单规则时,确保清单名称在当前Bucket
下全局唯一。您可以通过GetBucketInventory获取已配置的清单规则。
本文介绍MOS返回411错误的原因和解决方案。
错误信息:You must provide the Content-Length HTTP header.
问题原因:缺少内容长度,消息为非chunked encoding或者没有携带Content-Length。
解决方案:请确保请求头采用了chunked encoding的编码方式,或者设置了Content-Length。
错误消息:The object is not appendable.
问题原因:对一个不是可追加类型(Appendable)的Object执行AppendObject操作。
解决方案:MOS有三种类型的Object,分别为Normal、Appendable和Multipart。
只有Appendable类型的Object才能执行AppendObject操作。请通过GetBucket
(ListObjects)接口获取Object的存储类型。
本文介绍MOS返回412错误的原因和解决方案。
错误信息:At least one of the pre-conditions you specified did not hold.
问题原因:预处理错误,下载条件不符合。可能的原因如下:
指定了If-Unmodified-Since,但指定的时间早于Object实际修改时间 。
指定了If-Match,但源Object的ETag值和传入的ETag不一致。
解决方案:
指定了If-Unmodified-Since,且指定的时间不早于Object的实际修改时间。
指定了If-Match,且传入的ETag和源Object的ETag一致。
本文介绍MOS返回416错误的原因和解决方案。
错误消息:The requested range cannot be satisfied.
问题原因:通过HTTP Range请求获取大文件的部分内容时,选取了无效的范围。
解决方案:MOS不支持多Range参数,即不支持指定多个范围。ByteRange指请求资源的范围,单位为Byte(字节),ByteRange有效区间在0至object
size -
1的范围内。假设文件的总大小为2000字节,指定不同的ByteRange,其下载行为说明如下:
Range: bytes=0-499:从文件开始部分到指定字节的内容,即下载1~500字节的内容。
Range: bytes=-500:最后500字节的内容,即下载1501~2000字节的内容。
Range: bytes=500-:从第500字节开始到文件结束部分的内容,即下载501~2000字节的内容。
Range: bytes=0-:从第一个字节开始到最后一个字节的内容,即下载完整的文件1~2000字节的内容。
本文介绍MOS返回424错误的原因和解决方案。
错误消息:Mirroring failed, please check your mirror configuration.
问题原因:配置的回源地址无法访问、回源地址不存在请求的文件等。
解决方案:请参见概述排查回源地址是否有效。
错误消息:Read body from mirror host failed, please check your mirror host.
问题原因:无法从镜像源站读取数据。
解决方案:请检查是否能正常访问镜像回源地址中的文件。
错误消息:Bytes read is not equal to expected.
问题原因:从镜像源站读取的数据缺失或无效。
解决方案:请检查源站是否能向MOS正常发送数据。
错误消息:MD5 in header() is not equal to MD5 calculated.
问题原因:回源文件的MD5值与Content-MD5值不匹配,MOS不保存回源文件。
解决方案:请检查是否因源站服务和网络通讯异常,导致了回源文件的MD5值与Content-MD5值不匹配。
错误消息:The object you specified already exists and can not be overwritten.
问题原因:文件已存在且不可被覆盖。
解决方案:不支持覆盖同名文件。请通过GetBucket (ListObjects)检查已存在的文件。
错误消息:The object you specified is immutable.
问题原因:Bucket处于被保护状态时,无法向该Bucket写入文件。
解决方案:确保回源文件写入的Bucket未处于合规保留策略的保护状态。请通过GetBucketWorm获取Bucket的保护状态。
错误消息:Meta is too large.
问题原因:用户自定义元信息超出限值。
解决方案:一个Object可以有多个自定义元信息,但所有的自定义元信息总大小不能超过8 KB。
错误消息:Mirror request is rejected by QoS.
问题原因:每秒请求数QPS(Query Per Second)超出限值。
解决方案:对于镜像回源,中国各地域默认QPS为2000、流量为2 Gbit/s;海外各地域默认QPS为1000、流量为1
Gbit/s。如您的业务有更大的QPS需求,请联系技术支持。
本文介绍MOS返回500错误的原因和解决方案。
错误消息:Please contact the server administrator, MOS@service.moduyun.com.
问题原因:服务繁忙或内部发生错误。
解决方案:请稍后重试。若重试后仍无法解决您的问题,请联系摩杜云对象存储MOS技术支持。
本文介绍MOS返回503错误的原因和解决方案。
错误信息:Please reduce your upload request traffic.
问题原因:下载流量超出限制。
解决方案:内外网默认下载流量上限为5 Gbit/s。有调整需求请联系摩杜云客服
错误信息:Please reduce your upload request traffic.
问题原因:上传流量超出限制。
解决方案:内外网默认上传流量上限为5 Gbit/s。有调整需求请联系摩杜云客服
错误消息:Qps limit for the meta operation is exceeded.
问题原因:超出默认设置的QPS阈值。
MOS针对以下管控类API进行QPS限制:
Service的操作:GetService (ListBuckets)
Bucket的操作,例如PutBucket、GetBucketLifecycle等
跨域资源共享的操作,例如PutBucketCORS、GetBucketCORS等
LiveChannel的操作,例如PutLiveChannel、DeleteLiveChannel等
解决方案:建议您延迟几秒后重试。
错误消息:Thread pool is almost full, please retry later.
问题原因:MOS服务端繁忙。
解决方案:服务不可用,请稍后重试。
错误消息:Max total qps limit is exceeded.
问题原因:每秒请求数QPS超过限制。
解决方案:单个账号的总QPS为10,000,但在不同的读写方式下,实际能达到的值如下:
顺序读写:2,000
如果您在上传大量文件时,在命名上使用了顺序前缀(如时间戳或字母顺序),可能会出现大量文件索引集中存储于存储空间中某个特定分区的情况,此时如果您的请求速率过大,会导致请求速率下降。建议您在上传大量文件时,不要使用顺序前缀的文件名。关于如何将顺序前缀改为随机性前缀的方法,请参见MOS性能与扩展性最佳实践。
非顺序读写:10,000
如您的业务有更大的QPS需求,请联系技术支持。
错误消息:Max active request limit is exceeded.
问题原因:请求并发连接数超出限值。
解决方案:请联系技术支持。
错误消息:Please reduce your request rate.
问题原因:图片处理请求并发数过高,消耗的CPU核数超出限值。
解决方案:请合理降低图片处理请求并发数。如您的业务有更高的需求,请联系技术支持。
请参见摩杜云存储服务协议。
请参见对象存储MOS服务等级协议。
本服务条款是摩杜云计算有限公司(以下简称“摩杜云”)与您就对象存储(Moduyun Object Storage
,简称MOS)等相关事项所订立的有效合约。您通过盖章、网络页面点击确认或以其他方式选择接受本服务条款,
包括但不限于未点击确认本服务条款而事实上使用了摩杜云MOS服务,即表示您与摩杜云已达成协议并同意接受本服务条款的全部约定内容。如若双方盖章文本与网络页面点击确认或以其他方式选择接受之服务条款文本,存有不一致之处,以双方盖章文本为准。
关于本服务条款,提示您特别关注限制、免责条款,摩杜云对您违规、违约行为的认定处理条款,以及管辖法院的选择条款等。限制、免责条款可能以加粗或加下划线形式提示您注意。在接受本服务条款之前,请您仔细阅读本服务条款的全部内容。如果您对本服务条款的条款有疑问的,请通过摩杜云相关业务部门进行询问,摩杜云将向您解释条款内容。如果您不同意本服务条款的任意内容,或者无法准确理解摩杜云对条款的解释,请不要进行后续操作。
1.1.本条款中“服务”指:摩杜云向您提供www.moduyun.com网站上所展示的对象存储(MOS)以及相关的技术及网络支持服务。
1.2.摩杜云提供的服务必须符合本服务条款的约定。
2.1.服务费用将在您订购页面予以列明公示,您应按照www.moduyun.com网站上现时有效的价格体系支付相应服务费用。
2.2.MOS服务先使用后付费:您开通服务后,摩杜云即为您提供服务。摩杜云每小时对您前一小时的实际使用量进行计费并出具账单,并按照账单金额从您的摩杜云账户中划扣服务费用。扣费规则请查看www.moduyun.com上的页面公告且以页面公布的当时有效的计费模式与标准为准。
2.3.摩杜云保留在您未按照约定支付全部费用之前不向您提供服务和/或技术支持,或者终止服务和/或技术支持的权利。
2.4.您完全理解摩杜云价格体系中所有的赠送服务项目或活动均为摩杜云在正常服务价格之外的一次性特别优惠,优惠内容不包括赠送服务项目的修改、更新及维护费用,并且赠送服务项目不可折价冲抵服务价格。
3.1.您的权利、义务
3.1.1.您同意遵守本服务条款以及服务展示页面的相关管理规范及流程。您了解上述协议及规范等的内容可能会不时变更。如本服务条款的任何内容发生变动,摩杜云应通过提前30天在www.moduyun.com的适当版面公告向您提示修改内容。如您不同意摩杜云对本服务条款相关条款所做的修改,您有权停止使用摩杜云的服务,此等情况下,摩杜云应与您进行服务费结算(如有),并且您应将业务数据迁出。如您继续使用摩杜云服务,则视为您接受摩杜云对本服务条款相关条款所做的修改。
3.1.2.您应按照摩杜云的页面提示及本服务条款的约定支付相应服务费用。
3.1.3.您承诺:
3.1.3.1.如果您利用摩杜云提供的服务进行的经营或非经营活动需要获得国家有关部门的许可或批准的,应获得该有关的许可或批准。包括但不限于以下内容:
如果您的网站使用MOS服务存储数据须保证您的网站均获得国家有关部门的许可或批准;
如您网站提供非经营性互联网信息服务的,必须办理非经营性网站备案,并保证所提交的所有备案信息真实有效,在备案信息发生变化时及时在备案系统中提交更新信息;
如您网站提供经营性互联网信息服务的,还应自行在当地通信管理部门取得经营性网站许可证;
如您如提供BBS等电子公告服务的,也需根据相关法规政策要求备案或获得相应批准;
如您经营互联网游戏网站的,您应依法获得网络文化经营许可证;
如您经营互联网视频网站的,您应依法获得信息网络传播视听节目许可证;
若您从事新闻、出版、教育、医疗保健、药品和医疗器械等互联网信息服务,依照法律、行政法规以及国家有关规定须经有关主管部门审核同意,在申请经营许可或者履行备案手续前,应当依法经有关主管部门审核同意。
您理解并认可,以上列举并不能穷尽您进行经营或非经营活动需要获得国家有关部门的许可或批准的全部类型,您应获得有关的许可或批准,并应符合国家及地方不时颁布相关法律法规之要求。
3.1.3.2.除摩杜云明示许可外,不得修改、翻译、改编、出租、转许可、在信息网络上传播或转让摩杜云提供的软件,也不得逆向工程、反编译或试图以其他方式发现摩杜云提供的软件的源代码;
3.1.3.3.若摩杜云的服务涉及第三方软件之许可使用的,您同意遵守相关的许可协议的约束;
3.1.3.4.不散布电子邮件广告、垃圾邮件(SPAM):不利用摩杜云提供的服务散发大量不受欢迎的或者未经请求的电子邮件、电子广告或包含反动、色情等有害信息的电子邮件;
3.1.3.5.不利用摩杜云提供的资源和服务上传(Upload)、下载(download)、储存、发布如下信息或者内容,不为他人发布该等信息提供任何便利(包括但不限于设置URL、BANNER链接等):
3.1.3.5.1.违反国家规定的政治宣传和/或新闻信息;
3.1.3.5.2.涉及国家秘密和/或安全的信息;
3.1.3.5.3.封建迷信和/或淫秽、色情、下流的信息或教唆犯罪的信息;
3.1.3.5.4.博彩有奖、赌博游戏、“私服”、“外挂”等非法互联网出版活动;
3.1.3.5.5.违反国家民族和宗教政策的信息;
3.1.3.5.6.妨碍互联网运行安全的信息;
3.1.3.5.7.侵害他人合法权益的信息和/或其他有损于社会秩序、社会治安、公共道德的信息或内容;
3.1.3.5.8.其他违反法律法规、部门规章或国家政策的内容。
3.1.3.6.不应大量占用,亦不得导致如程序或进程等大量占用摩杜云云计算资源(如云服务器、网络带宽、存储空间等)所组成的平台(以下简称“云平台”)中服务器内存、CPU或者网络带宽资源,给摩杜云云平台或者摩杜云的其他用户的网络、服务器(包括但不限于本地及外地和国际的网络、服务器等)、产品/应用等带来严重的负荷,影响摩杜云与国际互联网或者摩杜云与特定网络、服务器及摩杜云内部的通畅联系,或者导致摩杜云云平台产品与服务或者摩杜云的其他用户网站所在的服务器宕机、死机或者用户基于云平台的产品/应用不可访问等;
3.1.3.7.不进行任何破坏或试图破坏网络安全的行为(包括但不限于钓鱼,黑客,网络诈骗,网站或空间中含有或涉嫌散播:病毒、木马、恶意代码,及通过虚拟服务器对其他网站、服务器进行涉嫌攻击行为如扫描、嗅探、ARP欺骗、DOS等);
3.1.3.8.不进行任何改变或试图改变摩杜云提供的系统配置或破坏系统安全的行为;
3.1.3.9.不利用摩杜云提供的服务从事损害摩杜云、摩杜云的关联公司或摩杜巴巴集团内包括但不限于摩杜巴巴、淘宝、支付宝、摩杜妈妈、摩杜金融等(以下统称为摩杜巴巴公司)各公司、网站合法权益之行为,前述损害摩杜巴巴公司、网站合法权益的行为包括但不限于违反摩杜巴巴公司公布的任何服务协议/条款、管理规范、交易规则等规范内容、破坏或试图破坏摩杜巴巴公司公平交易环境或正常交易秩序等;
3.1.3.10.不从事其他违法、违规或违反摩杜云服务条款的行为;
3.1.3.11.如摩杜云发现您违反上述条款的约定,有权根据情况采取相应的处理措施,包括但不限于立即终止服务、中止服务或删除相应信息等。如果第三方机构或个人对您提出质疑或投诉,摩杜云将通知您,您有责任在规定时间内进行说明并出具证明材料,如您未能提供相反证据或您逾期未能反馈的,摩杜云将采取包括但不限于立即终止服务、中止服务或删除相应信息等处理措施。因您未及时更新联系方式或联系方式不正确而致使未能联系到您的,亦视为您逾期未能反馈。
3.1.4.您理解及同意,中华人民共和国的国家秘密受法律保护,您有保守中华人民共和国的国家秘密的义务,您使用MOS服务应遵守相关保密法律法规的要求,并不应危害中华人民共和国国家秘密的安全,否则您将受到相关法律的追究。
3.1.5.您不应在摩杜云服务或平台之上安装、使用盗版软件;您对自己行为(如自行安装的软件和进行的操作)所引起的结果承担全部责任。
3.1.6.您对自己存放在摩杜云云平台上的数据以及进入和管理摩杜云云平台上各类产品与服务的口令、密码的完整性和保密性负责。因您维护不当或保密不当致使上述数据、口令、密码等丢失或泄漏所引起的一切损失和后果均由您自行承担。
3.1.7.您对自己存放在摩杜云云平台上的数据内容负责,摩杜云提示您谨慎判断数据内容的合法性并对此予以监督,如因上传、储存的内容违反法律法规、部门规章或国家政策,由此造成的全部结果及责任由您自行承担,并且摩杜云系统记录有可能作为您违反法律法规的证据。
3.1.8.您应向摩杜云提交执行本服务条款的联系人和管理用户网络及云平台上各类产品与服务的人员名单和联系方式并提供必要的协助。如以上人员发生变动,您应自行将变动后的信息进行在线更新并及时通知摩杜云。因您提供的人员的信息不真实、不准确、不完整,以及因以上人员的行为或不作为而产生的结果,均由您负责。
3.1.9.您须依照《互联网信息服务管理办法》、《互联网电子公告服务管理规定》等法律法规的规定保留自己网站的访问日志记录,包括发布的信息内容及其发布时间、互联网地址(IP)、域名等,国家有关机关依法查询时应配合提供。您自行承担未按规定保留相关记录而引起的全部法律责任。
3.1.10.您了解摩杜云无法保证其所提供的服务毫无瑕疵(如摩杜云安全产品并不能保证您的硬件或软件的绝对安全),但摩杜云承诺不断提升服务质量及服务水平。所以您同意:即使摩杜云提供的服务存在瑕疵,但上述瑕疵是当时行业技术水平所无法避免的,其将不被视为摩杜云违约。您同意和摩杜云一同合作解决上述瑕疵问题。
3.1.11.为了数据的安全,您应负责您数据的备份工作。
3.2. 摩杜云的权利、义务
3.2.1.摩杜云应按照服务条款约定提供服务。
3.2.2.服务期限内,摩杜云将为您提供如下客户服务:
3.2.2.1.摩杜云为付费用户提供7×24售后故障服务,并为付费用户提供有效的联系方式并保证付费用户能够联系到故障联系人。故障联系人在明确故障后及时进行反馈;
3.2.2.2.摩杜云提供7×24小时的在线工单服务系统,解答客户在使用中的问题。
3.2.3.摩杜云将消除您非人为操作所出现的故障,但因您原因和/或不可抗力以及非摩杜云控制范围之内的事项除外。
3.2.4.摩杜云应严格遵守保密义务。
4.1 摩杜云理解并认可,您通过摩杜云提供的服务,加工、存储、上传、下载、分发以及通过其他方式处理的数据,均为您的用户业务数据,您完全拥有您的用户业务数据。
4.2 就用户业务数据,摩杜云除执行您的服务要求外,不进行任何未获授权的使用及披露;但以下情形除外:
4.2.1
在国家有关机关依法查询或调阅用户业务数据时,摩杜云具有按照相关法律法规或政策文件要求提供配合,并向第三方或者行政、司法等机构披露的义务;
4.2.2 您和摩杜云另行协商一致。
4.3
您可自行对您的用户业务数据进行删除、更改等操作。如您自行释放服务或删除数据的,摩杜云将删除您的数据,按照您的指令不再保留该等数据。就数据的删除、更改等操作,您应谨慎操作。
4.4.
当服务期届满、服务提前终止(包括但不限于双方协商一致提前终止,其他原因导致的提前终止等)或您发生欠费时,除法律法规明确约定、主管部门要求或双方另有约定外,摩杜云仅在一定的缓冲期(以您所订购的服务适用的产品文档、服务说明等所载明的时限为准)内继续存储您的用户业务数据(如有),缓冲期届满摩杜云将删除所有用户业务数据,包括所有缓存或者备份的副本,不再保留您的任何用户业务数据。
4.5.
用户业务数据一经删除,即不可恢复;您应自行承担数据因此被删除所引发的后果和责任,您理解并同意,摩杜云没有继续保留、导出或者返还用户业务数据的义务。
4.6.
根据您与摩杜云协商一致,摩杜云在您选定的数据中心存储用户业务数据。摩杜云恪守对用户的安全承诺,根据适用的法律保护用户存储在摩杜云数据中心的数据。
5.1.您应保证提交摩杜云的素材、对摩杜云服务的使用及使用摩杜云服务所产生的成果未侵犯任何第三方的合法权益。如有第三方基于侵犯版权、侵犯第三人之权益或违反中国法律法规或其他适用的法律等原因而向摩杜云提起索赔、诉讼或可能向其提起诉讼,则您应赔偿摩杜云因此承担的费用或损失,并使摩杜云完全免责。
5.2.如果第三方机构或个人对您使用摩杜云服务所涉及的相关素材的知识产权归属提出质疑或投诉,您有责任出具相关知识产权证明材料,并配合摩杜云相关投诉处理工作。
5.3.您承认摩杜云向您提供的任何资料、技术或技术支持、软件、服务等的知识产权均属于摩杜云或第三方所有。除摩杜云或第三方明示同意外,您无权复制、传播、转让、许可或提供他人使用上述资源,否则应承担相应的责任。
6.1.保密资料指由一方向另一方披露的所有技术及非技术信息(包括但不限于产品资料,产品计划,价格,财务及营销规划,业务战略,客户信息,客户数据,研发,软件硬件,API应用数据接口,技术说明,设计,特殊公式,特殊算法等)。
6.2.本服务条款任何一方同意对获悉的对方之上述保密资料予以保密,并严格限制接触上述保密信息的员工遵守本条之保密义务。除非国家机关依法强制要求或上述保密资料已经进入公有领域外,接受保密资料的一方不得对外披露。
6.3.本服务条款双方明确认可各自用户信息和业务数据等是各自的重要资产及重点保密信息。本服务条款双方同意尽最大的努力保护上述保密信息等不被披露。一旦发现有上述保密信息泄露事件,双方应合作采取一切合理措施避免或者减轻损害后果的产生。
6.4.本条款不因本服务条款的终止而失效。
7.1.您自开通之日起即可使用摩杜云服务。
7.2.您应保持账户余额充足以确保服务的持续使用。如您选择按量付费服务,您应保持账户余额等扣款渠道金额充足,以确保服务的持续使用。如您的账户余额等扣款渠道余额不足导致服务欠费的,则摩杜云将暂停为您提供按量付费服务。
7.2.1
您可以在“用户控制台”自助申请开通延期免停权益,摩杜云将提供一定的延停延停额度/或延停时长(“延停权益”),在延停额度/或延停时长期内(“延期停服期间”)内仍可继续使用摩杜云相关服务,并应按正常费用标准缴纳服务费用。延期停服期满您仍未付清所欠服务费用的,摩杜云将暂停提供按量付费服务、冻结您账号下的相关操作。
7.2.2 您享有的延停权益,由摩杜云根据您的消费情况、信用状况等综合评定并适时调整,以您“用户控制台”的实际展示为准。
7.2.3 您也可自行关闭延停额度或通过摩杜云工作人员关闭延停时长,您关闭延停权益的,摩杜云将自您欠费且关闭延停权益之时起暂停按量付费服务。
7.2.4
自摩杜云暂停服务之日起一定期限内(“宽限期”),摩杜云仍将存储您的数据,并持续计算存储费用;宽限期满,您仍未支付所欠服务费用的,您保存在摩杜云的全部数据将会被删除并清空且用不可恢复。
7.3.发生下列情形,服务将被终止:
7.3.1.双方协商一致提前终止的;
7.3.2.您严重违反本服务条款(包括但不限于a.您未按照约定履行付款义务,及/或b.您严重违反法律规定等),摩杜云有权提前终止服务并且您仍应支付尚未支付的服务费用。
7.3.3.您理解并充分认可,虽然摩杜云已经建立(并将根据技术的发展不断完善)必要的技术措施来防御包括计算机病毒、网络入侵和攻击破坏(包括但不限于DDOS)等危害网络安全事项或行为(以下统称该等行为),但鉴于网络安全技术的局限性、相对性以及该等行为的不可预见性,因此如因您网站遭遇该等行为而给摩杜云或者摩杜云的其他的网络或服务器(包括但不限于本地及外地和国际的网络、服务器等)带来危害,或影响摩杜云与国际互联网或者摩杜云与特定网络、服务器及摩杜云内部的通畅联系,摩杜云可决定暂停或终止服务。如果终止服务的,将按照实际提供服务计算服务费用,并且您仍应支付您尚未支付的服务费用(如有)。
7.3.4.摩杜云可提前30天在www.moduyun.com上通告或给您发站内通知或书面通知的方式终止本服务条款。届时摩杜云应将您已支付但未消费的款项退还至您的摩杜云账户。
8.1.本服务条款任何一方违约均须依法承担违约责任。
8.2.您理解,鉴于计算机、互联网的特殊性,下述情况不属于摩杜云违约:
8.2.1.摩杜云在进行服务器配置、维护时,需要短时间中断服务;
8.2.2.由于Internet上的通路阻塞造成您网站访问速度下降。
8.3.如果因摩杜云原因造成您连续72小时不能正常使用服务的,您可终止接受服务,但非摩杜云控制之内的原因引起的除外。
8.4.在任何情况下,摩杜云均不对任何间接性、后果性、惩戒性、偶然性、特殊性的损害,包括您使用摩杜云服务而遭受的利润损失承担责任(即使您已被告知该等损失的可能性)。
8.5.在任何情况下,摩杜云对本服务条款所承担的违约赔偿责任总额不超过违约服务对应之服务费总额。
9.1.因不可抗力或者其他意外事件,使得本服务条款的履行不可能、不必要或者无意义的,遭受不可抗力、意外事件的一方不承担责任。
9.2.不可抗力、意外事件是指不能预见、不能克服并不能避免且对一方或双方当事人造成重大影响的客观事件,包括但不限于自然灾害如洪水、地震、瘟疫流行等以及社会事件如战争、动乱、政府行为、电信主干线路中断、黑客、网路堵塞、电信部门技术调整和政府管制等。
10.1.本服务条款受中华人民共和国法律管辖。
10.2.在执行本服务条款过程中如发生纠纷,双方应及时协商解决。协商不成时,任何一方可直接向杭州市西湖区人民法院提起诉讼。
11.1.摩杜云在www.moduyun.com相关页面上的服务说明、价格说明和您确认同意的订购页面是本服务条款不可分割的一部分,如果摩杜云在www.moduyun.com相关页面上的服务说明、价格说明和您确认同意的订购页面与本服务条款有不一致之处,以本服务条款为准。
11.2.摩杜云有权以提前30天在www.moduyun.com上公布或给您发站内通知或书面通知的方式将本服务条款的权利义务全部或者部分转移给摩杜云的关联公司。
11.3.如果任何条款在性质上或其他方面理应地在此协议终止时继续存在,那么应视为继续存在的条款,这些条款包括但不局限于保证条款、保密条款、知识产权条款、法律适用及争议解决条款。
您在使用MOS时如果收到MOS返回的错误信息,可查阅MOS常见错误汇总匹配解决方案。 如果您没有收到具体的错误信息,可根据如下问题分类匹配问题场景和解决方案。
说明 有关MOS常见错误的更多信息,请参见错误响应。
MOS权限问题及排查方法
访问MOS时出现403状态码
并发上传单个大文件
简单上传大文件
Post Object的常见错误及解决方法
上传回调中的常见错误及分析处理
跨域资源共享(CORS)出现的常见错误及解决方案
如何在MCS中反向代理MOS域名并实现HTTPS访问
文件实现强制下载的方法
使用HTTP请求存储在MOS的图片出现403错误
访问MOS资源后资源被强制下载
客户端通过互联网向MOS上传Object速度慢
如何验证Referer防盗链是否生效
设置POST请求的策略
上传图片时EXIF信息处理规则
下载的RAR文件存在乱码
MOS中的视频播放异常
如何统计PUT与GET次数
MCS中无法通过ping命令访问MOS内网域名
如何通过HTTP Range请求分段获取MOS资源
下载的内容与实际内容不一致
IE浏览器下载MOS文件后扩展名被省略
调用Callback时出现“400 call back error”报错
设置跨域规则后调用MOS时出现“No ‘Access-Control-Allow-Origin’”报错
上传资源至MOS时出现“Connect to MOS failed: [Errno -2] Name or service not known”报错
通过SDK访问Bucket时出现“Please send all future requests to this endpoint”报错
SDK网络超时
如何在MCS中反向代理MOS域名并实现HTTPS访问
Bucket访问域名的介绍
异常流量的排查及防护
文件更新后部分地区下载的文件是旧版本
图片处理服务绑定域名时出现“域名绑定在自己的其他Bucket上”报错
防盗链配置及其常见错误
签名错误的排查方法
授予RAM子账户MOS细粒度的访问权限
自签名计算Signature时经常会遇到签名计算失败
MOS控制台获取签名链接超时的说明
Bucket中出现异常Object资源文件
调用MOS的SDK时出现“SignatureDoesNotMatch”报错
图片处理服务处理后的PNG格式图片的透明背景变黑
正常原图处理之后被旋转
图片处理服务导致CORS配置失效
图片处理URL访问时出现“NoSuchStyle, NoSuchKey, NoSuchFile”三种报错
访问图片时出现“Forbidden access to the original image”报错
AssumeRole调用常见问题
Object签名URL相关问题
使用Java SDK实现超时以及重传的代码样例
API设置LifeCycle提示时间格式错误
使用.NET SDK通过MemoryStream方法上传文件到MOS时大小为0
测试版PHP SDK中不能自动检测所需PHP模块
iOS SDK和Android SDK如何开启日志记录功能
使用Java SDK时出现“Connection to XXXX refused”报错
PHP SDK出现“Use of undefined constant CURLOPT_CLOSEPOLICY - assumed”报错
使用JAVA SDK的ContentMD5出现“log4j”报错
MOSFS如何通过www账户挂载Bucket
如何修改MOS服务的Object元数据信息
如何定位MOS文件被删除的信息
MOS的Bucket自动生成名称中包含日期的Object
版权所有 © 广州摩杜云信息科技有限公司 2021 保留一切权利 联系地址:广州市荔湾区黄沙大道粤南大街26-29号 在线联系:4008-521-721按1