相当于boto3中的AWS ECS cli命令



我正试图在python中移植一个ECS服务部署,目前该部署是用一堆包含以下命令的bash脚本完成的:

ecs-cli compose -f foo.yml -p foo --cluster bar --ecs-params "dir/ecs-params.yml" service up

我认为最简单/最快的方法可能是使用boto3(我已经在其他地方广泛使用了它,所以这是一个安全的地方(,但我从文档中不明白什么是以前编写的命令的等效指令。

提前谢谢。

更新:这是foo.yml:的内容

version: '3'
services:
my-service:
image: ecr-image:version
env_file:
- ./some_envs.env
- ./more_envs.env
command: python3 src/main.py param1 param2
logging:
driver: awslogs
options:
awslogs-group: /my-service-log-group
awslogs-region: my-region
awslogs-stream-prefix: my-prefix

UPDATE2:这是dir/ecs-params.yml:的内容

version: 1
task_definition:
task_role_arn: my-role
services:
my-service:
cpu_shares: my-cpu-shares
mem_reservation: my-mem-reservation

ecs-cli是一个高级构造,它创建了一个工作流,该工作流包装了许多较低级别的API调用。不一样,但您可以将ecs-cli compose-up命令视为部署foo.yml文件中包含的内容的触发器。根据foo.yml文件中的内容,您可以向后走,并尝试映射到单原子ECS API调用。

这些都不能回答您的问题,但作为背景,ecs-cli不再是我们建议在ECS上部署的。它的演变是Copilot(如果你不是从一个docker-compose故事开始的(,或者是新的docker-compose与ECS的集成(如果docker-compose是你的难题(。

如果您想要/可以发布foo.yml文件的内容,我可以尝试一下您需要进行多少次较低级别的API调用才能执行相同操作(或建议其他替代方法(。

[更新]根据你的两个文件的内容,你可以尝试这个docker组成的文件:

services:
my-service:
image: ecr-image:version
env_file:
- ./some_envs.env
- ./more_envs.env
x-aws-policies:
- <my-role>
deploy:
resources:
limits:
cpus: '0.5'
memory: 2048M

一些ECS参数被解释为不符合组成规范(例如资源限制(。其他一些没有特定的composeECS映射,因此它们通过x-aws扩展进行管理(例如IAM角色(。请注意,compose仅部署到Fargate,因此共享没有多大意义,您需要使用限制(以选择正确的Fargate任务大小(。提醒一下,这是将服务部署到ECS的另一种CLI方式,但它并不能解决如何将所有API调用转换为boto3的问题。

相关内容

  • 没有找到相关文章

最新更新