云计算
最近需要为备份创建几个S3 Bucket。 必须为每个新Bucket配置生命周期,并自动删除旧数据以节省空间和成本。
豆子写了简单的Lambda函数自动实现了。 每次我们创建Bucket时,他都会调用对应的API,Cloudtrail监控了这个事件后发送到Cloudwatch,Cloudwatch会自动调用我的函数创建生命周期策略。
以下是简单的屏幕截图说明。
创建新的云修补规则
对应的Lambda函数
他的默认IAM已经有访问Cloudwatch的权限。 我创建了一个新的Policy,并将其分配给他的IAM role,以便此lambda函数可以访问Cloudwatch和S3。
接下来是Python代码
导入日志
import boto3
frombotocore.exceptionsimportclienterror
lifecycle_config_settings={
\\\&; #039; Rules\\\&; #039; [
{\\\&; quot; id\\&; quot;\&; quot; 删除规则\ & amp; quot;
\\\&; #039; filter\\&; quot; {\\&; quot; prefix\\&; quot;\&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; \&; quot; 使用,
\\\&; quot; status\\&; quot;\&; quot; 启用\ & amp; quot;
\\\&; #039; expiration\\&; quot; {\\&; quot; days\\&; quot; 100}
]}
ef put _ bucket _ lifecycle_configuration ( bucket _ name,life cycle _ config ) :
setthelifecycleconfigurationofanamazons3bucket
: param bucket_name: string
: param life cycle _ config:dictoflifecycleconfigurationsettings
: return:trueiflifecycleconfigurationwasset,otherwise False
# Set the configuration
S3=botO3.client ( ( () ) ) ( S3 ) ( ( ) ) ) ) ) ) ) ) ) ) ) ) ) ) 652
try :
S3.put _ bucket _ life cycle _ configuration ( bucket=bucket _ name,
life cycle configuration=life cycle _ config )
except ClientError as e :
返回假
返回真
eflambda_handleR111(event,context ) :
# TODO implement
test _ bucket _ name=event.get (\\ & amp; #039; 详细信息\\& amp; quot; get(\( ) ) ( (请求参数) ) ) )
打印(事件)。
print(event.get ( ( ( ) detail ( ( ) ) ) ) ) ( buckks ) ) ) ) ) ) ) bucket )
success=put _ bucket _ life cycle _ configuration ( test _ bucket _ name,lifecycle_config_settings ) )。
if success :
#logging.info ( ( ( ) ( thelifecycleconfigurationwassetfor ( test _ bucket _ name ) ) ) ) ) ) )。
print ( ( ) ) ( thelifecycleconfigurationwassetfor ( test _ bucket _ name ) ) ) ) ) ) ) ) 652 )
虽然是实际执行的效果,但是当我创建新的Bucket时,他会自动调用此函数并添加policy。
以下是云watch日志
这是新Bucket的生命周期策略
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn