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

nos*_*nos 1 amazon-s3 amazon-web-services boto3

我在boto3 文档中进行了搜索,但在那里没有找到相关信息。在此链接中,提到可以使用

k.storage_class='STANDARD_IA'

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

Joh*_*ein 8

新文件

import boto3

client = boto3.client('s3')

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

现有文件

如何通过 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'
  }
)
Run Code Online (Sandbox Code Playgroud)


Jam*_*rke 5

boto3 存储数据示例来看,放入对象的标准方法似乎boto3

s3.Object('mybucket', 'hello.txt').put(Body=open('/tmp/hello.txt', 'rb'))
Run Code Online (Sandbox Code Playgroud)

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

StorageClass='STANDARD_IA'
Run Code Online (Sandbox Code Playgroud)

因此,将两者结合起来,我们有:

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

希望有帮助