ecs动态环境管理器(eden)cli

aws-eden-cli的Python项目详细描述


aws eden cli:ecs动态环境管理器PyPi versiont

轻松克隆ECS环境。 为eden提供一个示例ecs服务,eden将对其进行克隆。

eden在cli和terraform模块(lambda和http api)中提供。 您可以在请求打开/关闭时使用来自您选择的ci的http api, 新的提交推动了环境创建的完全自动化。 有关api风格,请参见位于GitHub的eden api。

仅适用于Python3.6+。

用eden开发

simple-figure

要求:

  1. 使用下面描述的结构在s3 bucket中配置json文件
  2. 附加目标群的参考ECS服务
  3. 带有https侦听器的alb
    • 将由具有主机头侦听器规则的所有环境重用
  4. 简单的alb用法
    • 没有多路径规则等。
    • 每个ECS服务一个ALB

它的功能

创建/删除的资源

伊甸园创造

  1. ECS任务定义
    • 从引用服务克隆
  2. ALB(ELBV2)目标群
    • 从附加到引用服务的目标组克隆的设置
  3. ECS服务
    • 在与参考服务相同的群集中创建
  4. ALB侦听器规则
    • 主机头规则
  5. 路由53 CNAME记录
    • 指向公共alb
  6. 在配置json文件中添加一个条目

伊甸园删除资源,如上表所示,但顺序相反。

配置json文件

配置文件用于:

    检查哪些环境存在,它们的端点是
  1. 告诉客户端应用程序可用的内容

配置文件格式:

{"environments":[{"env":"dev","name":"dev-dynamic-test","api_endpoint":"api-test.dev.example.com"}]}

上面的例子假设config_update_key = api_endpoint。您可以多次使用多个lambdas/invoke eden cli和不同的更新密钥,以便在单个环境中拥有多个端点。

例如,您可能希望将api、管理工具和前端服务创建为单个环境。您的环境文件可能如下所示:

{"environments":[{"env":"dev","name":"dev-dynamic-test","api_endpoint":"api-test.dev.example.com","admin_endpoint":"admin-test.dev.example.com","frontend_endpoint":"test.dev.example.com"}]}

用法(cli接口)

安装

$ pip3 install aws-eden-cli 

$ eden -h
usage: eden [-h] [-p PROFILE] [-c CONFIG_PATH] [-v] {config,create,delete} ...

create similar ecs environments easily.

positional arguments:
  {config,create,delete}
    config              configure eden
    create              create environment or deploy to existent
    delete              delete environment

optional arguments:
  -h, --help            show this help message and exit
  -p PROFILE, --profile PROFILE
                        profile name in eden configuration file
  -c CONFIG_PATH, --config-path CONFIG_PATH
                        eden configuration file path
  -v, --verbose

配置

$ eden config --config-bucket-key endpoints.json
$ eden config --config-bucket-name servicename-config
$ eden config --config-update-key api_endpoint
$ eden config --config-name-prefix servicename-dev
$ eden config --domain-name-prefix api
$ eden config --dynamic-zone-id Zxxxxxxxxxxxx
$ eden config --dynamic-zone-name dev.example.com.
$ eden config --master-alb-arn arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:loadbalancer/app/dev-alb-api-dynamic/xxxxxxxxxx
$ eden config --name-prefix dev-dynamic
$ eden config --reference-service-arn arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:service/dev/dev01-api
$ eden config --target-cluster dev
$ eden config --target-container-name api

# you can also edit ~/.eden/config directly

$ cat ~/.eden/config
[default]
name_prefix = dev-dynamic
reference_service_arn = arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:service/dev/dev01-api
target_cluster = dev
domain_name_prefix = api
master_alb_arn = arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:loadbalancer/app/dev-alb-api-dynamic/xxxxxxxxxx
dynamic_zone_name = dev.example.com.
dynamic_zone_id = Zxxxxxxxxxxxx
config_bucket_name = servicename-config
config_bucket_key = endpoints.json
config_update_key = api_endpoint
config_env_type = dev
config_name_prefix = servicename-dev
target_container_name = api

# don't forget to check configuration file integrity

$ eden config --check
No errors found

# you can specify multiple profiles in configuration
# and select a profile with -p profile_name

$ eden config --check -p default
No errors found

执行命令

$ eden create --name test --cirn xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/servicename-api-dev:latest
Checking if image xxxxxxxxxxxx.dkr.ecr.ap-northeast-1.amazonaws.com/servicename-api-dev:latest exists
Image exists
Retrieved reference service arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:service/dev/dev01-api
Retrieved reference task definition from arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task-definition/dev01-api:15
Registered new task definition: arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task-definition/dev-dynamic-test:4
Registered new task definition: arn:aws:ecs:ap-northeast-1:xxxxxxxxxxxx:task-definition/dev-dynamic-test:4
Retrieved reference target group: arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/dev01-api/9c68a5f91f34d9a4
Existing target group dev-dynamic-test not found, will create new
Created target group arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/dev-dynamic-test/1c68c9e4c711a1f4
ELBv2 listener rule for target group arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/dev-dynamic-test/1c68c9e4c711a1f4 and host api-test.dev.example.com does not exist, will create new listener rule
ECS Service dev-dynamic-test does not exist, will create new service
Checking if record api-test.dev.example.com. exists in zone Zxxxxxxxxxxxx
Successfully created CNAME: api-test.dev.example.com -> dev-alb-api-dynamic-xxxxxxxxx.ap-northeast-1.elb.amazonaws.com
Updating config file s3://servicename-config/endpoints.json, environment dev-dynamic-test: api_endpoint -> api-test.dev.example.com
Existing environment not found, adding new
Successfully updated config file
Successfully finished creating environment dev-dynamic-test

$ eden delete --name test
Updating config file s3://servicename-config/endpoints.json, delete environment dev-dynamic-test: api_endpoint -> api-test.dev.example.com
Existing environment found, and the only optional key is api_endpoint,deleting environment
Successfully updated config file
Checking if record api-test.dev.example.com. exists in zone Zxxxxxxxxxxxx
Found existing record api-test.dev.example.com. in zone Zxxxxxxxxxxxx
Successfully removed CNAME record api-test.dev.example.com
ECS Service dev-dynamic-test exists, will delete
Successfully deleted service dev-dynamic-test from cluster dev
ELBv2 listener rule for target group arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/dev-dynamic-test/1c68c9e4c711a1f4 and host api-test.dev.example.com found, will delete
Deleted target group arn:aws:elasticloadbalancing:ap-northeast-1:xxxxxxxxxxxx:targetgroup/dev-dynamic-test/1c68c9e4c711a1f4
Deleted all task definitions for family: dev-dynamic-test, 1 tasks deleted total
Successfully finished deleting environment dev-dynamic-test

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

推荐PyPI第三方库


热门话题
关于如何将spring mvc重构为普通servlet或jetty处理程序的java建议   java循环和处理数据输入错误   使用java获取更改内容   java试图向一个数组中添加5张不同的“卡”,但它正在添加5张相同的卡   Java函数在Matlab类中变得未定义   多线程Java使用对象作为监视器,那个对象不是太重了吗?   将MySQL日期转换为Java日期:Android   java ResourceBundle在哪里。getBundle(“ResourceFile”,新语言环境(“us”,“us”))查找该文件?   java第一人称摄影机卷   如何在java中交替使用两个字符   addActionListener上下文中的java“this”   几天后,java Grails和Jasig CAS重定向循环   JavaAnt如何在javac中使用exclude、excludesfile?   java如何设置单行RecyclerView上的文本?