使用 Amazon S3 存储桶 - Amazon Simple Storage Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

使用 Amazon S3 存储桶

要向 Amazon S3 上传数据(照片、视频、文档等),您必须首先在其中一个 AWS 区域中创建 S3 存储桶。然后,您可以将任何数量的对象上传到该存储桶。

对于实施,存储桶和对象是资源,而 Amazon S3提供 API 供您管理资源。例如,您可以使用 Amazon S3 API 创建存储桶并上传对象。您还可以使用 Amazon S3 控制台执行这些操作。控制台使用 Amazon S3 API将请求发送到 Amazon S3.

本节介绍如何使用存储桶。有关使用对象的信息,请参阅使用 Amazon S3 对象.

一个 Amazon S3 存储桶名称是全局唯一的,命名空间由所有AWS帐户共享。这意味着,在创建存储桶之后,任何 AWS 区域中的其他 AWS 账户均不能使用该存储桶的名称,直至删除该存储桶。不应依赖特定的存储桶命名约定来实现可用性或安全验证。有关存储桶命名准则,请参阅存储桶限制.

Amazon S3 可在指定的区域中创建存储桶。为优化延迟、最大限度地降低成本或满足法规要求,请选择地理上靠近您的任何 AWS 区域。例如,如果您居住在欧洲,您可能会发现,在 欧洲(爱尔兰) 或 欧洲(法兰克福) 地区。以获取列表 Amazon S3 地区,请参阅 区域和端点AWS一般参考.

注意

属于您在特定 AWS 区域中创建的存储桶的对象永远不会离开该区域,除非您明确将其传输到另一个区域。例如,欧洲(爱尔兰) 区域中存储的对象永远不会离开该区域。

创建存储桶

Amazon S3 提供 API 以创建和管理存储桶。默认情况下,您可以在每个 AWS 账户中创建多达 100 个 存储桶。如果您需要更多存储桶,则可以通过提交服务限制提高请求将账户的存储桶限制提高至最多 1,000 个存储桶。要了解如何提交桶限制增加,请参阅 AWS服务限制AWS一般参考. 一个存储桶中可以存储任意数量的对象。

创建存储桶时,您提供名称以及要在其中创建存储桶的 AWS 区域。有关如何命名存储桶的信息,请参阅存储桶命名规则.

您可以使用下面列出的任何方法来创建存储桶。有关示例,请参阅 创建存储桶的示例.

Amazon S3 控制台:

您可以在 Amazon S3 控制台中创建存储桶。有关详细信息,请参阅 创建一个桶Amazon Simple Storage Service 控制台用户指南

REST API

使用 REST API 创建存储桶可能会比较繁琐,因为这需要您编写代码对请求进行身份验证。有关详细信息,请参阅 放置桶Amazon Simple Storage Service API Reference. 我们建议您使用 AWS 管理控制台 或 AWS SDKS。

AWS 开发工具包

使用 AWS 开发工具包创建存储桶时,您应先创建一个客户端,然后使用该客户端发送创建存储桶的请求。如果您在创建客户端或一个桶时没有指定区域, Amazon S3 使用 美国东部(弗吉尼亚北部),默认区域。您还可以指定特定区域。有关可用AWS区域的列表,请参阅 区域和端点AWS General Reference. 有关启用或禁用 AWS 地区,请参阅 管理 AWS 地区AWS General Reference.

作为最佳做法,您应在同一区域中创建客户端和存储桶。如果您所在地区推出 2019年3月20日之后,您的客户端和桶必须位于同一个区域。但是,您可以在 美国东部(弗吉尼亚北部) 在启动的任何地区创建一个桶的地区 2019年3月20日之前. 有关更多信息,请参阅 传统终端节点.

创建客户端

创建客户端时,您应指定要在其中创建客户端的 AWS 区域。如果没有指定区域, Amazon S3 创建客户端 美国东部(弗吉尼亚北部) 默认区域。要创建客户端来访问双堆栈终端节点,则必须指定 AWS 区域。有关更多信息,请参阅 双堆栈终端节点.

创建客户端时,区域映射到特定于区域的终端节点。客户端使用此终端节点与 进行通信:Amazon S3:

s3.<region>.amazonaws.com.cn

例如,如果您通过指定 eu-west-1 区域创建客户端,则它将映射到以下特定于区域的终端节点:

s3.eu-west-1.amazonaws.com.cn

创建存储桶

如果您在创建一个桶时没有指定区域, Amazon S3 在 美国东部(弗吉尼亚北部) 地区。因此,如果您需要在某个特定区域中创建存储桶,则必须在创建存储桶时指定该区域。

在 2020 年 9 月 30 日之后创建的存储桶将仅支持虚拟托管式请求。在此日期或之前创建的存储桶将继续支持路径式请求。有关更多信息,请参阅 Amazon S3 路径弃用计划 - 案例的其余部分

关于权限

