import boto3
from botocore.exceptions import ClientError
import datetime
client = boto3.client('s3')
def lambda_handler(event, context):
current_time = datetime.datetime.utcnow()
expire_time = datetime.timedelta(days=30) # 设置存储桶保留的天数
response = client.list_buckets()
for bucket in response['Buckets']:
creation_time = bucket['CreationDate'].replace(tzinfo=None)
if (current_time - creation_time) > expire_time:
try:
client.delete_bucket(Bucket=bucket['Name'])
print("S3 bucket {0} has been deleted".format(bucket['Name']))
except ClientError as e:
print("Could not delete S3 bucket {0}: {1}".format(bucket['Name'], e))
将lambda函数与AWS CloudWatch事件进行联动,以在过期时自动触发删除操作。进入AWS控制台,创建一个CloudWatch事件规则,选择刚才创建的lambda函数作为目标,指定运行时间和时间表等触发器。
(可选)创建一个SNS主题并与CloudWatch事件联动,以在S3存储桶被删除时向管理员发送通知。
测试lambda函数和CloudWatch事件规则的功能,检查s3存储桶是否按照预期进行自动删除。
请注意,进行自动删除操作时需小心谨慎,确保不要删除尚未过期或仍在使用的存储桶。可以通过添加额外条件来限制删除操作,如最后修改时间等。
下一篇:AWSS3存储桶告警撤销操作