我的环境中运行ECS cluster
,并配置了任务,存储库和服务以及自动扩展。
我发现了AWS Batch
服务,当我创建新的compute environment
时,新的群集正在添加到ECS
服务中。
我想知道如何将compute environment
设置为我现有的群集?
答案 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)。现在,您的容器属于另一个群集,只有区别在群集名称中。