我有一个包含大量文件的现有s3存储桶。我想每1分钟运行一个lambda函数,并将这些文件复制到另一个目标s3存储桶。
我的功能是:
s3 = boto3.resource('s3')
clientname=boto3.client('s3')
def lambda_handler(event, context):
bucket = 'test-bucket-for-transfer-check'
try:
response = clientname.list_objects(
Bucket=bucket,
MaxKeys=5
)
for record in response['Contents']:
key = record['Key']
copy_source = {
'Bucket': bucket,
'Key': key
}
try:
destbucket = s3.Bucket('serverless-demo-s3-bucket')
destbucket.copy(copy_source, key)
print('{} transferred to destination bucket'.format(key))
except Exception as e:
print(e)
print('Error getting object {} from bucket {}. '.format(key, bucket))
raise e
except Exception as e:
print(e)
raise e
现在我如何确保该函数每次运行时都复制新文件?
答案 0 :(得分:0)
假设有问题的两个铲斗是Bucket-A和Bucket-B
并且要完成的任务是从Bucket-A复制文件 - >桶-B
现在您拥有DynamoDb表中的所有记录" Copy-Logs"哪些文件已成功复制,哪些文件未复制。
HIH
[更新]
我错过了最后一部分。它是单向同步。您还可以从两个存储桶中获取文件的列表/名称,然后区分这些集(文件名)并将其余部分上传到目标存储桶。