【发布时间】:2022-01-07 11:02:23
【问题描述】:
我的 S3 存储桶中已经有数千个对象。我现在已经编写了一个 lambda 函数来处理它们,并且当文件被放入该 S3 存储桶时它会被触发。我想复制一些具有匹配模式的对象并将它们放在同一个桶中以触发我的 lambda。目前,我正在遵循以下方法,这需要很多时间。
import boto3, botocore
s3_source = boto3.resource('s3')
bucket_source = s3_source.Bucket('vistradata')
key_list = []
objs = list(bucket_source.objects.filter(Prefix='data/'))
for i in range(0, len(objs)):
key_list.append(objs[i].key)
files = [i for i in key_list if 'mystring' in i]
def copy_data_from_s3(input_file):
s3 = boto3.resource('s3')
copy_source = {
'Bucket': 'bucket',
'Key': input_file
}
s3.meta.client.copy(copy_source, 'bucket', input_file)
for i in files:
copy_data_from_s3(i)
有没有更好的方法使用 aws s3 sync 或 aws s3 cp?我在网上看到的示例是将数据从一个存储桶复制到另一个存储桶,而不是在同一个存储桶中。谢谢。
【问题讨论】:
标签: python amazon-web-services amazon-s3 boto3 aws-cli