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:
- Erstellen Sie ein AMI.
- Installieren Sie Docker für Ihr Betriebssystem.
- Installieren Sie das ecs-init-Paket.
- Aktivieren Sie den ECS-Service und bestätigen Sie, dass der ECS-Container-Agent aktiv ist.
- Bereinigen Sie das Image für die zukünftige Verwendung.
- Erstellen Sie ein neues Amazon Elastic Compute Cloud (Amazon EC2)-Image.
- 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:
- Um ein benutzerdefiniertes AMI basierend auf dem für Amazon Linux ECS optimierten AMI zu erstellen, verwenden Sie die ECS-optimierten AMI Build Recipes mit Hashicorp Packer, um das Image zu erstellen.
- Verwenden Sie den EC2 Image Builder-Dienst, um die Wartung Ihrer Images zu erstellen und zu verwalten.
- Starten Sie eine Amazon Elastic Compute Cloud (Amazon EC2)-Instance, und konfigurieren Sie dann die Instance so, dass sie die für ECS erforderlichen Komponenten enthält. Informationen zum Erstellen eines AMI mit integrierten ECS-Anforderungen und dem AMI, auf dem Ihr ECS-AMI basieren soll, finden Sie unter Wie starte ich eine EC2-Instance von einem benutzerdefinierten Amazon Machine Image (AMI) aus? Nachdem die Instance ausgeführt wurde, lesen Sie Verbinden mit Ihrer Linux-Instance mithilfe eines SSH-Clients.
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
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?