讓 EC2 加入 Cluster:安裝/啟動 ECS Agent(在 EC2 上操作)
我的主機是 Ubuntu 24.04。官方支援用 Docker 跑 ECS Agent;這對非 Amazon Linux 最直覺。
在 EC2(SSH 或 VSCode 終端)執行:
# 1) 準備 ECS 設定檔
sudo mkdir -p /etc/ecs
cat <<'EOF' | sudo tee /etc/ecs/ecs.config
ECS_CLUSTER=trade-cluster
ECS_AVAILABLE_LOGGING_DRIVERS=["json-file","awslogs"]
EOF
# 2) 準備 Agent 用的目錄
sudo mkdir -p /var/log/ecs /var/lib/ecs/data
# 3) 啟動 ECS Agent(使用 Docker)
sudo docker rm -f ecs-agent 2>/dev/null || true
sudo docker pull amazon/amazon-ecs-agent:latest
sudo docker run -d --name ecs-agent --restart=always \
--volume=/var/run:/var/run \
--volume=/var/log/ecs/:/log \
--volume=/var/lib/ecs/data:/data \
--net=host \
--env-file=/etc/ecs/ecs.config \
amazon/amazon-ecs-agent:latest
# 4) 快速檢查 agent 是否起來
sudo docker logs ecs-agent --tail 30
curl -s http://localhost:51678/v1/metadata || true
回到 ECS Console → Clusters → trade-cluster,應該能看到 1 個 Container instance(就是這台 EC2)。
若看不到,多半是 EC2 沒套用 TradeContainer
或 Cluster 名稱寫錯;再檢查一次上面的步驟與 Agent 日誌。
這邊也順便安裝一下AWS CLI,之後會用到。
sudo apt-get update && sudo apt-get install -y unzip
curl -fsSL https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip -o awscliv2.zip
unzip -q awscliv2.zip
sudo ./aws/install
aws --version # 確認有 v2.x
這樣EC2的環境就建好了,可以作為ECS掛載Docker Container的載體。
接下來方便測試,我會先用python寫一個hello world的flask web server程式,以及一個設置這隻程式所需環境的Dockerfile,透過AWS的ECS掛載到我的EC2 Instance上(設定Task Definition跟ECS的Service。