对象
对象(Object)是OBS中数据存储的基本单位,一个对象实际是一个文件的数据与其相关属性信息(元数据)的集合体。用户上传至OBS的数据都以对象的形式保存在桶中。
对象包括了Key,Metadata,Data三部分:
-
Key:键值,即对象的名称,为经过UTF-8编码的长度大于0且不超过1024的字符序列。一个桶里的每个对象必须拥有唯一的对象键值。
-
Metadata:元数据,即对象的描述信息,包括系统元数据和用户元数据,这些元数据以键值对(Key-Value)的形式被上传到OBS中。
- 系统元数据由OBS自动产生,在处理对象数据时使用,包括Date,Content-length,Last-modify,Content-MD5等。
- 用户元数据由用户在上传对象时指定,是用户自定义的对象描述信息。
-
Data:数据,即文件的数据内容。
通常,我们将对象等同于文件来进行管理,但是由于OBS是一种对象存储服务,并没有文件系统中的文件和文件夹概念。为了使用户更方便进行管理数据,OBS提供了一种方式模拟文件夹。通过在对象的名称中增加“/”,例如“test/123.jpg”。此时,“test”就被模拟成了一个文件夹,“123.jpg”则模拟成“test”文件夹下的文件名了,而实际上,对象名称(Key)仍然是“test/123.jpg”。
上传对象时,可以指定对象的存储类别,若不指定,默认与桶的存储类别一致。上传后,对象的存储类别可以修改。
在OBS管理控制台和客户端中,用户均可直接使用文件夹的功能,符合文件系统下的操作习惯。
桶
桶(Bucket)是OBS中存储对象的容器。对象存储提供了基于桶和对象的扁平化存储方式,桶中的所有对象都处于同一逻辑层级,去除了文件系统中的多层级树形目录结构。
每个桶都有自己的存储类别、访问权限、所属区域等属性,用户可以在不同区域创建不同存储类别和访问权限的桶,并配置更多高级属性来满足不同场景的存储诉求。
对象存储服务设置有三类桶存储类别,分别为:标准存储、低频访问存储、归档存储,从而满足客户业务对存储性能、成本的不同诉求。创建桶时可以指定桶的存储类别,桶的存储类别可以修改。
在OBS中,桶名必须是全局唯一的且不能修改,即用户创建的桶不能与自己已创建的其他桶名称相同,也不能与其他用户创建的桶名称相同。桶所属的区域在创建后也不能修改。每个桶在创建时都会生成默认的桶ACL(Access Control List),桶ACL列表的每项包含了对被授权用户授予什么样的权限,如读取权限、写入权限等。用户只有对桶有相应的权限,才可以对桶进行操作,如创建、删除、显示、设置桶ACL等。
一个账号可创建100个桶。每个桶中存放的对象的数量和大小总和没有限制,用户不需要考虑数据的可扩展性。
由于OBS是基于REST风格HTTP和HTTPS协议的服务,您可以通过URL(Uniform Resource Locator)来定位资源。
OBS中桶和对象的关系如图所示:
并行文件系统
并行文件系统(Parallel File System)是对象存储服务(Object Storage Service,OBS)提供的一种经过优化的高性能文件系统,提供毫秒级别访问时延,以及TB/s级别带宽和百万级别的IOPS,能够快速处理高性能计算(HPC)工作负载。
访问密钥(AK/SK)
OBS支持通过AK/SK认证方式进行认证鉴权,即使用Access Key ID(AK)/Secret Access Key(SK)加密的方法来验证某个请求发送者身份。当您使用OBS提供的API进行二次开发并通过AK/SK认证方式完成认证鉴权时,需要按照OBS定义的签名算法来计算签名并添加到请求中。
OBS支持使用永久AK/SK鉴权,也支持通过临时AK/SK和securitytoken进行认证鉴权。
永久AK/SK
用户可以在“我的凭证”页面创建永久AK/SK。
- Access Key Id(AK):访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
- Secret Access Key(SK):与访问密钥ID结合使用的私有访问密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
临时AK/SK
临时AK/SK和securitytoken是系统颁发给用户的临时访问令牌,有效期范围为15分钟至24小时,过期后需要重新获取。临时AK/SK和securitytoken遵循权限最小化原则,可应用于临时访问OBS。如果未使用securitytoken,会返回403错误。
- 临时Access Key Id:临时访问密钥ID。与私有访问密钥关联的唯一标识符;访问密钥ID和私有访问密钥一起使用,对请求进行加密签名。
- 临时Secret Access Key:与临时访问密钥ID结合使用的临时私有访问密钥,对请求进行加密签名,可标识发送方,并防止请求被修改。
- securitytoken:与临时访问密钥ID和临时私有访问密钥结合使用,可以访问指定账号下所有资源。
当使用如下工具访问OBS资源时,需配置AK/SK用于生成鉴权信息进行安全认证。
工具 | AK/SK配置方式 |
---|---|
OBS Browser+ | 在配置账号时配置AK和SK。 |
API | 在计算签名时添加AK和SK到请求中。 |
终端节点和访问域名
终端节点(Endpoint):OBS为每个区域提供一个终端节点,终端节点可以理解为OBS在不同区域的区域域名,用于处理各自区域的访问请求。
访问域名:OBS会为每一个桶分配默认的访问域名。访问域名是桶在互联网中的域名地址,可应用于直接通过域名访问桶的场景,比如:云应用开发、数据分享等。
OBS桶访问域名的结构为:BucketName.Endpoint。其中BucketName为桶名称,Endpoint为桶所在区域的终端节点(区域域名)。
除了桶访问域名外,下表列出了与OBS相关的其他域名的结构、协议类型等信息,以便您全面地了解OBS域名。
域名类型 | 域名结构 | 说明 | 协议类型 |
---|---|---|---|
区域域名 | Endpoint | 不同的区域分配各自对应的域名,即各区域的终端节点。请向企业管理员获取区域和终端节点信息。 | HTTPS/HTTP |
桶访问域名 | BucketName.Endpoint | 桶创建成功后,可以使用桶访问域名来访问桶。您可以根据访问域名结构自行拼接,也可以通过在OBS管理控制台、OBS Browser+上查看桶基本信息获取。 | HTTPS/HTTP |
对象访问域名 | BucketName.Endpoint/ObjectName | 对象上传到桶中后,可以使用对象访问域名来访问桶中的指定对象。您可以根据访问域名结构自行拼接,也可以通过在OBS管理控制台、OBS Browser+上查看对象属性获取。 | HTTPS/HTTP |
静态网站访问域名 | BucketName.obs-website.Endpoint | 桶配置为静态网站托管时,桶的静态网站访问域名。 | HTTPS/HTTP |
区域和可用区
什么是区域、可用区?
我们用区域和可用区来描述数据中心的位置,您可以在特定的区域、可用区创建资源。
- 区域(Region)指物理的数据中心。每个区域完全独立,这样可以实现最大程度的容错能力和稳定性。资源创建成功后不能更换区域。
- 可用区(AZ,Availability Zone)是同一区域内,电力和网络互相隔离的物理区域,一个可用区不受其他可用区故障的影响。一个区域内可以有多个可用区,不同可用区之间物理隔离,但内网互通,既保障了可用区的独立性,又提供了低价、低时延的网络连接。
如何选择区域?
建议就近选择靠近您或者您的目标用户的区域,这样可以减少网络时延,提高访问速度。
如何选择可用区?(OBS部分区域支持3AZ)
是否将资源放在同一可用区内,主要取决于您对容灾能力和网络时延的要求。
- 如果您的应用需要较高的容灾能力,建议您将资源部署在同一区域的不同可用区内。
- 如果您的应用要求实例之间的网络延时较低,则建议您将资源创建在同一可用区内。
区域和终端节点
当您通过API使用资源时,您必须指定其区域终端节点。