一个python包,用于指示此ec2实例是否应为一个实例,并且仅用于在自动缩放组中执行任务。
chesne的Python项目详细描述
py chesney
一个python包,用于指示aws ec2实例是否是指定在自动缩放组中执行特殊任务的实例。
动机
假设您有一组ec2实例,通过一个自动伸缩组部署,它们都从共享网络驱动器提供web内容。
现在,假设您希望指定其中一个ec2实例为,并且只指定将共享内容备份到另一个位置。
如果启动配置设置了every实例来执行备份,那么它们最终可能都会相互践踏,并且会有大量的流量浪费。如果手动将一个实例配置为执行备份的特殊情况,那么当该实例关闭时会发生什么情况?
(当然,您可能决定让一个完全独立的ec2实例连接到网络驱动器来执行备份,这样您的web服务器就不会承担多个责任。这是个好主意。我假设您的项目不值得使用这样的基础设施,您很高兴有多个实例承担多个责任。)
chesney
通过确保它只为自动缩放组中的oneec2实例返回true
,并为所有其他实例返回false
来解决此问题。这意味着您可以将所有实例配置为——例如——执行每日检查以查看它们是否是唯一的,然后仅在它们是时启动备份。
安装
pip install chesney
命令行用法
python -m chesney [--log-level LEVEL]
将返回true
或false
。
代码使用
importchesneyifchesney.is_appointed():# Do the thingelse:# Don't do the thing.
权限
必须使用以下权限运行chesney
:
autoscaling:DescribeAutoScalingGroups
ec2:DescribeInstances
IAM策略如下:
PolicyName:AllowChesneyPolicyDocument:Statement:-Effect:AllowAction:-"autoscaling:DescribeAutoScalingGroups"-"ec2:DescribeInstances"Resource:-"*"
开发
先决条件
chesney
需要python 3.x。
安装依赖项
pip install -e .[dev]
运行测试
python test.py
更改日志
v1.0-2018-12-03
- 初次发布。