帮助在AWS ECS上注册新的任务定义并更新相关服务。
ecs-task的Python项目详细描述
ecs-task
ecs-task
是一个固执己见但灵活的工具,用于部署到Amazon Web Service's Elastic Container Service。在
它建在以下场所:
- ECS服务、负载平衡器、自动伸缩等在其他地方进行管理,例如Terraform、Cloudformation等
- 部署到ECS定义为:
- 使用新的图像标记更新任务定义
- [可选]运行任意数量的一次性任务,例如Django数据库迁移。在
- [可选]更新服务以使用新的任务定义。在
- [可选]更新Cloudwatch事件目标以使用新的任务定义。在
- 注销旧任务定义。在
- 应用程序管理自己的任务/容器定义,可以将自己部署到预定义的ECS集群上。在
- 回滚的能力很重要,应该尽可能简单。在
安装
pip install ecs-task
(可选地,只需将ecs_task.py
复制到项目并安装boto3
)。在
使用
这个模块由一个单独的类ecs_task.ECSTask
组成,该类是为在项目中扩展而设计的。一个基本的例子:
您可以将其另存为_ecs/web_dev.py
,然后用python -m _ecs.web_dev --help
执行它
usage: web_dev.py [-h] {deploy,rollback,debug} ...
ECS Task
positional arguments:
{deploy,rollback,debug}
deploy Register new task definitions using `image_tag`.
Update defined ECS Services, Event Targets, and run
defined ECS Tasks
rollback Deactivate current task definitions and rollback all
ECS Services and Event Targets to previous active
definition.
debug Dump JSON generated for class attributes.
optional arguments:
-h, --help show this help message and exit
类属性
ECSTask
的子类必须包含一个task_definition
才能执行任何操作。任何其他属性都是可选的。以下属性被设计成通过^{
task_definition
:(dict)^{} docs update_services
(列表)^{} docs run_tasks
(列表)^{} docs events__put_targets
(列表)^{} docs
还有一些附加属性可用:
- 在
在active_task_count
:(int)部署后要保持活动状态的任务定义数。默认值为10
。在 - 在
sns_notification_topic_arn
:(str)SNS主题的ARN,每当执行AWS API调用时,该主题将接收消息。这可用于触发通知或执行与部署相关的其他任务。邮件格式如下:{"client":client,# boto3 client (usually "ecs")"method":method,# method called (e.g., "update_service")"input":kwargs,# method input as a dictionary"result":result# results from AWS API}
在 - 在
在notification_method_blacklist_regex
(re.图案)避免为发送通知的方法模式。默认值为re.compile(r"^describe_|get_|list_|.*register_task")
命令界面
通过调用.main()
,每个类都是“可执行的”。可以使用以下方法在给定文件中调用多个类实例:
if__name__=="__main__":forklassin[WebTask,WorkerTask]:klass().main()
debug
只需将每个类属性的值打印到控制台。如果您正在进行一些类继承,并希望在运行AWS之前验证所拥有的内容,那么非常有用。在
deploy
deploy
子命令接受一个附加参数image_tag
,该参数用于更新任务中具有{image_tag}
占位符的任何容器定义。它将:
- 注册新任务定义
- 运行任务(定义见
run_tasks
) - 更新服务(定义见
update_services
) - 更新事件目标(定义见
events__put_targets
) - 注销早于
active_task_count
的任何活动任务定义(默认情况下,10
)
rollback
- 注销最新的活动任务定义
- 使用以前的活动任务定义更新服务(如
update_services
中所定义) - 使用以前的活动任务定义更新事件目标(如
events__put_targets
中定义的那样)
- 项目
标签: