Amazon Simple Storage Service
开发人员指南 (API Version 2006-03-01)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

使用 Amazon S3 存储桶

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

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

在此部分中,我们说明如何使用存储桶。有关使用对象的信息,请参阅使用 Amazon S3 对象

Amazon S3 存储桶名称在全球是唯一的 (无论是在哪个 AWS 区域中创建存储桶)。在创建存储桶时指定名称。有关存储桶命名指南,请参阅存储桶限制

Amazon S3 可在指定的区域中创建存储桶。您可以选择在地理上靠近您的任何 AWS 区域,以便优化延迟,尽可能降低成本或满足法规要求。例如,如果您位于欧洲,您可能会发现在 欧洲(爱尔兰) 或 欧洲(法兰克福) 区域创建存储桶十分有利。有关 Amazon S3 区域的列表,请参阅 AWS 一般参考 中的区域和终端节点

注意

属于您在特定 AWS 区域中创建的存储桶的对象绝不会离开该区域,除非您显式将它们传输到其他区域。例如,在 欧洲(爱尔兰) 区域存储的对象将一直留在该区域。

创建存储桶

Amazon S3 提供 API 供您用于创建和管理存储桶。默认情况下,您可以在每个 AWS 账户中创建多达 100 个存储桶。如果您需要更多存储桶,则可以通过提交服务限额提升来调高存储桶限制。要了解有关提交存储桶限额提升的更多信息,请参阅 AWS 一般参考 中的 AWS 服务限制

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

在每个存储桶中,您可以存储任何数量的对象。可以使用以下任何方法创建存储桶:

  • 使用控制台创建存储桶。

  • 使用 AWS 开发工具包以编程方式创建存储桶。

    注意

    如果需要,也可以直接从代码中调用 Amazon S3 REST API。但是,这可能会比较繁琐,因为需要您编写代码对请求进行身份验证。有关更多信息,请参阅 Amazon Simple Storage Service API Reference 中的 PUT 存储桶

    使用 AWS 开发工具包时,首先创建一个客户端,然后使用该客户端发送请求以创建存储桶。在创建客户端时,您可以指定 AWS 区域。美国东部(弗吉尼亚北部) 是默认区域。您还可以在创建存储桶请求中指定区域。  请注意以下几点:

    • 如果通过指定 美国东部(弗吉尼亚北部) 区域创建客户端,则它使用以下终端节点与 Amazon S3 进行通信。

      Copy
      s3.amazonaws.com

      可使用此客户端在任何 AWS 区域中创建存储桶。在创建存储桶请求中,

      • 如果您未指定区域,则 Amazon S3 在 美国东部(弗吉尼亚北部) 区域中创建存储桶。

      • 如果指定 AWS 区域,则 Amazon S3 在指定区域中创建存储桶。

    • 如果通过指定任何其他 AWS 区域来创建客户端,则所指定的每个区域都映射到特定于区域的终端节点:

      Copy
      s3-<region>.amazonaws.com

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

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

      在这种情况下,只能使用客户端在 eu-west-1 区域中创建存储桶。如果您在创建存储桶请求中指定其他区域,则 Amazon S3 返回错误。

    • 如果您创建客户端来访问双堆栈终端节点,则必须指定 AWS 区域。有关更多信息,请参阅 双堆栈终端节点

    有关可用 AWS 区域的列表,请参阅 AWS General Reference 中的 区域和终端节点

有关示例,请参阅 创建存储桶的示例

关于权限

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

有关更多信息,请参阅 AWS 一般参考 中的根账户凭证与 IAM 用户凭证IAM 用户指南中的 IAM 最佳实践

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

访问存储桶

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

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

Amazon S3 支持虚拟托管类型和路径类型 URL 访问存储桶。

  • 在虚拟托管类型 URL 中,存储桶名称是 URL 中域名的一部分。例如: 

    • http://bucket.s3.amazonaws.com

    • http://bucket.s3-aws-region.amazonaws.com

    在虚拟托管类型 URL 中,您可以使用其中任一终端节点。如果向 http://bucket.s3.amazonaws.com 终端节点进行请求,则 DNS 具有足够信息将请求直接路由到存储桶所位于的区域。

    有关更多信息,请参阅 存储桶的虚拟托管

     

  • 在路径类型 URL 中,存储桶名称不包含在域中 (除非使用特定于区域的终端节点)。例如:

    • 美国东部 (弗吉尼亚北部) 区域终端节点,http://s3.amazonaws.com/bucket

    • 特定于区域的终端节点 http://s3-aws-region.amazonaws.com/bucket

    在路径类型 URL 中,使用的终端节点必须与存储桶所在的区域匹配。例如,如果存储桶位于 南美洲(圣保罗) 区域中,则必须使用 http://s3-sa-east-1.amazonaws.com/bucket 终端节点。如果存储桶位于美国东部 (弗吉尼亚北部) 区域,则必须使用 http://s3.amazonaws.com/bucket 终端节点。

重要

因为可以使用路径类型和虚拟托管类型 URL 访问存储桶,所以我们建议您使用符合 DNS 标准的存储桶名称创建存储桶。有关更多信息,请参阅 存储桶限制

通过 IPv6 访问 S3 存储桶

Amazon S3 有一组双堆栈终端节点,它们支持通过 Internet 协议版本 6 (IPv6) 和 IPv4 向 S3 存储桶发出请求。有关更多信息,请参阅 通过 IPv6 发出请求

存储桶配置选项

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

注意

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

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

子资源 说明

位置

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

策略ACL (访问控制列表)

所有资源 (如存储桶和对象) 在默认情况下为私有。Amazon S3 支持存储桶策略和访问控制列表 (ACL) 选项,供您用于授予和管理存储桶级权限。Amazon S3 将权限信息存储在策略acl 子资源中。

有关更多信息,请参阅 管理对 Amazon S3 资源的访问权限

cors (跨源资源共享)

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

有关更多信息,请参阅启用跨源资源共享

网站

您可以配置存储桶以便用于静态网站托管。Amazon S3 通过创建网站 子资源来存储此配置。

有关更多信息,请参阅在 Amazon S3 上托管静态网站

日志记录

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

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

事件通知

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

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

版本控制

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

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

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

生命周期

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

有关更多信息,请参阅对象生命周期管理

跨区域复制

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

标记

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

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

requestPayment

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

有关更多信息,请参阅 申请方付款存储桶

传输加速

Transfer Acceleration 可在客户端与 S3 存储桶之间实现快速、轻松、安全的远距离文件传输。Transfer Acceleration 利用 Amazon CloudFront 的全球分布式边缘站点。

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