您可以使用 AWS 账户根凭证创建存储桶并执行其他 Amazon S3 操作。但是,AWS 建议不要使用 AWS 账户的根凭证发出请求 (如创建存储桶)。而是创建一个 IAM 用户,并向该用户授予完全访问权限 (用户在默认情况下没有任何权限)。我们将这些用户称为管理员用户。您可以使用管理员用户凭证而不是您账户的根凭证来与 AWS 交互和执行任务,例如创建存储桶,创建用户和授予他们权限。

有关详细信息,请参阅 root帐户凭据与iam用户凭据AWS一般参考IAM最佳实践IAM 用户指南.

创建资源的 AWS 账户拥有该资源。例如,如果您在您的 AWS 账户中创建一个 IAM 用户并向该用户授予创建存储桶的权限,则该用户可以创建存储桶。但是用户不拥有存储桶;用户所属的 AWS 账户拥有存储桶。用户需要资源拥有者提供其他权限来执行任何其他存储桶操作。有关为您的 Amazon S3 资源管理权限的更多信息,请参阅。Amazon S3 中的 Identity and Access Management.

管理对存储桶的公有访问

通过访问控制列表 (ACL) 和/或存储桶策略向存储桶和对象授予公有访问权限。帮助您管理公众访问 Amazon S3 资源, Amazon S3 提供 阻止公众访问 设置。 Amazon S3 阻止公共访问设置可以覆盖ACL和桶策略,以便您可以对这些资源的公众访问强制执行统一的限制。您可以将阻止公有访问设置应用于您的账户中的单个存储桶或所有存储桶。

为了帮助确保您的所有 Amazon S3 存储桶和对象阻止了公有访问,我们建议为您的账户启用阻止公有访问的所有四个设置。这些设置阻止所有当前和将来的存储桶的公有访问。

在应用这些设置之前,请确认您的应用程序在没有公有访问的情况下能够正常工作。如果您需要对存储桶或对象进行某种级别的公有访问,例如,按照在 上托管静态网站Amazon S3中所述托管静态网站,则可以自定义各个设置以符合您的存储使用案例要求。有关更多信息,请参阅 使用 Amazon S3 阻止公有访问.

访问存储桶

可以使用 Amazon S3 控制台访问存储桶。可以使用控制台 UI 执行几乎所有存储桶操作,而不必编写任何代码。

如果您以编程方式访问存储桶,请注意 Amazon S3 支持 RESTful 架构,在该架构中,存储桶和对象是资源,各自具有唯一标识资源的资源 URI。

Amazon S3 支持虚拟托管–风格和路径式URL可访问桶。因为可以使用路径风格和虚拟托管访问存储区–我们建议您使用DNS兼容的bucket名称创建存储区。有关更多信息,请参阅 存储桶限制.

注意

虚拟托管样式和路径样式请求使用S3点区域端点结构(s3.Region),例如 https://my-bucket.s3.us-west-2.amazonaws.com.cn...但是,一些较旧的 Amazon S3 区域还支持S3DASH区域端点 s3-Region例如, https://my-bucket.s3-us-west-2.amazonaws.com.cn...如果您的桶位于这些地区之一,您可能会看到 s3-Region 服务器访问日志或CloudTrail日志中的端点。我们建议您不要在请求中使用此终端节点结构。

虚拟托管类型访问

在虚拟托管中–样式请求,存储桶名称是URL中域名的一部分。

Amazon S3 虚拟托管样式 URL 遵循如下所示格式。

https://bucket-name.s3.Region.amazonaws.com.cn/key name

在此示例中,my-bucket 为存储桶名称,美国西部(俄勒冈)为区域,puppy.png 为密钥名称:

https://my-bucket.s3.us-west-2.amazonaws.com.cn/puppy.png

有关虚拟托管类型访问的更多信息,请参阅虚拟托管类型请求.

路径类型访问

在 Amazon S3 中,路径样式 URL 遵循如下所示格式。

https://s3.Region.amazonaws.com.cn/bucket-name/key name

例如,如果您在 美国西部(俄勒冈) 区域中创建一个名为 mybucket 的存储桶,并希望访问该存储桶中的 puppy.jpg 对象,则可使用以下路径样式 URL:

https://s3.us-west-2.amazonaws.com.cn/mybucket/puppy.jpg

有关更多信息,请参阅 路径类型请求.

重要

在 2020 年 9 月 30 日之后创建的存储桶将仅支持虚拟托管式请求。在此日期或之前创建的存储桶将继续支持路径式请求。有关更多信息,请参阅 Amazon S3 路径弃用计划 - 案例的其余部分

通过 访问 S3 存储桶IPv6

Amazon S3 具有一组双堆栈端点,支持对S3存储区的请求 Internet 协议版本 6 (IPv6) 和 IPv4. 有关更多信息,请参阅 通过 IPv6 发出请求.

通过 S3 访问点访问存储桶

除了直接访问存储桶之外,您还可以通过 S3 访问点访问存储桶。有关 S3 访问点的更多信息,请参阅使用 Amazon S3 访问点管理数据访问 .

