如何在 Amazon ECS 中建立和使用自訂 AMI?

上次更新日期:2022 年 4 月 15 日

我想要在 Amazon Elastic Container Service (Amazon ECS) 叢集中設定和使用以 CentOS、SUSE Enterprise Server 或 RHEL 為基礎的自訂 Amazon Machine Image (AMI)。

簡短描述

若要建立與 Amazon ECS 搭配使用的自訂 AMI,請執行以下操作:

  1. 建立 AMI。
  2. 為作業系統安裝 Docker。
  3. 安裝 ecs-init 套裝服務。
  4. 啟用 ECS 服務,並確認 ECS 容器代理程式處於作用中狀態。
  5. 清除映像以供日後使用。
  6. 建立新的 Amazon Elastic Compute Cloud (Amazon EC2) 映像。
  7. 啟動 Amazon ECS Linux 容器執行個體,並在執行該執行個體時新增所需的 UserData 以設定 ecs.config 檔案。

解決方案

建立 AMI

有三種選項可供建立 AMI:

安裝 Docker

若要為作業系統和系統架構安裝 Docker,請參閲安裝 Docker Engine

安裝 ecs-int 套裝服務

1.    通過執行以下命令之一,下載適用於 CentOSSUSE Enterprise ServerRHEL 的 Amazon ecs-int 套裝服務:

注意:請將 region 替換為執行個體啟動時所在的 AWS 區域。

若為 x86_64 CentOS 7 / 8SUSE Enterprise Server 15RHEL 7

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm

若為 aarch64 CentOS 7 / 8RHEL 7

$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm

2.    通過執行以下命令之一,安裝您為執行個體下載的 rpm 套裝服務:

若為 CentOS 7 / 8RHEL 7rpm 套裝服務:

$ sudo yum install -y ./amazon-ecs-init.rpm

若為 SUSE Enterprise Server 15rpm 套裝服務:

$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm

啟用 ECS 服務,並確認 ECS 容器代理程式處於作用中狀態

1.    若要啟用 ECS 服務,請執行以下命令:

$ sudo systemctl enable --now ecs

2.    通過執行以下命令,確認 ECS 服務已啟用,且 ECS 容器代理程式處於作用中狀態:

$ sudo systemctl status ecs

$ sudo docker ps

輸出看起來會類似下列內容:

ecs.service - Amazon Elastic Container Service - container agent
     Loaded: loaded (/lib/systemd/system/ecs.service; enabled; vendor preset: enabled)
     Active: active (running) since Tue 2022-02-22 08:39:02 UTC; 11min ago
CONTAINER ID   IMAGE                            COMMAND    CREATED         STATUS                   PORTS     NAMES
108cfb8a10d2   amazon/amazon-ecs-agent:latest   "/agent"   9 minutes ago   Up 9 minutes (healthy)             ecs-agent

清除映像

1.    若要清除映像以供日後使用,請通過執行以下命令停止 ecs-init 套裝服務和 Docker 程序:

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    從目前的執行個體中移除所有日誌檔案,以防止在儲存映像時保留下這些檔案。使用 EC2 Image Builder 的安全最佳實務中的指令碼範例來清除執行個體中的各種檔案。

3.    若要清除 ECS 的特定資料,請執行以下命令:

$ sudo rm -rf /var/log/ecs/*
$ sudo rm /var/lib/ecs/data/agent.db

建立新的 Amazon EC2 映像

通過執行以下命令,使用上一步所設定的映像來建立新的映像:

$ aws ec2 create-image --description "My ECS Image" --instance-id 
i-012345678910 --name Custom-ECS-Image --reboot

輸出類似於以下內容:

{
    "ImageId": "ami-01234567890101"
}

啟動執行個體

若要啟動執行個體,請參閲啟動 Amazon ECS Linux 容器執行個體

然後,使用您的新 AMI,通過執行以下命令確定 UserData 包含要寫入到 ecs.config 檔案的命令:注意:請將 your_cluster_name 替換為叢集的名稱。

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config

此文章是否有幫助?


您是否需要帳單或技術支援?