设置对象的存储类 - Amazon Simple Storage Service

设置对象的存储类

可以在上传对象时为其指定存储类,如果不指定,Amazon S3 将使用默认的 Amazon S3 Standard 存储类。还可以通过使用 Amazon S3 控制台、AWS SDK 或 AWS Command Line Interface(AWS CLI),将已存储在 Amazon S3 中的对象的存储类更改为任何其它存储类。所有这些方法都使用 Amazon S3 API 操作将请求发送到 Amazon S3。

可以通过向存储桶添加 S3 生命周期配置来指示 Amazon S3 自动更改对象的存储类。有关更多信息,请参阅 管理对象的生命周期

在设置 S3 复制配置时,可以将已复制对象的存储类设置为其它任何存储类。但是,您无法复制存储在 S3 Glacier Flexible Retrieval 或 S3 Glacier Deep Archive 存储类中的对象。有关更多信息,请参阅 复制配置文件元素

以编程方式设置存储类时,需要提供存储类的值。以下是存储类的控制台名称及其相应 API 值的列表:

  • S3 StandardSTANDARD

  • S3 Standard-IASTANDARD_IA

  • S3 One Zone-IAONEZONE_IA

  • S3 Express One ZoneEXPRESS_ONEZONE

  • S3 Intelligent-TieringINTELLIGENT_TIERING

  • S3 Glacier Instant RetrievalGLACIER_IR

  • S3 Glacier Flexible RetrievalGLACIER

  • S3 Glacier Deep ArchiveDEEP_ARCHIVE

  • REDUCED_REDUNDANCYREDUCED_REDUNDANCY

设置新对象的存储类

要在上传对象时设置存储类,可以使用以下方法。

要在控制台中上传新对象时设置存储类,请执行以下操作:

  1. 登录到 AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶

  3. Buckets(存储桶) 列表中,请选择要将文件夹和文件上传到的存储桶的名称。

  4. 请选择 Upload(上传)。

  5. 上传窗口中,选择属性

  6. 在“存储类”下,为正在上传的文件选择存储类。

  7. (可选)为您正在上传的文件配置任何其它属性。有关更多信息,请参阅上传对象

  8. 在上传窗口中,执行下列操作之一:

    • 将文件和文件夹拖到“上传”窗口。

    • 选择添加文件添加文件夹,选择要上传的文件或文件夹,然后选择打开

  9. 在页面底部,选择上传

使用 PutObjectPOST ObjectCreateMultipartUpload API 操作创建对象时,可以在对象上指定存储类,并添加 x-amz-storage-class 标头。如果您未添加此标头,Amazon S3 将使用默认的 S3 Standard (STANDARD) 存储类。

此示例请求使用 PutObject 命令将新对象的存储类设置为 S3 Intelligent-Tiering:

PUT /my-image.jpg HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.Region.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: authorization string Content-Type: image/jpeg Content-Length: 11434 Expect: 100-continue x-amz-storage-class: DEEP_ARCHIVE

此示例使用 put-object 命令将 my_images.tar.bz2 上传到 GLACIER 存储类中的 amzn-s3-demo-bucket1

aws s3api put-object --bucket amzn-s3-demo-bucket1 --key dir-1/my_images.tar.bz2 --storage-class GLACIER --body my_images.tar.bz2

如果对象大小超过 5 GB,请使用以下命令来设置存储类:

aws s3 cp large_test_file s3://amzn-s3-demo-bucket1 --storage-class GLACIER

更改现有对象的存储类

要在上传对象时设置存储类,可以使用以下方法。

如果对象大小小于 5 GB,则可以使用 Amazon S3 控制台更改对象的存储类。如果更大,我们建议添加 S3 生命周期配置来更改对象的存储类。

要在控制台中更改对象的存储类,请执行以下操作:

  1. 登录到AWS Management Console,然后通过以下网址打开 Amazon S3 控制台:https://console.aws.amazon.com/s3/

  2. 在左侧导航窗格中,选择存储桶,然后选择通用存储桶选项卡。导航到包含要更改的对象的 Amazon S3 存储桶或文件夹。

  3. 选中待更改对象的名称左侧的复选框。

  4. 操作菜单上,从显示的选项列表中选择编辑存储类

  5. 从可用于对象的存储类中进行选择。

  6. 其它复制设置下,选择是要复制源设置请勿指定设置还是指定设置复制源设置是默认选项。如果您只想复制不带源设置属性的对象,请选择请勿指定设置。选择指定设置以指定存储类、ACL、对象标签、元数据、服务器端加密和其它校验和的设置。

  7. 选择右下角的保存更改。Amazon S3 将保存更改。

要更改现有对象的存储类,请使用以下方法。

此示例请求使用 PutObject 命令将新对象的存储类设置为 S3 Intelligent-Tiering:

PUT /my-image.jpg HTTP/1.1 Host: amzn-s3-demo-bucket1.s3.Region.amazonaws.com Date: Wed, 12 Oct 2009 17:50:00 GMT Authorization: authorization string Content-Type: image/jpeg Content-Length: 11434 Expect: 100-continue x-amz-storage-class: DEEP_ARCHIVE

此示例使用 put-object 命令将 my_images.tar.bz2 更新为 DEEP_ARCHIVE 存储类中的 amzn-s3-demo-bucket1

aws s3api put-object --bucket amzn-s3-demo-bucket1 --key dir-1/my_images.tar.bz2 --storage-class DEEP_ARCHIVE --body my_images.tar.bz2

如果对象大小超过 5 GB,请使用以下命令来更改存储类:

aws s3 cp object_S3_URI object_S3_URI --storage-class DEEP_ARCHIVE

将访问策略权限限制到特定存储类

在授予 Amazon S3 操作的访问策略权限时,您可以使用 s3:x-amz-storage-class 条件键限制存储上传的对象时使用的存储类。例如,授予 s3:PutObject 权限时,您可以将对象上传限制到特定的存储类。有关策略示例,请参阅示例:将对象上传限制为具有特定存储类的对象

有关在策略中使用条件的更多信息和 Amazon S3 条件键的完整列表,请参阅以下主题: