Emi*_*ile 1 amazon-s3 amazon-web-services aws-cli aws-sdk
有没有办法在一个 S3 存储桶中找到所有超过 100 天的文件并将它们移动到另一个存储桶?欢迎使用 AWS CLI 或 SDK 的解决方案。在 src 存储桶中,文件的组织方式类似于存储桶/类型/年/月/日/小时/文件
S3://my-logs-bucket/logtype/2020/04/30/16/logfile.csv
。例如, on 2020/04/30,2020/01/21必须移动或之前的日志文件。
下面是一些 Python 代码,它将:
Bucket-A,Bucket-B则将文件从 移至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(days=2): # <-- 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'])
Run Code Online (Sandbox Code Playgroud)
它对我有用,但请在部署到生产中之前对不太重要的数据进行测试,因为它会删除对象!
该代码使用分页器以防存储桶中有 1000 个以上的对象。
您可以根据需要更改时间段。
(除了根据本网站的服务条款授予的许可,本文的内容在 MIT-0 下获得许可。)
| 归档时间: |
|
| 查看次数: |
1921 次 |
| 最近记录: |