IBM Cloud Docs
上传数据

上传数据

在将存储器组织到存储区之后,可以通过上载数据来添加一些对象。

根据您希望使用存储器的方式,有多种方法可以获取数据来提供给系统。 数据研究员有一些用于分析的大型文件,系统管理员需要使数据库备份与本地文件保持同步,而开发者正在编写需要读写数百万个文件的软件。 这其中每个场景都可通过不同的数据摄入方法来进行最佳处理。

某些应用程序可能希望将用户或服务标识限制为仅上载数据,而不允许对存储区中的读取数据进行任何访问。 这可以通过对象写程序 IAM 角色 来实现。

使用控制台

通常,使用基于 Web 的控制台并不是使用 Object Storage 的最常见方法。 对象限制为 200 MB,并且文件名和密钥完全相同。 可以同时上传多个对象,并且如果浏览器支持多个线程,那么将使用分块方式并行上传各个对象。 Aspera 高速传输支持更大的对象大小,并且性能更高(取决于网络因素)。

使用兼容工具

一些用户希望使用独立实用程序来与其存储器进行交互。 由于 Cloud Object Storage API 支持最常见的一组 S3 API 操作,因此许多兼容 S3-compatible 工具还可以使用 HMAC 凭证 连接到 Object Storage。

一些示例包括文件资源管理器(如 CyberduckTransmit)、备份实用程序(如 CloudberryDuplicati)、命令行实用程序(如 s3cmdMinio 客户机),等等。

使用 API

Object Storage 的大多数编程应用程序使用 SDK(例如,Javanode.jsPython)或 Cloud Object Storage API。 通常,对象以分块方式上传,分块大小和分块数量由传输管理器类进行配置。

条件请求

在发出读取或写入数据的请求时,可以对该请求设置条件以避免不必要的操作。 这是使用以下前置条件 HTTP 头完成的: If-MatchIf-None-MatchIf-Modified-SinceIf-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),以防止在多个用户代理程序可能对未提供实体标记及其表示的资源并行执行操作 (即,防止 "丢失更新" 问题) 时发生意外覆盖。 如果所选表示与先前请求中已存储 (或部分存储) 的表示不匹配,那么也可以将其与安全方法配合使用以异常中止请求。