创建通用存储桶时,您可以选择存储桶名称和要在其中创建存储桶的 AWS 区域。在创建通用存储桶后,将无法再更改其名称或区域。以下各节提供有关通用存储桶命名的信息,包括命名规则、最佳实践,以及创建名称包含全局唯一标识符(GUID)的通用存储桶的示例。
有关目录存储桶命名规则的信息,请参阅目录存储桶命名规则。
有关对象键名称的信息,请参阅创建对象键名称。
通用存储桶命名规则
以下命名规则适用于通用存储桶。
-
存储桶名称必须介于 3(最少)到 63(最多)个字符之间。
-
存储桶名称只能由小写字母、数字、句点 (
.
) 和连字符 (-
) 组成。 -
存储桶名称必须以字母或数字开头和结尾。
-
存储桶名称不得包含两个相邻的句点。
-
存储桶名称不得采用 IP 地址格式(例如
192.168.5.4
)。 -
存储桶名称不得以前缀
xn--
开头。 -
存储桶名称不得以前缀
sthree-
开头。 -
存储桶名称不得以前缀
amzn-s3-demo-
开头。 -
存储桶名称不得以后缀
-s3alias
结尾。此后缀是为接入点别名预留的。有关更多信息,请参阅 接入点别名。 -
存储桶名称不得以后缀
--ol-s3
结尾。此后缀是为对象 Lambda 接入点别名预留的。有关更多信息,请参阅 如何为您的 S3 存储桶对象 Lambda 接入点使用存储桶式别名。 -
存储桶名称不得以后缀
.mrap
结尾。此后缀预留用于多区域接入点名称。有关更多信息,请参阅 命名 Amazon S3 多区域接入点的规则。 -
存储桶名称不得以后缀
--x-s3
结尾。此后缀预留用于目录存储桶。有关更多信息,请参阅 目录存储桶命名规则。 -
与 Amazon S3 Transfer Acceleration 一起使用的存储桶在其名称中不能有句点 (
.
)。有关 Transfer Acceleration 的更多信息,请参阅使用 Amazon S3 Transfer Acceleration 配置快速、安全的文件传输。
重要
-
存储桶名称在分区内所有 AWS 区域中的所有 AWS 账户间必须是唯一的。分区是区域的分组。AWS 目前有三个分区:
aws
(商用区域)、aws-cn
(中国区域)和aws-us-gov
(AWS GovCloud (US) 区域)。 -
存储桶名称不能被同一分区中的另一个 AWS 账户使用,直到存储桶被删除。删除存储桶后,请注意,同一分区中的另一个 AWS 账户可以使用相同的存储桶名称来表示新存储桶,因此可能会收到针对已删除存储桶的请求。如果需要防止出现这种情况,或者如果您希望继续使用相同的存储桶名称,请不要删除该存储桶。我们建议您清空并保留存储桶,同时根据需要阻止任何存储桶请求。
注意
2018 年 3 月 1 日之前,在美国东部(弗吉尼亚北部)区域中创建的存储桶的名称最多可包含 255 个字符,并且包括大写字母和下划线。自 2018 年 3 月 1 日起,美国东部(弗吉尼亚北部)中的新存储桶必须符合在所有其他区域中应用的相同规则。
通用存储桶名称示例
以下存储桶名称显示了在通用存储桶名称中支持使用哪些字符的示例:a-z、0-9 和连字符 (-
)。此处使用 amzn-s3-demo-
保留前缀仅用于说明目的。由于它是保留前缀,因此您无法创建以 amzn-s3-demo-
开头的存储桶名称。
-
amzn-s3-demo-bucket1-a1b2c3d4-5678-90ab-cdef-example11111
-
amzn-s3-demo-bucket
以下示例存储桶名称是有效的,但不推荐用于除静态网站托管以外的其它用途,因为它们包含句点 (.
):
-
example.com
-
www.example.com
-
my.example.s3.bucket
以下示例存储桶名称无效:
-
amzn_s3_demo_bucket
(包含下划线) -
AmznS3DemoBucket
(包含大写字母) -
amzn-s3-demo-bucket-
(以amzn-s3-demo-
前缀开头,并以连字符结尾) -
example..com
(连续包含两个句点) -
192.168.5.4
(与 IP 地址的格式相匹配)
最佳实践
命名存储桶时,请考虑以下存储桶命名最佳实践。
选择不可能导致命名冲突的存储桶命名方案
如果应用程序自动创建了存储桶,请选择不可能导致命名冲突的存储桶命名方案。确保存储桶名称已被使用时,您的应用程序逻辑会选择其他存储桶名称。
将全局唯一标识符(GUID)附加到存储桶名称
我们建议您创建不可预测的存储桶名称。除非您已经创建了存储桶,否则不要编写假定您所选存储桶名称可用的代码。创建不可预测的存储桶名称的一种方法是,在存储桶名称后附加一个全局唯一标识符(GUID),例如 amzn-s3-demo-bucket-a1b2c3d4-5678-90ab-cdef-example11111
。有关更多信息,请参阅 创建在存储桶名称中使用 GUID 的存储桶。
避免在存储桶名称中使用句点 (.
)
为了获得最佳兼容性,我们建议您避免在存储桶名称中使用句点 (.
),但仅用于静态网站托管的存储桶除外。如果您在存储桶名称中包含句点,则无法通过 HTTPS 使用虚拟托管类型寻址,除非您执行自己的证书验证。用于存储桶虚拟托管的安全证书不适用于其名称中带有句点的存储桶。
此限制不会影响用于静态网站托管的存储桶,因为静态网站托管只能通过 HTTP 提供。有关虚拟主机式寻址的更多信息,请参阅存储桶的虚拟托管。有关静态网站托管的更多信息,请参阅使用 Amazon S3 托管静态网站。
选择一个相关的名称
为存储桶命名时,我们建议您选择与您或您的业务相关的名称。避免使用与其他人关联的名称。例如,避免在存储桶名称中使用 AWS
或 Amazon
。
不要为了重新使用存储桶名称而删除存储桶
如果存储桶为空,您可以将其删除。删除存储桶后,该名称可供重复使用。但是,不能保证您能够立即重新使用该名称或完全可以重新使用该名称。删除存储桶后,可能需要一段时间才能重新使用该名称。此外,在您重新使用此名称之前,其它 AWS 账户可能会创建具有相同名称的存储桶。
删除存储桶后,请注意,同一分区中的另一个 AWS 账户可以使用相同的存储桶名称来表示新存储桶,因此可能会收到针对已删除存储桶的请求。如果需要防止出现这种情况,或者如果您希望继续使用相同的存储桶名称,请不要删除该存储桶。我们建议您清空并保留存储桶,同时根据需要阻止任何存储桶请求。
创建在存储桶名称中使用 GUID 的存储桶
以下示例向您展示了如何创建在存储桶名称末尾使用 GUID 的通用存储桶。
以下 AWS CLI 示例在美国西部(北加利福尼亚)区域 (us-west-1
) 中创建存储桶,示例存储桶名称使用了全局唯一标识符(GUID)。要使用此示例命令,请将
替换为您自己的信息。user input placeholders
aws s3api create-bucket \ --bucket
amzn-s3-demo-bucket1
$(uuidgen | tr -d - | tr '[:upper:]' '[:lower:]' ) \ --regionus-west-1
\ --create-bucket-configuration LocationConstraint=us-west-1
以下示例向您展示了如何使用AWS SDK for Java,在美国东部(弗吉尼亚州北部)区域 (us-east-1
) 中创建在存储桶名称末尾使用 GUID 的存储桶。要使用此示例,请将
替换为您自己的信息。有关其他 AWS SDK 的信息,请参阅在 AWS 上构建的工具user input placeholders
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.Bucket;
import com.amazonaws.services.s3.model.CreateBucketRequest;
import java.util.List;
import java.util.UUID;
public class CreateBucketWithUUID {
public static void main(String[] args) {
final AmazonS3 s3 = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1
).build();
String bucketName = "amzn-s3-demo-bucket
" + UUID.randomUUID().toString().replace("-", "");
CreateBucketRequest createRequest = new CreateBucketRequest(bucketName);
System.out.println(bucketName);
s3.createBucket(createRequest);
}
}