我有一个在AWS中定义的ECS集群和一个Auto Scaling组,用于添加/删除实例以根据需要处理任务。我具有ASG设置,因此可以在适当的时间创建EC2实例,但是除非手动进入并禁用/启用ECS服务,否则它将无法连接到ECS群集。
我在EC2机器上使用Amazon Linux 2 ami,并且所有内容都在同一地区/帐户中,等等。 我已在下面添加了我的用户数据。
#!/bin/bash
yum update -y
amazon-linux-extras disable docker
amazon-linux-extras install -y ecs
echo "ECS_CLUSTER={CLUSTERNAME}" >> /etc/ecs/ecs.config
systemctl enable --now ecs
如上所述,这将安装ECS服务并正确设置配置文件,但是启用实际上并没有连接计算机,但是一旦运行连接,在计算机上运行相同的禁用/启用命令就不会出现问题。我想念什么?
第一件事,正确的语法是
#!/usr/bin/env bash
echo "ECS_CLUSTER=CLUSTER_NAMe" >> /etc/ecs/ecs.config
一旦您更好地更新配置以重新启动ECS代理。
#!/usr/bin/env bash
echo "ECS_CLUSTER=CLUSTER_NAME" >> /etc/ecs/ecs.config
sudo yum update -y ecs-init
#this will update ECS agent, better when using custom AMI
/usr/bin/docker pull amazon/amazon-ecs-agent:latest
#Restart docker and ECS agent
sudo service docker restart
sudo start ecs
我最终用古老的格言解决了这个问题,关掉它再打开。
例如我在用户数据脚本的底部添加了 shutdown -r 0
以在“配置”并立即连接后重新启动机器。