上传数据
在将存储器组织到存储区之后,可以通过上载数据来添加一些对象。
根据您希望使用存储器的方式,有多种方法可以获取数据来提供给系统。 数据研究员有一些用于分析的大型文件,系统管理员需要使数据库备份与本地文件保持同步,而开发者正在编写需要读写数百万个文件的软件。 这其中每个场景都可通过不同的数据摄入方法来进行最佳处理。
某些应用程序可能希望限制某个用户或服务 ID 仅能上传数据,而无法读取存储桶中的任何数据。 这可以通过对象写程序 IAM 角色 来实现。
使用控制台
通常,使用基于 Web 的控制台并不是使用 Object Storage 的最常见方法。 对象限制为 200 MB,并且文件名和密钥完全相同。 可以同时上传多个对象,并且如果浏览器支持多个线程,那么将使用分块方式并行上传各个对象。 Aspera 高速传输支持更大的对象大小,并且性能更高(取决于网络因素)。
使用兼容工具
一些用户希望使用独立实用程序来与其存储器进行交互。 由于 Cloud Object Storage API支持 S3 API中最常见的一组操作,许多 S3-compatible 工具也可以通过 使用HMAC凭据 连接到 Object Storage。
一些示例包括文件资源管理器(如 Cyberduck 或 Transmit)、备份实用程序(如 Cloudberry 和 Duplicati)、命令行实用程序(如 s3cmd 或 Minio 客户机),等等。 您还可以在 IBM Cloud 目录中搜索允许您将数据移动到 Cloud Object Storage 的第三方服务,例如 Lyve 数据传输服务。
使用 API
Object Storage 的大多数编程应用程序使用 SDK(例如,Java、node.js 或 Python)或 Cloud Object Storage API。 通常,对象以分块方式上传,分块大小和分块数量由传输管理器类进行配置。
条件请求
在发出读取或写入数据的请求时,可以对该请求设置条件以避免不必要的操作。 这是通过使用以下 HTTP 预条件头实现的:If-Match、If-None-Match、If-Modified-Since 以及 If-Unmodified-Since。
通常建议使用 If-Match,因为 Last-Modified 的精度仅以秒为单位,在某些应用程序中可能不足以避免竞争条件。
使用 If-Match
在对象的 PUT、HEAD 或 GET 请求中,If-Match 头会 检查提供的 Etag (即对象内容的 MD5 哈希值)是否与提供的 Etag 值匹配。 如果该值匹配,则操作继续进行。 如果匹配失败,系统将返回 412 Precondition Failed 错误。
If-Match 最常与状态更改方法 (例如,POST,PUT 和 DELETE) 配合使用,以防止在多个用户代理程序可能在同一资源上并行执行操作时发生意外覆盖 (即,防止 "丢失更新" 问题)。
使用 If-None-Match
在对象的 PUT、HEAD 或 GET 请求中,If-None-Match 头会 检查提供的 Etag (即对象内容的 MD5 哈希值)是否与提供的 Etag 值匹配。 如果该值不匹配,则操作继续进行。 如果匹配成功,系统在执行 PUT 请求时会返回 412 Precondition Failed 错误,在执行 GET 或 HEAD 请求时会返回 304 Not Modified 错误。
If-None-Match 主要用于条件 GET 请求中,以支持以最小事务开销量高效更新高速缓存的信息。 当客户机希望更新一个或多个具有实体标记的已存储响应时,客户机 SHOULD 在发出 GET 请求时生成一个 If-None-Match 头字段,其中包含这些实体标记的列表; 这允许接收方服务器发送 304 (未修改) 响应以指示其中一个已存储的响应何时与所选表示相匹配。
使用 If-Modified-Since
在对象的 HEAD 或 GET 请求中,If-Modified-Since 标头 会检查该对象的 Last-Modified 值(例如 Sat, 14 March 2020 19:43:31 GMT )是否比给定的值更新。 如果该对象已被修改,则操作继续进行。
如果该对象未被修改,系统将返回 304 Not Modified。
If-modified-since 通常用于两个不同的用途: 1) 允许对没有 entity-tag 的高速缓存表示进行有效更新,2) 将 Web 遍历的作用域限制为最近更改的资源。
使用 If-Unmodified-Since
在对象的 PUT、HEAD 或 GET 请求中,If-Unmodified-Since 标头 会检查该对象的 Last-Modified 值(例如 Sat, 14 March 2020 19:43:31 GMT )是否等于或早于给定的值。 如果该对象未被修改,则操作继续进行。
如果 Last-Modified 的值更新,系统在执行PUT操作时会返回 412 Precondition Failed 错误,在执行GET或HEAD操作时会返回 304 Not Modified 错误。
If-Unmodified-since 最常用于状态更改方法 (例如,POST,PUT 和 DELETE),以防止在多个用户代理程序可能对未提供实体标记及其表示的资源并行执行操作 (即,防止 "丢失更新" 问题) 时发生意外覆盖。 如果所选表示与先前请求中已存储 (或部分存储) 的表示不匹配,那么也可以将其与安全方法配合使用以异常中止请求。
搜索和筛选对象
使用 Object Storage 控制台,根据名称、大小、日期或扩展名搜索和筛选对象。 有关更多详细信息,请参阅“在用户界面中搜索和筛选对象”。