存储桶概述
要向 Amazon S3 上传数据(照片、视频、文档等),您必须首先在其中一个 AWS 区域 中创建 S3 存储桶。
存储桶是 Amazon S3 中用于存储对象的容器。您可以在存储桶中存储任意数量的对象,并且账户中最多可以有 100 个存储桶。要查看存储桶利用率、存储桶配额或请求增加配额,请访问服务配额控制台
有关与 Amazon S3 存储桶相关的限制和局限性的列表,请参阅存储桶配额、限制和局限性。
每个对象都储存在一个存储桶中。例如,如果名为 photos/puppy.jpg
的对象存储在美国西部(俄勒冈州)区域的 amzn-s3-demo-bucket
存储桶中,则可使用 URL https://amzn-s3-demo-bucket.s3.us-west-2.amazonaws.com/photos/puppy.jpg
对该对象进行寻址。有关更多信息,请参阅访问存储桶。
对于实施,存储桶和对象是 AWS 资源,而 Amazon S3 提供 API 供您管理资源。例如,您可以使用 Amazon S3 API 创建存储桶并上传对象。您还可以使用 Amazon S3 控制台执行这些操作。该控制台使用 Amazon S3 API 将请求发送到 Amazon S3。
本节介绍如何使用存储桶。有关使用对象的信息,请参阅Amazon S3 对象概述。
Amazon S3 支持全局存储桶,这意味着每个存储桶名称在分区内的所有AWS 区域中所有AWS 账户内都必须是唯一的。分区是一组区域。AWS 目前有三个分区:aws
(标准区域)、aws-cn
(中国区域)和 aws-us-gov
(AWS GovCloud (US))。
在创建存储桶之后,该存储桶的名称不能被同一分区中的另一个 AWS 账户 使用,直到存储桶被删除。不应依赖特定的存储桶命名约定来实现可用性或安全验证。有关存储桶命名指南,请参阅存储桶命名规则。
Amazon S3 在指定的区域中创建存储桶。为减少延迟、最大限度地降低成本或满足法规要求,请选择地理上靠近您的任何 AWS 区域。例如,如果您位于欧洲,您可能会发现在欧洲(爱尔兰)或欧洲(法兰克福)区域创建存储桶十分有利。有关 Amazon S3 区域的列表,请参阅《AWS 一般参考》中的区域和端点。
注意
有关将 Amazon S3 Express One Zone 存储类与目录存储桶配合使用的更多信息,请参阅 目录存储桶和 S3 Express One Zone 和目录存储桶概述。
注意
属于您在特定 AWS 区域 中创建的存储桶的对象永远不会离开该区域,除非您明确将其传输到另一个区域。例如,在欧洲(爱尔兰)区域存储的对象将一直留在该区域。
关于权限
您可以使用 AWS 账户根用户 凭证创建存储桶并执行任何其他 Amazon S3 操作。但是,我们建议您不要使用 AWS 账户 的根用户凭证发出请求,例如创建存储桶。而是创建一个 AWS Identity and Access Management (IAM) 用户,并向该用户授予完全访问权限 (用户在默认情况下没有任何权限)。
这些用户称为管理员。您可以使用管理员用户凭证而不是您账户的根用户凭证来与 AWS 交互和执行任务,例如创建存储桶,创建用户和授予他们权限。
有关更多信息,请参阅《AWS 一般参考》中的 AWS 账户根用户 凭证和 IAM 用户凭证以及《IAM 用户指南》中的 IAM 中的安全最佳实践。
创建资源的 AWS 账户 拥有该资源。例如,如果您在 AWS 账户 中创建一个 IAM 用户并向该用户授予创建存储桶的权限,则该用户可以创建存储桶。但该用户不拥有存储桶;该存储桶属于用户所属的 AWS 账户 所有。用户需要资源拥有者提供其他权限来执行任何其他存储桶操作。有关为您的 Amazon S3 资源管理权限的更多信息,请参阅Amazon S3 的身份和访问管理。
管理对存储桶的公有访问
通过存储桶策略和/或访问控制列表(ACL)授予对存储桶和对象的公共访问权限。为了帮助您管理对 Amazon S3 资源的公有访问,Amazon S3 提供屏蔽公共访问权限的设置。Amazon S3 屏蔽公共访问权限设置可以覆盖 ACL 和存储桶策略,以便您可以对这些资源的公有访问实施统一限制。您可以将屏蔽公共访问权限设置应用于您的账户中的单个存储桶或所有存储桶。
为确保您的所有 Amazon S3 存储桶和对象都屏蔽了公共访问权限,在创建新存储桶时,默认情况下会启用“屏蔽公共访问权限”的所有四个设置。我们建议也为您的账户启用“屏蔽公共访问权限”的所有四个设置。这些设置阻止所有当前和将来的存储桶的所有公有访问。
在应用这些设置之前,请确认您的应用程序在没有公有访问的情况下能够正常工作。如果您需要对存储桶或对象进行某种级别的公共访问,例如,要按照使用 Amazon S3 托管静态网站中所述托管静态网站,则可以自定义各个设置以符合您的存储使用案例要求。有关更多信息,请参阅 阻止对您的 Amazon S3 存储的公有访问。
但是,我们建议将“屏蔽公共访问权限”保留为启用状态。如果要将所有四个“屏蔽公共访问权限”设置保持为启用状态并托管静态网站,则可以使用 Amazon CloudFront 来源访问控制(OAC)。Amazon CloudFront 提供了设置安全静态网站所需的功能。Amazon S3 静态网站仅支持 HTTP 端点。Amazon CloudFront 使用 Amazon S3 的持久存储,同时提供额外的安全标头,如 HTTPS。HTTPS 通过加密正常 HTTP 请求并防范常见的网络攻击来增强安全性。
有关更多信息,请参阅《Amazon CloudFront 开发人员指南》中的安全静态网站入门。
注意
如果您在列出存储桶及其公有访问设置时看到 Error
,则您可能不具备所需的权限。确保您已将以下权限添加到您的用户或角色策略:
s3:GetAccountPublicAccessBlock s3:GetBucketPublicAccessBlock s3:GetBucketPolicyStatus s3:GetBucketLocation s3:GetBucketAcl s3:ListAccessPoints s3:ListAllMyBuckets
在极少数情况下,请求也可能因 AWS 区域中断而失败。
存储桶配置选项
Amazon S3 支持各种供您用于配置存储桶的选项。例如,您可以配置存储桶用于网站托管、添加配置以管理存储桶中对象的生命周期以及配置存储桶以记录对存储桶的所有访问。Amazon S3 支持供您存储和管理存储桶配置信息的子资源。您可以使用 Amazon S3 API 创建和管理这些子资源。但是,还可以使用控制台或 AWS SDK。
注意
还有对象级配置。例如,可以通过特定于该对象的配置访问控制列表 (ACL) 来配置对象级权限。
这些称为子资源,因为它们存在于特定存储桶或对象的上下文中。下表列出使您可以管理特定于存储桶的配置的子资源。
子资源 | 描述 |
---|---|
cors(跨源资源共享) |
您可以配置存储桶以便允许跨源请求。 有关更多信息,请参阅 使用跨源资源共享 (CORS)。 |
事件通知 |
您可以使存储桶向您发送特定存储桶事件的通知。 有关更多信息,请参阅 Amazon S3 事件通知。 |
生命周期 |
您可以为存储桶中明确定义了生命周期的对象定义生命周期规则。例如,您可以定义一个规则以在创建一年之后存档对象,或在创建 10 年之后删除对象。 有关更多信息,请参阅 管理对象的生命周期。 |
位置 |
创建存储桶时,请指定需要 Amazon S3 在其中创建存储桶的 AWS 区域。Amazon S3 将此信息存储在位置子资源中并提供 API 用于检索此信息。 |
日志记录 |
日志记录使您可以跟踪针对存储桶的访问请求。每个访问日志记录都提供有关单个访问请求的详细信息,如请求者、存储桶名称、请求时间、请求操作、响应状态和错误代码(如果有)。访问日志信息可能在安全和访问审核方面十分有用。它还可以帮助您了解您的客户群并了解您的 Amazon S3 账单。 有关更多信息,请参阅 使用服务器访问日志记录来记录请求。 |
对象锁定 |
要使用 S3 对象锁定,您必须为存储桶启用它。您还可以选择配置将应用于存储桶中放置的新对象的默认保留模式和保留期限。 有关更多信息,请参阅 使用对象锁定以锁定对象。 |
策略 和 ACL(访问控制列表) |
所有资源(如存储桶和对象)在默认情况下为私有。Amazon S3 支持存储桶策略和访问控制列表(ACL)选项,供您用于授予和管理存储桶级权限。Amazon S3 将权限信息存储在策略 和 acl 子资源中。 有关更多信息,请参阅 Amazon S3 的身份和访问管理。 |
复制 |
复制是在相同或跨不同 AWS 区域 中的存储桶自动、异步地复制对象。有关更多信息,请参阅 在区域内和跨区域复制对象。 |
requestPayment |
默认情况下,创建存储桶的 AWS 账户(存储桶拥有者)支付从存储桶进行的下载。存储桶拥有者可以使用此子资源指定对请求下载的人员收取下载费用。Amazon S3 提供了一个 API,用于管理此子资源。 有关更多信息,请参阅 使用申请方付款存储桶进行存储传输和使用。 |
标记 |
您可以向存储桶添加成本分配标签以便对 AWS 成本进行分类和跟踪。Amazon S3 提供标记 子资源以对存储桶上的标签进行存储和管理。通过使用应用于您存储桶的标签,AWS 可生成成本分配报告,其中按标签汇总了使用情况和成本。 有关更多信息,请参阅 Amazon S3 的账单和使用情况报告。 |
传输加速 |
Transfer Acceleration 可在您的客户端与 S3 存储桶之间实现快速、轻松、安全的远距离文件传输。Transfer Acceleration 利用 Amazon CloudFront 中的全球分布式边缘站点。 有关更多信息,请参阅 使用 Amazon S3 Transfer Acceleration 配置快速、安全的文件传输。 |
版本控制 |
版本控制可帮助恢复意外覆盖和删除。 我们建议将版本控制作为从错误删除或覆盖恢复对象的最佳实践。 有关更多信息,请参阅 使用 S3 版本控制保留对象的多个版本。 |
网站 |
您可以配置存储桶以便用于静态网站托管。Amazon S3 通过创建网站 子资源来存储此配置。 有关更多信息,请参阅 使用 Amazon S3 托管静态网站。 |