帮助在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第三方库


热门话题
Android上已连接音频输入设备的java列表   java是创建类的新对象还是使用静态方法?   Java:Shift/Rotate对象数组   Java Casting ArrayIterator<Object>   在java中返回布尔值时出错   无法确定文本文件读入程序(java)中的各种元素   Java Swing JToolBar   JAVAlang.IllegalStateException执行Ghost4J(Linux 32对64位)   jvm如何增加ubuntu系统的java堆化?   java CORS策略“AccessControlAllowOrigin”(Anguar 8和Servlet)   使用dagger 2的java视图依赖项注入   单元测试中RxJava的java模拟活动生命周期   arraylist中的Java打印字符串   java返回值显示为0.0。为什么会这样?   java是clientserver应用程序所必需的MVC吗?   ByteToMessageDecoder类中的java内存泄漏   java将大量文档写入firestore   GWT项目中的java TomcatMaven插件。两者之间的区别是什么:org。科德豪斯。魔咒和组织。阿帕奇。公猫maven插件   java swing:向JTree项添加自定义图形按钮