在 Amazon S3 上构建应用程序的常见通用存储桶模式
在 Amazon S3 上构建应用程序时,您可以使用唯一的通用存储桶来分隔不同的数据集或工作负载。当您构建为最终用户或不同用户组服务的应用程序时,请使用我们的最佳实践设计模式来构建能够充分利用 Amazon S3 功能和可扩展性的应用程序。
重要
我们建议您创建不可预测的通用存储桶名称。除非您已经创建了存储桶,否则不要编写假定您所选存储桶名称可用的代码。创建不可预测的存储桶名称的一种方法是,在您的存储桶名称后附加一个全局唯一标识符(GUID),例如 amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-EXAMPLE11111
。有关通用存储桶命名规则的更多信息,请参阅通用存储桶命名规则。
多租户通用存储桶模式
使用多租户存储桶,您可以为团队或工作负载创建单个通用存储桶。您可以使用唯一的 S3 前缀来组织存储在存储桶中的对象。前缀是对象键名称开头的一串字符串。前缀可以是任意长度,取决于对象键名称的最大长度(1024 个字节)。您可以把前缀视为一种以类似于目录的方式组织数据的方式。但是,前缀不是目录。
例如,要存储关于城市的信息,您可以按大陆、按国家/区域,然后按省份或州来进行组织。因为这些名称通常不包含标点符号,您可以使用斜杠 (/) 作为分隔符。以下示例展示了如何使用斜杠(/)作为分隔符,通过大陆、国家/地区,然后是省份或州来组织城市名称的前缀。
-
Europe/France/NouvelleA-Aquitaine/Bordeaux
-
North America/Canada/Quebec/Montreal
-
North America/USA/Washington/Bellevue
-
North America/USA/Washington/Seattle
当通用存储桶内有数百个唯一的数据集时,这种模式可以很好地扩展。使用前缀,您可以轻松地对这些数据集进行组织和分组。
但是,多租户通用存储桶模式的一个潜在缺点是,许多 S3 存储桶级别的功能(例如默认存储桶加密、S3 版本控制和 S3 申请方付款)是在存储桶级别而不是在前缀级别设置的。如果多租户存储桶中的不同数据集具有独特的要求,而您无法在前缀级别配置许多 S3 存储桶级别功能,那么您可能很难为每个数据集指定正确的设置。此外,在多租户存储桶中,当您试图了解与特定前缀相关的存储、请求和数据传输时,成本分配可能会变得复杂。
按用途划分的存储桶模式
使用按用途划分的存储桶模式,您可以为每个不同的数据集、最终用户或团队创建一个通用存储桶。由于您可以为每个存储桶配置 S3 存储桶级别的功能,因此您可以使用此模式来配置唯一的存储桶级别设置。例如,您可以按照针对每个存储桶中的数据集自定义的方式,来配置默认存储桶加密、S3 版本控制和 S3 申请方付款等功能。为每个不同的数据集、最终用户或团队使用一个存储桶,还有助于简化访问管理和成本分配策略。
这种策略的一个潜在缺点是,您可能需要管理数千个存储桶。所有 Amazon Web Services 账户的默认配额均为 10000 个通用存储桶。可以通过提交增加配额请求来增加账户的存储桶配额。要请求提高通用存储桶的配额,请访问服务配额控制台
要管理您的按用途划分的存储桶模式,并简化您的基础设施管理,可以使用 Amazon CloudFormation。您可以为您的模式创建自定义 Amazon CloudFormation 模板,该模板已经定义了 S3 通用存储桶所需的所有设置,以便您可以轻松部署和跟踪对基础设施的任何更改。有关更多信息,请参阅《Amazon CloudFormation User Guide》中的 AWS::S3::Bucket。
