Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何在 Amazon ECS 中建立和使用自訂 AMI?
我想在 Amazon Elastic Container Service (Amazon ECS) 叢集中設定和使用以 CentOS、SUSE Enterprise Server 或以 RHEL 為基礎的自訂 Amazon Machine Image (AMI)。
簡短說明
若要建立自訂 AMI 以搭配 Amazon ECS 使用,請執行下列動作:
- 建立 AMI。
- 為作業系統安裝 Docker。
- 安裝 ecs-init 套件。
- (選用) 為 ECS 安裝 AWS Systems Manager Agent (SSM Agent)。
- 開啟 ECS 服務,然後確認 ECS 容器代理程式處於作用中狀態。
- 清理映像檔以備日後使用。
- 建立一個新的 Amazon Elastic Compute Cloud (Amazon EC2) 映像檔。
- 啟動 Amazon ECS Linux 容器執行個體,然後在執行執行個體時新增所需的 UserData 來設定 ecs.config 檔案。
解決方法
建立 AMI
建立 AMI 有三個選項:
- 若要建立以 Amazon Linux ECS 最佳化 AMI 為基礎的自訂 AMI,請使用 ECS 最佳化 AMI 建置方案搭配 HashiCorp 套件來建立映像檔。
- 使用 EC2 Image Builder 協助您建置和管理映像檔的維護作業。
- 啟動 Amazon EC2 執行個體,然後設定該執行個體以包含 ECS 所需的元件。若要建立具有內建 ECS 需求的 AMI,以及您想要 ECS AMI 以其為基礎的 AMI,請參閱如何從自訂 Amazon Machine Image (AMI) 啟動 EC2 執行個體?執行個體執行後,請參閱使用 SSH 用戶端連線到 Linux 執行個體。
安裝 Docker
若要為您的作業系統和系統架構安裝 Docker,請參閱 Docker 網站上的安裝 Docker Engine說明。
安裝 ecs-int 套件
1. 執行以下命令下載適用於 CentOS、SUSE Enterprise Server 或 RHEL 的 Amazon ecs-int 套件:
**注意:**將 region 替換為您啟動執行個體的 AWS 區域。
如果是 x86_64 CentOS 7 / 8、SUSE Enterprise Server 15 或 RHEL 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 / 8 或 RHEL 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 / 8 和 RHEL 7 的 rpm 套件:
$ sudo yum install -y ./amazon-ecs-init.rpm
如果是適用於 SUSE Enterprise Server 15 的 rpm 套件:
$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm
(選用) 為 ECS 安裝 SSM Agent
若要使用 Amazon ECS Exec 進行偵錯功能,您必須為 Amazon ECS 安裝 SSM Agent。
1. 執行以下命令下載並解壓縮 SSM Agent 二進位檔案:
$ mkdir -p ssm-binaries && cd ssm-binaries
2. 對 CentOS、SUSE Enterprise Server 或 RHEL,執行以下其中一個命令:
注意: 將 region 替換為您啟動執行個體的區域。
如果是 x86_64 CentOS 7 / 8、SUSE Enterprise Server 15 或 RHEL 7:
$ curl -o amazon-ssm-agent.tar.gz https://amazon-ssm-<region>.s3.<region>.amazonaws.com/latest/linux_amd64/amazon-ssm-agent-binaries.tar.gz
如果是 aarch64 CentOS 7/8 或 RHEL 7:
$ curl -o amazon-ssm-agent.tar.gz https://amazon-ssm-<region>.s3.<region>.amazonaws.com/latest/linux_arm64/amazon-ssm-agent-binaries.tar.gz
3. 執行以下命令來解壓縮代理程式檔案:
$ tar -xzvf amazon-ssm-agent.tar.gz
4. 取得 SSM Agent 版本,然後在 /var/lib/ecs/deps/execute-command/bin/ 下建立一個目錄。用 SSM Agent 版本號碼來為該目錄命名。以下是取得 SSM Agent 版本的命令範例:
$ ./amazon-ssm-agent -version SSM Agent version: 3.2.286.0 $ export SSM_VERSION=3.2.286.0 $ sudo mkdir -p /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION
5. 執行以下命令,將 SSM Agent 二進位檔案複製到目錄:
$ sudo cp amazon-ssm-agent /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/amazon-ssm-agent $ sudo cp ssm-agent-worker /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/ssm-agent-worker $ sudo cp ssm-session-worker /var/lib/ecs/deps/execute-command/bin/$SSM_VERSION/ssm-session-worker
6. 執行以下命令,複製 SSM Agent 的 TLS 憑證:
$ sudo mkdir -p /var/lib/ecs/deps/execute-command/certs $ sudo cp /etc/pki/ca-trust/extracted/pem/tls-ca-bundle.pem /var/lib/ecs/deps/execute-command/certs/tls-ca-bundle.pem $ sudo chmod 400 /var/lib/ecs/deps/execute-command/certs/tls-ca-bundle.pem
開啟 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
- 語言
- 中文 (繁體)

相關內容
- 已提問 2 年前
- 已提問 1 年前
- 已提問 1 年前