【发布时间】:2022-01-22 23:51:09
【问题描述】:
我正在尝试将一些批处理从公司网络迁移到 AWS Fargate / ECS。
我现在正在处理的过程是一个容器化的 Python 程序,它接受一些命令行参数。目前它是由詹金斯触发的。有一个作业定义调用同一个容器大约 50 次,每次的参数略有不同。当所有这些作业都执行完毕后,批处理就“完成”了。
目前,所有这些作业都在公司内部服务器上执行,速度有点慢。我希望所有的执行都在 AWS Fargate 上进行。
我已经为我的项目构建了一个托管在 ECR 上的映像,并且我已经能够通过创建任务定义然后将该任务添加到集群中的服务来运行该映像。
到目前为止,一切似乎都运行良好,性能比在公司铁上运行要好得多。
接下来我想做的是从 AWS cli-tool 运行该任务,但这次指定一些命令行参数。可以这样做吗?有没有办法说 - “请运行此任务定义,但改用这些命令行参数?”
我注意到有一个名为“ecs start-task”的 aws 命令,但这需要容器 ID。我不确定在哪里可以找到这些信息。启动任务是我运行先前定义的任务定义所需要的吗?
另外,由于我想用它来代替现有进程,有没有办法让我的 AWS CLI 命令阻塞,直到远程执行任务完成?
编辑 1:
我正在尝试“run-task”命令,但文档并不清楚我需要为网络配置提供什么值?这只是一个批处理,因此根本不需要接受任何入站连接。它将连接到其他一些数据库:
>aws ecs run-task --task-definition fv-scf-0 --cluster fv-sal
An error occurred (InvalidParameterException) when calling the RunTask operation: Network Configuration must be provided when networkMode 'awsvpc' is specified.
编辑 2:
我想我已经弄清楚网络配置需要什么,但现在我该如何克服下一个错误?
>aws ecs run-task --task-definition fv-scf-0 --cluster fv-sal --network-configuration "awsvpcConfiguration={subnets=[subnet-x,subnet-y
5],securityGroups=[sg-z]}"
An error occurred (InvalidParameterException) when calling the RunTask operation: No Container Instances were found in your cluster.
【问题讨论】:
标签: amazon-web-services amazon-ecs aws-cli fargate