Amazon Simple Storage Service
开发人员指南 (API 版本 2006-03-01)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 Amazon AWS 入门

存储类别

Amazon S3 中的每个对象都有与之关联的存储类别。例如,如果您列出存储桶中的所有对象,则控制台会在列表中显示所有对象的存储类别。

Amazon S3 将为您存储的对象提供以下存储类别。您根据使用案例场景和性能访问要求选择一个存储类别。所有这些存储类别都提供高持久性存储.

经常访问对象的存储类

对于性能敏感的使用案例 (需要毫秒级访问时间的用例) 和经常访问的数据,Amazon S3提供以下存储类:

  • STANDARD – 默认存储类。如果上传对象时未指定存储类,Amazon S3 会分配 STANDARD 存储类。

     

  • REDUCED_REDUNDANCY – 低冗余存储 (RRS) 存储类设计用于可使用低于 STANDARD 存储类的冗余级别存储的非关键性可再生数据。

    重要

    我们建议您不要使用此存储类。STANDARD 存储类更经济高效。

    为了实现持久性,RRS 对象的平均每年对象损失率为 0.01%。 如果 RRS 对象丢失,则在对该对象发出请求时,Amazon S3 会返回 405 错误。

不经常访问对象的存储类

STANDARD_IAONEZONE_IA 存储类用于长时间运行且不经常访问的数据。(IA 表示不经常访问。)STANDARD_IA 和 ONEZONE_IA 对象可用于毫秒级访问 (类似于 STANDARD 存储类)。Amazon S3 会收取这些对象的检索费,因此,它们最适合不经常访问的数据。有关定价信息,请参阅 Amazon S3 定价

例如,您可以选择 STANDARD_IAONEZONE_IA 存储类:

  • 用于存储备份。

  • 用于不经常访问但仍需要毫秒级访问的旧数据。例如,上传数据时,您可能会选择 STANDARD 存储类,然后使用生命周期配置指示 Amazon S3 将对象转换为 STANDARD_IAONEZONE_IA 类。有关生命周期管理的更多信息,请参阅对象生命周期管理

注意

STANDARD_IAONEZONE_IA 存储类适用于您计划存储至少 30 天并且大小超过 128 KB 的对象。如果对象小于 128 KB,Amazon S3 会收取 128 KB 的费用。如果您在 30 天的最短使用期限前删除对象,则需支付 30 天的费用。有关定价信息,请参阅 Amazon S3 定价

这些存储类在以下方面有所不同:

  • STANDARD_IA – Amazon S3 跨多个地理位置独立的可用区存储冗余对象数据 (类似于 STANDARD 存储类)。STANDARD_IA 对象可在出现可用区丢失时复原。此存储类可提供比 ONEZONE_IA 类更好的可用性、持久性和弹性。

     

  • ONEZONE_IA – Amazon S3 只在一个可用区存储对象数据,因此比 STANDARD_IA 更便宜。但是,数据无法灵活地应对由于地震和洪水灾害而造成可用区物理丢失的情况。ONEZONE_IA 存储类和 STANDARD_IA 一样具有持久性,但是可用性和弹性较差。有关存储类的持久性和可用性比较,请参阅此部分结尾的持久性和可用性表。有关定价信息,请参阅 Amazon S3 定价

我们建议执行下列操作:

  • STANDARD_IA – 用于主数据或无法重新创建的数据副本。

  • ONEZONE_IA – 如果在可用区出现故障时可重新创建数据,可在设置跨区域复制 (CRR) 时用于对象副本。

GLACIER 存储类

GLACIER 存储类适用于在不常访问数据的位置对数据存档。存档对象不可用于实时访问。您必须先还原对象,然后才可以访问它们。有关更多信息,请参阅 恢复存档对象。此存储类提供与 STANDARD 存储类相同的持久性和弹性。

重要

如果选择 Glacier 存储类,Amazon S3 将使用低成本 Amazon Glacier 服务来存储对象。尽管对象存储在 Amazon Glacier 中,它们仍是 Amazon S3 对象,需在 Amazon S3 中管理;并且您无法直接通过 Amazon Glacier 访问它们。

请注意以下关于 GLACIER 存储类别的信息:

  • 您无法在创建对象时指定 GLACIER 作为存储类别。您在创建 GLACIER 对象时,先将对象作为存储类进行上传,然后使用生命周期管理将这些对象转换为 GLACIER 存储类别。有关更多信息,请参阅 对象生命周期管理

     

  • 您必须先将 GLACIER 对象还原才能访问它们 (STANDARD、RRS、STANDARD_IA 和 ONEZONE_IA 对象可随时访问)。有关更多信息,请参阅 转换为 GLACIER 存储类 (对象存档)

要了解有关 Amazon Glacier 服务的更多信息,请参阅 Amazon Glacier 开发人员指南

存储类:比较持久性和可用性

下表总结了每个存储类别提供的持久性和可用性。

存储类别 持久性 (设计目标) 可用性 (设计目标) 其他考虑因素

STANDARD

99.999999999%

99.99%

STANDARD_IA

99.999999999%

99.9%

STANDARD_IA 对象会收取检索费用。此类最适合不经常访问的数据。有关定价信息,请参阅 Amazon S3 定价

ONEZONE_IA

99.999999999%

99.5%

无法灵活地应对可用区丢失的情况。

GLACIER

99.999999999%

99.99% (在您还原对象之后)

GLACIER 对象不可用于实时访问。您必须先还原存档对象,然后才可以访问它们。有关更多信息,请参阅 恢复存档对象

RRS

99.99%

99.99%

除 ONEZONE_IA 之外的所有存储类均采用灵活的弹性设计,适用于单个可用区同时丢失完整数据以及另一个可用区丢弃部分数据的情况。

除了应用程序场景的性能要求之外,还考虑了价格问题。有关存储类定价,请参阅 Amazon S3 定价

设置对象的存储类

Amazon S3 API 支持按照以下方式设置 (或更新) 对象的存储类:

  • 创建新对象时,可以指定其存储类。例如,使用 PUT 对象POST 对象启动分段上传 API 时,添加 x-amz-storage-class 请求标头以指定存储类。 如果您未添加此标头,Amazon S3 将 STANDARD 存储类作为默认存储类。

     

  • 您还可以通过使用 PUT Object - Copy API 复制对象来更改已存储在 Amazon S3 中的对象。您使用相同键名称复制相同存储桶中的对象并按照以下方式指定请求标头:

    • x-amz-metadata-directive 标头设置为 COPY。

    • x-amz-storage-class 设置为要使用的存储类。

    在启用版本控制的存储桶中,您无法更改特定版本对象的存储类。当您复制对象时,Amazon S3 将为其指定新的版本 ID。

     

  • 您可以通过向存储桶添加生命周期配置来指示 Amazon S3 更改对象的存储类。有关更多信息,请参阅 对象生命周期管理

要创建和更新对象存储类,您可以使用 Amazon S3 控制台、AWS 开发工具包或 AWS Command Line Interface (AWS CLI)。每个都使用 Amazon S3 API 向 Amazon S3 发送请求。