Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。
Amazon Simple Storage Service(Amazon S3)是一种对象存储服务,提供行业领先的可扩展性、数据可用性、安全性和性能。各种规模和行业的客户都可以使用 Amazon S3 存储和保护任意数量的数据,用于数据湖、网站、移动应用程序、备份和恢复、归档、企业应用程序、IoT 设备和大数据分析。Amazon S3 提供了管理功能,使您可以优化、组织和配置对数据的访问,以满足您的特定业务、组织和合规性要求。
存储桶
存储桶是 Amazon S3 中用于存储对象的容器。您可以在存储桶中存储任意数量的对象,并且账户中最多可以有 100 个存储桶。要查看存储桶利用率、存储桶配额或请求增加配额,请访问服务配额控制台。
每个对象都储存在一个存储桶中。例如,如果名为 photos/puppy.jpg
的对象存储在美国西部(俄勒冈州)区域的 amzn-s3-demo-bucket
存储桶中,则可使用 URL https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/photos/puppy.jpg
对该对象进行寻址。有关更多信息,请参阅访问存储桶。
创建存储桶时,您可以输入存储桶名称,然后选择AWS 区域存储桶将驻留的位置。创建存储桶后,无法更改存储桶或区域的名称。存储桶名称必须遵循存储桶命名规则。您也可以将存储桶配置为使用 S3 版本控制或其他存储管理功能。
存储桶还:
- 在最高级别组织 Amazon S3 命名空间。
- 标识负责存储和数据传输费用的账户。
- 提供访问控制选项,例如存储桶策略、访问控制列表(ACL)和 S3 接入点,可用于管理对 Amazon S3 资源的访问。
- 用作使用情况报告的聚合单元。
有关存储桶的更多信息,请参阅 存储桶概述。
对象
对象是 Amazon S3 中存储的基础实体。对象由对象数据和元数据组成。元数据是一组描述对象的名称-值对。这些对值包括一些默认元数据(如上次修改日期)和标准 HTTP 元数据(如 Content-Type
)。您还可以在存储对象时指定自定义元数据。
存储桶中的对象由密钥(名称) 和版本 ID唯一标识(如果在存储桶上启用了 S3 版本控制)。有关对象的更多信息,请参阅 Amazon S3 对象概述。
键
对象密钥(或密钥名称)是指存储桶中对象的唯一标识符。存储桶内的每个对象都只能有一个键。存储桶、对象密钥和可选版本 ID 的组合(如果为存储桶启用了 S3 版本控制)唯一标识每个对象。因此,您可以将 Amazon S3 看作“存储桶 + 键 + 版本”与对象本身之间的基本数据映射。
将 Web 服务端点、存储桶名称、密钥和版本(可选)组合在一起,可唯一地寻址 Amazon S3 中的每个对象。例如,在 URL https://
中,amzn-s3-demo-bucket
.s3.us-west-2.amazonaws.com/photos/puppy.jpg
是存储桶的名称,amzn-s3-demo-bucket
photos/puppy.jpg
是密钥。
有关对象键的更多信息,请参阅 为 Amazon S3 对象命名。
S3 版本控制
您可以使用 S3 版本控制功能将对象的多个变量保留在同一存储桶中。使用 S3 版本控制功能,您可以保留、检索和恢复存储桶中的各个版本。您能够轻松从用户意外操作和应用程序故障中恢复数据。
有关更多信息,请参阅 使用 S3 版本控制保留对象的多个版本。
版本 ID
在存储桶中启用 S3 版本控制时,Amazon S3 会为添加到存储桶中的每个对象生成唯一的版本ID。启用版本控制时存在于存储桶中的对象的版本 ID 为null
。如果使用其他操作修改这些(或任何其他)对象,例如 CopyObject 和 PutObject 时,新对象将获得唯一的版本 ID。
有关更多信息,请参阅 使用 S3 版本控制保留对象的多个版本。
存储桶策略
存储桶策略是基于资源的 AWS Identity and Access Management (IAM) 策略,您可以使用该策略向存储桶及其中对象授予访问权限。只有存储桶拥有者才能将策略与存储桶关联。附加到存储桶的权限适用于存储桶拥有者拥有的存储桶中所有对象。存储桶策略的大小限制为 20 KB。
存储桶策略使用基于 JSON 的访问策略语言,该语言是跨平台的标准语言 AWS。您可以使用存储桶策略添加或拒绝存储桶中对象的权限。存储桶策略根据策略中的元素允许或拒绝请求,包括请求者、S3 操作、资源以及请求的方面或条件(例如,用于发出请求的 IP 地址)。例如,您可以创建一个存储桶策略,该策略授予跨账户将对象上传到 S3 存储桶的权限,同时确保存储桶拥有者对上传的对象拥有完全控制权。有关更多信息,请参阅 Amazon S3 存储桶策略的示例。
在存储桶策略中,您可以在 Amazon 资源名称(ARN)和其他值上使用通配符来授予对对象子集的权限。例如,您可以控制对以通用前缀或以给定扩展名结尾的对象组的访问,例如 .html
。
S3 接入点
Amazon S3 接入点被命名为网络端点,其专用访问策略描述了如何使用该端点访问数据。接入点附加到存储桶,您可以使用这些存储桶执行 S3 对象操作(如 GetObject 和 PutObject)。接入点可简化对 Amazon S3 中的共享数据集的大规模数据访问管理。
每个接入点都有自己的接入点策略。您还可以为每个接入点配置阻止公有访问设置。为了限制 Amazon S3 数据访问提供网络,您可以将任何接入点配置为仅接受来自私有云(VPC)的请求。
有关更多信息,请参阅 通过接入点管理对共享数据集的访问。
访问控制列表(ACL)
您可以使用 ACL 向已授权的用户授予对单个存储桶和对象的读写权限。每个存储桶和对象都有一个作为子资源而附加的 ACL。ACL 定义了哪些 AWS 账户 或组将被授予访问权限以及访问的类型。ACL 是一种访问控制机制,其早于 IAM。有关 ACL 的更多信息,请参阅 访问控制列表 (ACL) 概述。
S3 对象所有权是 Amazon S3 存储桶级别的设置,您可以使用该设置来控制上传到存储桶的对象的所有权和禁用或启用 ACL。默认情况下,对象所有权设为强制存储桶拥有者设置,并且所有 ACL 均处于禁用状态。禁用 ACL 后,存储桶拥有者拥有存储桶中的所有对象,并使用访问管理策略来专门管理对这些对象的访问权限。
Amazon S3 中的大多数现代使用案例不再需要使用 ACL。我们建议您将 ACL 保持为禁用状态,除非有需要单独控制每个对象的访问权限的特殊情况。禁用 ACL 后,您可以使用策略来控制对存储桶中所有对象的访问权限,无论是谁将对象上传到您的存储桶。有关更多信息,请参阅 为您的存储桶控制对象所有权和禁用 ACL。。
区域
您可以选择一个 AWS 区域 供 Amazon S3 存储您创建的存储桶。您可以选择一个区域,以便优化延迟、尽可能降低成本或满足法规要求。存储在 AWS 区域 中的对象永远不会离开该区域,除非显式地将它们传输或复制到另一个区域。例如,在欧洲(爱尔兰)区域存储的对象将一直留在欧洲。
有关 Amazon S3 区域和端点的列表,请参阅《AWS 一般参考》中的区域和端点。
Amazon S3 数据一致性模型
Amazon S3 为所有 AWS 区域 中的 Amazon S3 存储桶中对象的 PUT 和 DELETE 请求提供了强大的先写后读一致性。此行为既适用于对新对象的写入,也适用于覆盖现有对象的 PUT 请求和 DELETE 请求。此外,Amazon S3 Select、Amazon S3访问控制列表 (ACL)、Amazon S3对象标记和对象元数据(例如,HEAD对象)上的读取操作非常一致。
单个键的更新是原子更新。例如,如果您从一个线程对现有密钥执行 PUT 请求,并同时从另一个线程对同一密钥执行 GET 请求,则您将获得旧数据或新数据,但绝不会获得部分或损坏的数据。
Amazon S3 通过在 AWS 数据中心内的多个服务器之间复制数据,从而实现高可用性。如果 PUT 请求成功,则数据已安全存储。在收到成功的 PUT 响应后启动的任何读取(GET 或 LIST 请求)都将返回 PUT 请求写入的数据。以下是此行为的示例:
- 这是一个过程,它将一个新对象写入 Amazon S3,并立即列出其存储桶内的密钥。新对象显示在列表中。
- 这是一个过程,会替换一个现有的对象,并立即尝试读取此对象。Amazon S3 返回新数据。
- 这是一个过程,会删除一个现有的对象,并立即尝试读取此对象。Amazon S3 不会返回任何数据,因为对象已被删除。
- 这是一个过程,会删除一个现有的对象,并立即列出其存储桶内的键。该对象不会显示在列表中。
- 有关 Amazon S3 区域和端点的列表,请参阅《AWS 一般参考》中的区域和端点。
Amazon S3 数据一致性模型
Amazon S3 为所有 AWS 区域 中的 Amazon S3 存储桶中对象的 PUT 和 DELETE 请求提供了强大的先写后读一致性。此行为既适用于对新对象的写入,也适用于覆盖现有对象的 PUT 请求和 DELETE 请求。此外,Amazon S3 Select、Amazon S3访问控制列表 (ACL)、Amazon S3对象标记和对象元数据(例如,HEAD对象)上的读取操作非常一致。
单个键的更新是原子更新。例如,如果您从一个线程对现有密钥执行 PUT 请求,并同时从另一个线程对同一密钥执行 GET 请求,则您将获得旧数据或新数据,但绝不会获得部分或损坏的数据。
Amazon S3 通过在 AWS 数据中心内的多个服务器之间复制数据,从而实现高可用性。如果 PUT 请求成功,则数据已安全存储。在收到成功的 PUT 响应后启动的任何读取(GET 或 LIST 请求)都将返回 PUT 请求写入的数据。以下是此行为的示例:
- 这是一个过程,它将一个新对象写入 Amazon S3,并立即列出其存储桶内的密钥。新对象显示在列表中。
- 这是一个过程,会替换一个现有的对象,并立即尝试读取此对象。Amazon S3 返回新数据。
- 这是一个过程,会删除一个现有的对象,并立即尝试读取此对象。Amazon S3 不会返回任何数据,因为对象已被删除。
- 这是一个过程,会删除一个现有的对象,并立即列出其存储桶内的键。该对象不会显示在列表中。
- Amazon S3 定价的设计可让您不必为应用程序的存储需求制定计划。大多数存储提供商都要求您购买预定量的存储和网络传输容量。在这种情况下,如果超过此容量,就会关闭您的服务或对您收取高额的超容量费用。如果没有超过此容量,又要按全部容量支付使用费用。
Amazon S3 仅按照您的实际使用容量收费,没有任何隐性收费和超容量收费。此模型为您提供了一种可变成本服务,它可以随着您的业务增长而增长,同时为您提供 AWS 基础架构的成本优势。有关更多信息,请参阅 Amazon S3 定价。
在注册 AWS 时,将在 AWS 中为您的 AWS 账户 自动注册所有服务,包括 Amazon S3。不过,您只需为使用的服务付费。如果您是 Amazon S3 的新客户,则可以免费开始使用 Amazon S3。有关更多信息,请参阅 AWS免费套餐。
若要查看您的账单,请转到 AWS Billing and Cost Management 控制台中的账单和成本管理控制面板。要了解关于AWS 账户 账单的更多信息,请参阅 AWS Billing 用户指南。如果您有关于 AWS 账单和 AWS 账户的问题,请联系 AWS 支持。
PCI DSS 合规性
Amazon S3 支持由商家或服务提供商处理、存储和传输信用卡数据,而且已经验证符合支付卡行业 (PCI) 数据安全标准 (DSS)。有关 PCI DSS 的更多信息,包括如何请求 AWS PCI Compliance Package 的副本,请参阅 PCI DSS 第 1 级。