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

时间:2016-03-22 08:36:48

标签: amazon-web-services docker aws-sdk

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

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

现在,我找不到如何使用create_service(**kwargs)执行相同操作的方法。您只能指定任务,因此创建的容器将按照任务定义中指定的配置运行。无法配置它。

有没有办法修改服务中的任务,或者AWS ECS服务无法实现这一点?

1 个答案:

答案 0 :(得分:1)

这是不可能的。如果您认为服务如何工作,他们会创建X个任务副本。任务的所有实例都具有相同的参数,因为目的是扩展任务 - 他们应该完成相同的工作。通常,流量是负载平衡的(服务配置的一部分),因此不希望用户在下一次获得与先前请求不同的响应,因为结束了不同配置的任务。所以底线是 - 这是设计的。

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

如果您希望任务知道其他任务(因此行为不同),例如将数据写入分片存储的不同分片,则必须在任务的逻辑中实现它。