【发布时间】:2020-09-15 10:06:45
【问题描述】:
我正在尝试使用 python boto3 AWS lambda 函数将超过一小时的文件从一个 s3 存储桶移动到另一个 s3 存储桶,但情况如下:
- 两个存储桶可以在同一个帐户和不同的地区。
- 两个存储桶可以位于不同的帐户和不同的区域。
- 两个存储桶可以位于不同的帐户和同一区域。
我在使用@John Rotenstein 提到的 python 代码移动文件方面得到了一些帮助
import boto3
from datetime import datetime, timedelta
SOURCE_BUCKET = 'bucket-a'
DESTINATION_BUCKET = 'bucket-b'
s3_client = boto3.client('s3')
# Create a reusable Paginator
paginator = s3_client.get_paginator('list_objects_v2')
# Create a PageIterator from the Paginator
page_iterator = paginator.paginate(Bucket=SOURCE_BUCKET)
# Loop through each object, looking for ones older than a given time period
for page in page_iterator:
for object in page['Contents']:
if object['LastModified'] < datetime.now().astimezone() - timedelta(hours=1): # <-- Change time period here
print(f"Moving {object['Key']}")
# Copy object
s3_client.copy_object(
Bucket=DESTINATION_BUCKET,
Key=object['Key'],
CopySource={'Bucket':SOURCE_BUCKET, 'Key':object['Key']}
)
# Delete original object
s3_client.delete_object(Bucket=SOURCE_BUCKET, Key=object['Key'])
如何修改以满足需求
【问题讨论】:
标签: python amazon-web-services amazon-s3 boto3