如何使用boto3写入S3标准不频繁访问?

时间:2017-09-18 21:35:28

标签: amazon-web-services amazon-s3 boto3

我在boto3 doc搜索,但没有在那里找到相关信息。在这个link中,提到它可以使用

完成

k.storage_class='STANDARD_IA'

有人可以在这里分享完整的代码段吗?非常感谢。

2 个答案:

答案 0 :(得分:4)

新文件

import boto3

client = boto3.client('s3')

client.upload_file(
    Filename = '/tmp/foo.txt', 
    Bucket = 'my-bucket', 
    Key = 'foo.txt',
    ExtraArgs = {
      'StorageClass': 'STANDARD_IA'
    }
)

现有文件

来自How to change storage class of existing key via boto3

import boto3

s3 = boto3.client('s3')

copy_source = {
    'Bucket': 'mybucket',
    'Key': 'mykey'
}

s3.copy(
  CopySource = copy_source,
  Bucket = 'target-bucket', 
  Key = 'target-key',
  ExtraArgs = {
    'StorageClass': 'STANDARD_IA',
    'MetadataDirective': 'COPY'
  }
)

答案 1 :(得分:1)

boto3 Storing Data示例看,将对象放入boto3的标准方法是

s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))

但是要设置存储类,S3.Object.Put建议我们要使用参数:

StorageClass='STANDARD_IA'

所以结合两者,我们有:

import boto3
s3 = boto3.resource('s3')
s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'), StorageClass='STANDARD_IA')

希望有所帮助