Wie erstelle und verwende ich benutzerdefinierte AMIs in Amazon ECS?

Letzte Aktualisierung: 15.04.2022

Ich möchte ein CentOS, SUSE Enterprise Server oder RHEL-basiertes benutzerdefiniertes Amazon Machine Image (AMI) in einem Amazon Elastic Container Service (Amazon ECS)-Cluster einrichten und verwenden.

Kurzbeschreibung

Gehen Sie wie folgt vor, um ein benutzerdefiniertes AMI für die Verwendung mit Amazon ECS zu erstellen:

  1. Erstellen Sie ein AMI.
  2. Installieren Sie Docker für Ihr Betriebssystem.
  3. Installieren Sie das ecs-init-Paket.
  4. Aktivieren Sie den ECS-Service und bestätigen Sie, dass der ECS-Container-Agent aktiv ist.
  5. Bereinigen Sie das Image für die zukünftige Verwendung.
  6. Erstellen Sie ein neues Amazon Elastic Compute Cloud (Amazon EC2)-Image.
  7. Starten Sie eine Amazon ECS Linux-Container-Instance und fügen Sie beim Ausführen der Instance die erforderlichen UserData hinzu, um die Datei ecs.config zu konfigurieren.

Lösung

Erstellen Sie ein AMI

Es gibt drei Möglichkeiten, ein AMI zu erstellen:

Installieren Sie Docker

Informationen zur Installation von Docker für Ihr Betriebssystem und Ihre Systemarchitektur finden Sie unter Installieren der Docker Engine.

Installieren Sie das ecs-int-Paket

1.    Laden Sie das Amazon ecs-int-Paket für CentOS, SUSE Enterprise Server oder RHEL herunter, indem Sie einen der folgenden Befehle ausführen:

Hinweis: Ersetzen Sie die Region durch die AWS-Region, in der Sie die Instance gestartet haben.

Für x86_64 CentOS 7 / 8, SUSE Enterprise Server 15 oder RHEL 7:

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

Für aarch64 CentOS 7 / 8 oder RHEL 7:

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

2.    Installieren Sie das RPM-Paket, das Sie für Ihre Instance heruntergeladen haben, indem Sie einen der folgenden Befehle ausführen:

Für RPM-Pakete für CentOS 7 / 8 und RHEL 7:

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

Für RPM-Pakete für SUSE Enterprise Server 15:

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

Den ECS-Service aktivieren und bestätigen, dass der ECS-Container-Agent aktiv ist

1.    Führen Sie den folgenden Befehl aus, um den ECS-Dienst zu aktivieren:

$ sudo systemctl enable --now ecs

2.    Vergewissern Sie sich, dass der ECS-Service aktiviert und der ECS-Container-Agent aktiv ist, indem Sie den folgenden Befehl ausführen:

$ sudo systemctl status ecs

$ sudo docker ps

Die Ausgabe könnte so aussehen:

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

Bereinigen Sie das Image

1.    Um das Image für die zukünftige Verwendung zu bereinigen, beenden Sie das ecs-init-Paket und die Docker-Prozesse, indem Sie die folgenden Befehle ausführen:

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    Entfernen Sie alle Protokolldateien aus der aktuellen Instanz, um zu verhindern, dass sie beim Speichern des Images erhalten bleiben. Verwenden Sie das Beispielskript in Bewährte Sicherheitsmethoden für EC2 Image Builder, um die verschiedenen Dateien aus der Instanz zu bereinigen.

3.    Führen Sie die folgenden Befehle aus, um die ECS-spezifischen Daten zu bereinigen:

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

Erstellen Sie ein neues Amazon EC2-Image

Verwenden Sie das konfigurierte Image aus dem vorherigen Schritt, um ein neues Image zu erstellen, indem Sie den folgenden Befehl ausführen:

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

Die Ausgabe sieht ähnlich aus wie die folgende:

{
    "ImageId": "ami-01234567890101"
}

Starten Sie eine Instance

Um eine Instance zu starten, siehe Starten einer Amazon ECS Linux-Container-Instance.

Stellen Sie dann mit Ihrem neuen AMI sicher, dass UserData den Befehl zum Schreiben in die Datei ecs.config enthält, indem Sie den folgenden Befehl ausführen: Hinweis: Ersetzen Sie your_cluster_name durch den Namen Ihres Clusters.

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

War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?