AWS Lambda 自动化和 Python - 自动创建S3 Bucket lifecycle

最近经常需要创建一些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

原文地址:https://blog.51cto.com/beanxyz/2454855

时间: 2024-10-11 13:26:29

AWS Lambda 自动化和 Python - 自动创建S3 Bucket lifecycle的相关文章

Lambda,AWS和Python的自动化管理操作 - 自动创建快照,删除快照

这一节看看如何通过boto3来管理EC2的快照.在实际生产环境中,豆子使用的是AWS提供的解决方案 EBS Snapshot Scheduler, 直接导入Cloudformation的stack,会自动配置Lambda函数和DynamoDB数据库,然后我们可以通过标签来进行设置.从学习的角度,我们直接来弄一个超简易的版本.我们可以直接写两个Lambda函数,一个进行创建,一个进行删除. 首先,设置一个tag标签 接下来创建Lambda函数 IAM Role的配置如下 { "Version&qu

AWS Lambda 自动化和 PowerShell

这两天我都在看如何使用Lambda和Python,但是平常更习惯使用PowerShell来管理各种系统.试试看如何在Lambda里面使用PowerShell吧. 首先在本地计算机上需要安装下面三个模块. 安装PowerShell Corehttps://github.com/powershell/powershell 安装 the .NET Core Software Development Kit (SDK)https://www.microsoft.com/net/download 安装 A

利用lambda函数自动创建EBS快照和删除快照

利用lambda函数自动创建EBS快照和删除快照 此文章参考了AWS中国区关于构建自动化EBS快照周期的官方文档,参考链接"https://amazonaws-china.com/cn/blogs/china/construct-ebs-life-circle-management/" 本文与之不同的是,本文没有使用dynamoDB服务,仅通过lambda完成了EBS的快照备份.当然,自动快照一定要搭配自动删除功能使用,否则快照容量越来越大,无形中增加了企业的IT成本. 使用阿里云和腾

接口自动化:Jenkins 自动构建python+nose测试

参考: http://www.cnblogs.com/LanTianYou/p/6559916.html#_label1 http://blog.csdn.net/limm33/article/details/51191263 通过Jenkins自动化构建python nose测试分两步: 1. 创建节点(节点就是执行自动化测试的机器): 2. 创建任务并绑定节点(用指定的机器来跑我们创建的任务,这里我们选择执行一段脚本) 1,创建节点: jenkins->系统管理->管理节点->新增节

使用python脚本自动创建pip.ini配置文件

运行一下python代码自动创建pip/pip.ini文件并添加pip源 """ python建立pip.ini.py 2016年4月30日 03:35:11 codegay """ import os ini="""[global] index-url = https://pypi.doubanio.com/simple/ [install] trusted-host=pypi.doubanio.com "

什么是AWS Lambda?——事件驱动的函数执行环境

AWS CTO Werner Vogels在AWS re:Invent 2014大会的第二场主题演讲上公布了两个新服务和一系列新的实例,两个新服务都相当令人瞩目:第一个宣布的新服务是Amazon EC2 Container Service,跟Docker紧密联合的管理服务,令人兴奋,不过不是本篇报道的重点. 本篇报道主要想向大家介绍一下今天宣布的第二个服务:AWS Lambda. 什么是AWS Lambda? 根据Jeff Barr在博客上的描述,Lambda是一个"可简单创建Lambda函数.

用Python自动办公,做职场高手(完结)

教程目录: ┣━07.S2 Word自动化处理,又快又好做文档┃  ┣━36 本章介绍┣━08.[Word]S2-1 轻松用Python快速生成Word文档┃  ┣━45.[真实案例]S2-1-3 批量生成50份不同乙方的合同┃  ┣━38.[视频讲解]S2-1-1 用Python套用Word模版,再也不做重复工作┃  ┃  ┣━[视频讲解]S2-1-1 用Python套用Word模版,再也不做重复工作┃  ┣━42.[视频讲解]S2-1-2 用Python给Word添加图片和表格,神操作┃  

DynamoDB 流 和 AWS Lambda 触发器

Amazon DynamoDB 与 AWS Lambda 集成,使您能够创建触发器 — 自动响应 DynamoDB 流 中的事件的代码片段.利用触发器,您可以创建应对 DynamoDB 表中的数据修改的应用程序. 如果您在表中启用 DynamoDB 流,则可以将流 Amazon 资源名称 (ARN) 与您编写的 AWS Lambda 函数关联起来.在修改表中的项目之后,表的流中都将出现一条新记录.AWS Lambda 将轮询流并在检测到新的流记录时同步调用 Lambda 函数. Lambda 函

Linux服务器通过aws命令行上传文件至S3

目的Linux服务器通过AWS命令行上传文件至S3 配置打开你的AWS控制台: 连接你的Linux服务器,按照以下步骤操作: # 安装pip yum -y install python-pip   # 安装awscli pip install awscli   # 初始化配置 aws configure # 做这一步时系统会要求你输入"访问密钥ID"."私有访问密钥"."默认区域名称"."默认输出格式",前两个在创建IAM用户