AWS Lambda 自动化和 Python - 自动创建S3 Bucket lifecycle
2019-11-29 17:26
2646 查看
最近经常需要创建一些S3 Bucket用于备份。每个新建的Bucket都应该配置lifecycle,自动删除旧的数据,以便节约空间和开支。
豆子写了一个简单的Lambda函数来自动实现。每次当我们创建一个Bucket的时候,他会调用对应的API,Cloudtrail监测到这个事件后,会发送给Cloudwatch, 然后Cloudwatch会自动调用我的函数来创建lifecycle policy。
下面是简单的截图说明。
创建一个新的Cloudwatch Rule
对应的Lambda函数
他默认的IAM已经有权限访问Cloudwatch, 我新建了一个S3的Policy,然后分配给他的IAM role,这样这个lambda函数可以访问Cloudwatch和S3 的权限。
下面是Python代码
import logging import boto3 from botocore.exceptions import ClientError lifecycle_config_settings = { 'Rules': [ {'ID': 'Delete Rule', 'Filter': {'Prefix': ''}, 'Status': 'Enabled', 'Expiration': { 'Days':100 }} ]} def put_bucket_lifecycle_configuration(bucket_name, lifecycle_config): """Set the lifecycle configuration of an Amazon S3 bucket :param bucket_name: string :param lifecycle_config: dict of lifecycle configuration settings :return: True if lifecycle configuration was set, otherwise False """ # Set the configuration s3 = boto3.client('s3') try: s3.put_bucket_lifecycle_configuration(Bucket=bucket_name, LifecycleConfiguration=lifecycle_config) except ClientError as e: return False return True def lambda_handler111(event, context): # TODO implement test_bucket_name = event.get('detail').get('requestParameters').get('bucketName') print(event) print(event.get('detail').get('requestParameters').get('bucketName')) success = put_bucket_lifecycle_configuration(test_bucket_name,lifecycle_config_settings) if success: # logging.info('The lifecycle configuration was set for {test_bucket_name}') print('The lifecycle configuration was set for {test_bucket_name}')
实际运行的效果,但我创建了一个新的Bucket的时候,他会自动调用这个函数,添加policy。
下面是Cloudwatch的日志
这个是新建的Bucket的lifecycle policy
相关文章推荐
- Lambda,AWS和Python的自动化管理操作 - 自动Resize S3上传的图片
- Appium+Python+Pycharm创建并运行自动化测试脚本
- 第三百四十四节,Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制
- python接口自动化(三十三)-python自动发邮件总结及实例说明番外篇——下(详解)
- python实现自动生成接口自动化测试报告
- Python+selenium创建自动执行命令脚本
- python将linux系统下的war包自动部署到winserver2008tomcat服务下的自动化脚本
- 关于用python自动创建项目管理redmine的项目及任务及子任务
- Python模拟鼠标点击实现方法(将通过实例自动化模拟在360浏览器中自动搜索python)
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- 创建SpringBoot项目pom文件报错:Error parsing lifecycle processing instructions
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- Python+selenium创建自动执行命令脚本
- (转载)最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件
- Python+selenium创建自动执行命令脚本
- python接口自动化3-自动发帖(session)
- 「python自动化运维」之自动生成配置文件并上传到目标服务器指定的位置
- Python自动化脚本【1】url提取及自动打开页面
- 如何使用python来模拟鼠标点击(将通过实例自动化模拟在360浏览器中自动搜索"python")
- 最完整的自动化测试流程:Python编写执行测试用例及定时自动发送最新测试报告邮件