如何在AWS Batch中将现有ECS群集设置为计算环境

时间:2017-06-06 12:13:23

标签: amazon-web-services cluster-computing solution amazon-ecs

我的环境中运行ECS cluster,并配置了任务,存储库和服务以及自动扩展。

我发现了AWS Batch服务,当我创建新的compute environment时,新的群集正在添加到ECS服务中。  我想知道如何将compute environment设置为我现有的群集?

2 个答案:

答案 0 :(得分:1)

我知道这是一个很老的问题,并且情况并非完全相同,但是我正在努力解决类似问题,因此这可能对某人有所帮助。在我的情况下,Batch覆盖了我的ECS_DISABLE_IMAGE_CLEANUP设置,导致我专用的超高优先级专用作业队列(及其计算环境)丢失了图像,从而在不得不再次拉出它们时造成了令人讨厌的延迟。

为了解决这个问题,我必须创建一个启动模板(在EC2控制台中),该模板的所有内容均设置为“请勿更改”,并带有一些额外的“用户数据”(在“高级”部分的末尾):< / p>

 MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="==MYBOUNDARY=="

--==MYBOUNDARY==
Content-Type: text/x-shellscript; charset="us-ascii"

#!/bin/bash
echo ECS_DISABLE_IMAGE_CLEANUP=true>>/etc/ecs/ecs.config 

--==MYBOUNDARY==--

然后,我必须重新创建计算环境才能使用此启动模板,这会导致这多余的行被添加到ecs.config文件中并覆盖“批处理”设置。也许它也适用于集群!

答案 1 :(得分:0)

据我所知(花了一半时间,学习文档和论坛),这是不可能的。 computeEnvironments的{​​{1}}在创建计算环境后立即分配,并且无法更改。

有趣的是Batch以某种方式在托管CE中新创建的实例上修改ecsClusterArn

/etc/ecs/ecs.config ,第一个... // config from my AMI ECS_CLUSTER=my_cluster_name ... // ECS_CLUSTER={ENVIRONMENT NAME HERE}_Batch_{RANDOM UUID HERE} ECS_DISABLE_IMAGE_CLEANUP=false ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION=2m ECS_IMAGE_CLEANUP_INTERVAL=10m ECS_IMAGE_MINIMUM_CLEANUP_AGE=10m ECS_NUM_IMAGES_DELETE_PER_CYCLE=5 ECS_RESERVED_MEMORY=32 ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"] 被擦除。这看起来像是一些预定义的ECS_CLUSTER,但我无法找到可以改变的地方。

但是,您可以通过反向方法实现原始目标 - 创建非托管 CE,并循环您希望在该CE中的实例,在{{1}中更改user-data } ECS_CLUSTER,重新启动/etc/ecs/ecs.config(或相关的docker,如果那不是Amazon Linux)。现在,您的容器属于另一个群集,只有区别在群集名称中。