如何在s3桶中更改对象的存储类?

时间:2016-03-21 13:24:01

标签: amazon-s3 s3cmd

我需要使用s3cmd将s3对象的存储类从STANDARD类更改为STANDARD_IA。任何人都可以帮我完成这项任务。提前谢谢。

3 个答案:

答案 0 :(得分:1)

使用s3cmd:

s3cmd cp s3://BUCKET/KEY s3://BUCKET/KEY --storage-class=STANDARD_IA

使用AWS CLI:

aws s3 cp s3://BUCKET/KEY s3://BUCKET/KEY --storage-class STANDARD_IA

答案 1 :(得分:1)

我用过

import boto3

client = boto3.client('s3')
s3 = boto3.resource('s3')
bucket_name = 'foobar'

list_objects_response = client.list_objects(Bucket=bucket_name)

last_key = 'f'
for f in list_objects_response['Contents']:
    last_key = f['Key']
    if f['StorageClass'] != 'STANDARD_IA':
        object = s3.Object(bucket_name, f['Key'])
        object.put(StorageClass='STANDARD_IA')

while list_objects_response['IsTruncated']:
    list_objects_response = client.list_objects(Bucket=bucket_name, Marker=last_key)
    for f in list_objects_response['Contents']:
        last_key = f['Key']
        if f['StorageClass'] != 'STANDARD_IA':
            object = s3.Object(bucket_name, f['Key'])
            object.put(StorageClass='STANDARD_IA')

我认为使用Mark B的答案中的cp命令会产生对象/文件数据传输费用,并且由于文件数据传输而变慢。

答案 2 :(得分:1)

如果要更改存储桶中所有对象的存储类别,请使用:

aws s3 cp s3://<bucket-name>/ s3://<bucket-name>/ --recursive --storage-class <storage_class>