我可以使用其他命令行参数从命令行启动 aws fargate 进程吗?

Posted

技术标签:

【中文标题】我可以使用其他命令行参数从命令行启动 aws fargate 进程吗?【英文标题】:Can I start an aws fargate process from the command-line with additional command-line arguments? 【发布时间】: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.

【问题讨论】:

【参考方案1】:

您可以使用aws ecs run-task 命令从命令行运行一个新容器。在overrides 参数中,您将传递一个command 值,它会覆盖容器启动时运行的命令。

ECS 容器覆盖记录在 here。

【讨论】:

您能描述一下网络配置选项的要求吗?我已将其添加到问题的末尾。 在文档中很清楚我链接了您需要为网络配置提供的内容。您必须至少指定 VPC 子网。 如何解决“调用RunTask操作时:集群中没有找到容器实例”错误信息? 您尚未指定 Fargate 部署,因此它正在寻找要部署到的 EC2 实例。您需要添加--launch-type FARGATE

以上是关于我可以使用其他命令行参数从命令行启动 aws fargate 进程吗?的主要内容,如果未能解决你的问题,请参考以下文章

从 OSGi 包访问命令行参数

如何从命令行向 AWS AppSync 发送 GraphQL 查询?

如何从命令行启动CouchDB

如何使用 UWP 应用程序的命令行参数启动 win32 exe?

如何从命令行使用多个 AWS 账户?

code.exe 忽略命令行参数