帮助在AWS ECS上注册新的任务定义并更新相关服务。

ecs-task的Python项目详细描述


ecs-task

ecs-task是一个固执己见但灵活的工具,用于部署到Amazon Web Service's Elastic Container Service。在

它建在以下场所:

  • ECS服务、负载平衡器、自动伸缩等在其他地方进行管理,例如Terraform、Cloudformation等
  • 部署到ECS定义为:
    1. 使用新的图像标记更新任务定义
    2. [可选]运行任意数量的一次性任务,例如Django数据库迁移。在
    3. [可选]更新服务以使用新的任务定义。在
    4. [可选]更新Cloudwatch事件目标以使用新的任务定义。在
    5. 注销旧任务定义。在
  • 应用程序管理自己的任务/容器定义,可以将自己部署到预定义的ECS集群上。在
  • 回滚的能力很重要,应该尽可能简单。在

安装

pip install ecs-task

(可选地,只需将ecs_task.py复制到项目并安装boto3)。在

使用

这个模块由一个单独的类ecs_task.ECSTask组成,该类是为在项目中扩展而设计的。一个基本的例子:

^{pr2}$

您可以将其另存为_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才能执行任何操作。任何其他属性都是可选的。以下属性被设计成通过^{}与awsapi端点的1对1映射。您提供的值将作为关键字参数传递给插入了正确任务定义的关联方法。任何接受列表的属性都可以对给定的API进行多次调用。在

还有一些附加属性可用:

  • 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}占位符的任何容器定义。它将:

  1. 注册新任务定义
  2. 运行任务(定义见run_tasks
  3. 更新服务(定义见update_services
  4. 更新事件目标(定义见events__put_targets
  5. 注销早于active_task_count的任何活动任务定义(默认情况下,10

rollback

  1. 注销最新的活动任务定义
  2. 使用以前的活动任务定义更新服务(如update_services中所定义)
  3. 使用以前的活动任务定义更新事件目标(如events__put_targets中定义的那样)

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
netbeans根据命名约定返回布尔类的getter的Java名称   java如何在MessageFormat中使用单引号   java如何在整数数组中只对奇数排序,而将偶数保留在其原始位置?   自定义ArrayAdapter中未定义java构造函数   java joda时间格式化程序解析yyyyymmdd(额外一小时)   java Spring引导控制器测试始终返回404   java如何提取类文件以获取该类文件中的类?   JTable java列不会显示   java Selenium Web驱动程序输出错误的Web表行数   当应用程序在mac上打开时,java SWT选项卡项会从页面上消失   java如何将html文件映射到过滤器   swing Java计算一段时间内两点之间的转换   javawebsphere和javax。xml。ws。spi。提供者:提供者组织。阿帕奇。axis2。jaxws。spi。提供者不是子类型   For循环在Java中没有按预期继续?   java如何配置gson以排除0个整数值   java读取一个由tab分隔的文件,并将单词放入ArrayList中   java我需要做什么才能让LiveConnect重新工作?   sqlservermerge2xml&使用java提取这些数据并将其存储在db表中   java如何在模型中添加新对象时通知网格