如何使用容器覆盖在 AWS ECS 上运行服务?

sti*_*ibi 7 amazon-web-services docker aws-sdk

在 AWS ECS 上,您可以运行任务或服务。

如果您使用 运行任务run_task(**kwargs),您可以选择覆盖某些任务选项,例如容器环境变量,这样您就可以配置容器内的事物,例如。那太棒了。

现在,我找不到一种方法来做同样的事情 create_service(**kwargs). 您只能指定一个任务,因此创建的容器以任务定义中指定的配置运行。没办法配置。

有没有办法修改服务中的任务,或者这在 AWS ECS 服务中是不可能的?

小智 1

这不可能。如果您考虑服务如何工作,它们会创建 X 个任务副本。任务的所有实例都具有相同的参数,因为目的是扩展任务 - 它们应该执行相同的工作。通常,流量是负载平衡的(服务配置的一部分),因此不希望用户由于最终完成配置不同的任务而在下次获得与上一次请求不同的响应。所以底线是——这是设计使然的。

由于参数是共享的,因此如果您需要更改参数,您可以创建任务的新定义,然后将其作为服务启动(或更新现有服务)。

如果您希望任务了解其他任务(从而表现不同),例如将数据写入分片存储的不同分片,则必须在任务的逻辑中实现它。

  • 我希望 AWS 重新考虑实施,因为:1)通常任务在开发阶段手动运行,并在稍后集成到服务中,因此保持定义相似是有意义的 2)每个 ECS 集群的独特任务定义使它们集成得太紧密,几乎无法重新构建可用的 (4认同)