S3 访问点仅支持虚拟主机式寻址。要通过访问点对存储桶进行寻址,请使用以下格式:

https://AccessPointName-AccountId.s3-accesspoint.region.amazonaws.com.
注意
  • 如果您的访问点名称包含破折号 (-) 字符,请在 URL 中包含破折号,然后在账户 ID 之前插入另一个破折号。例如,要使用名为 finance-docs 账户拥有 123456789012 地区 us-west-2,相应的URL将是 https://finance-docs-123456789012.s3-accesspoint.us-west-2.amazonaws.com.

  • S3 访问点不支持通过 HTTP 进行访问,只支持通过 HTTPS 进行安全访问。

使用 S3:// 访问存储桶

某些 AWS 服务需要指定 Amazon S3 使用 S3://bucket...正确的格式如下所示。请注意,使用此格式时,存储桶名称不包含区域。

s3://bucket-name/key-name

例如,使用前面的路径样式部分中描述的示例存储桶:

s3://mybucket/puppy.jpg

存储桶配置选项

Amazon S3 支持各种供您用于配置存储桶的选项。例如,您可以配置存储桶用于网站托管、添加配置以管理存储桶中对象的生命周期,以及配置存储桶以记录对存储桶的所有访问。Amazon S3 支持供您存储和管理存储桶配置信息的子资源。您可以使用 Amazon S3 API 创建和管理这些子资源。但是,还可以使用控制台或 AWS AWS 开发工具包。

注意

还有对象级配置。例如,可以通过特定于该对象的配置访问控制列表 (ACL) 来配置对象级权限。

这些称为子资源,因为它们存在于特定存储桶或对象的上下文中。下表列出使您可以管理特定于存储桶的配置的子资源。

子资源 Description

Cors (跨国资源共享)

您可以配置存储桶以便允许跨源请求。

有关详细信息,请参阅 启用跨源资源共享.

事件通知

您可以使存储桶向您发送特定存储桶事件的通知。

有关更多信息,请参阅 配置 Amazon S3 事件通知.

生命周期

您可以为存储桶中明确定义了生命周期的对象定义生命周期规则。例如,您可以定义一个规则以在创建一年之后存档对象,或在创建 10 年之后删除对象。

有关详细信息,请参阅 对象生命周期管理.

位置

创建一个桶时,您需要指定AWS区域 Amazon S3 创建桶子。 Amazon S3 将此信息存储在位置子资源中,并为您提供检索此信息的API。

日志记录

日志记录使您可以跟踪针对存储桶的访问请求。每个访问日志记录都提供有关单个访问请求的详细信息,如请求者、存储桶名称、请求时间、请求操作、响应状态和错误代码(如果有)。访问日志信息可能在安全和访问审核方面十分有用。它还可以帮助您了解您的客户群并了解您的 Amazon S3 账单。 

有关更多信息,请参阅 Amazon S3 服务器访问日志记录.

对象锁定

要使用 S3 对象锁定,您必须为存储桶启用它。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留期限。

有关更多信息,请参阅 存储桶配置.

政策ACL (访问控制列表)

默认情况下,所有资源(例如数据栏和对象)都是私人的。 Amazon S3 支持用于授予和管理桶级权限的桶策略和访问控制列表(ACL)选项。 Amazon S3 将权限信息存储在 政策ACL 子资源。

有关更多信息,请参阅 Amazon S3 中的 Identity and Access Management.

复制

复制是在相同或跨不同 AWS 区域中的存储桶自动、异步地复制对象。有关更多信息,请参阅 Replication.

requestPayment

默认情况下,创建存储桶的 AWS 账户 (存储桶拥有者) 支付从存储桶进行的下载。存储桶拥有者可以使用此子资源指定对请求下载的人员收取下载费用。Amazon S3 提供了一个 API,用于管理此子资源。

有关更多信息,请参阅 请求者支付桶.

标记

您可以将成本分配标签添加到您的桶中,以分类和跟踪AWS成本。 Amazon S3 提供 标记 存储和管理桶上标签的子资源。通过使用应用于您存储桶的标签,AWS 可生成成本分配报告,其中按标签汇总了使用和成本。

有关更多信息,请参阅 S3 存储桶的账单和使用率报告.

传输加速

Transfer Acceleration 在客户端与S3存储桶之间的长距离之间实现快速、简单、安全的文件传输。 Transfer Acceleration 充分利用 Amazon CloudFront 全球分布式边缘位置。

有关更多信息,请参阅 Amazon S3 Transfer Acceleration.

版本控制

版本控制可帮助恢复意外覆盖和删除。

我们建议将版本控制作为从错误删除或覆盖恢复对象的最佳实践。

有关更多信息,请参阅 使用版本控制.

网站

您可以为主机的静态网站配置自己的BUCKET。 Amazon S3 通过创建 网站 子资源。

有关详细信息,请参阅 托管静态网站 Amazon S3.