Comment créer et utiliser des AMI personnalisées dans Amazon ECS ?

Date de la dernière mise à jour : 15/04/2022

Je veux configurer et utiliser une Amazon Machine Image (AMI) personnalisée basée sur CentOS, SUSE Enterprise Server ou RHEL dans un cluster Amazon Elastic Container Service (Amazon ECS).

Brève description

Pour créer une AMI personnalisée à utiliser avec Amazon ECS, procédez comme suit :

  1. Créez une AMI.
  2. Installez Docker pour votre système d'exploitation.
  3. Installez le package ecs-init.
  4. Activez le service ECS et confirmez que l'agent de conteneur ECS est actif.
  5. Nettoyez l'image pour une utilisation future.
  6. Créez une nouvelle image Amazon Elastic Compute Cloud (Amazon EC2).
  7. Lancez une instance de conteneur Amazon ECS Linux et ajoutez la UserData requise lors de l'exécution de l'instance pour configurer le fichier ecs.config.

Solution

Création d'une AMI

Il existe trois options pour la création d'une AMI :

Installation de Docker

Pour installer Docker pour votre système d'exploitation et votre architecture système, consultez Installation du moteur Docker.

Installation du package ecs-int

1.    Téléchargez le package Amazon ecs-int pour CentOS, SUSE Enterprise Server ou RHEL en exécutant l'une des commandes suivantes :

Remarque : remplacez region par la région AWS dans laquelle vous avez lancé l'instance.

Pour CentOS 7/8 x86_64, SUSE Enterprise Server 15 ou RHEL 7 :

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

Pour CentOS 7/8 aarch64 ou RHEL 7 :

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

2.    Installez le package rpm que vous avez téléchargé pour votre instance en exécutant l'une des commandes suivantes :

Pour les packages rpm pour CentOS 7/8 et RHEL 7 :

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

Pour les packages rpm pour SUSE Enterprise Server 15 :

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

Activation du service ECS et confirmation de l'activation de l'agent de conteneur ECS

1.    Pour activer le service ECS, exécutez la commande suivante :

$ sudo systemctl enable --now ecs

2.    Confirmez que le service ECS est activé et que l'agent de conteneur ECS est actif en exécutant la commande suivante :

$ sudo systemctl status ecs

$ sudo docker ps

Les résultats ressemblent à ce qui suit :

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

Nettoyage de l'image

1.    Pour nettoyer l'image en vue d'une utilisation future, arrêtez le package ecs-init et les processus Docker en exécutant les commandes suivantes :

$ sudo systemctl stop ecs
$ sudo systemctl stop docker

2.    Supprimez tous les fichiers journaux de l'instance actuelle pour éviter de les conserver lors de l'enregistrement de l'image. Utilisez le script d'exemple dans Bonnes pratiques de sécurité pour EC2 Image Builder pour nettoyer les différents fichiers de l'instance.

3.    Pour nettoyer les données spécifiques à ECS, exécutez les commandes suivantes :

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

Création d'une nouvelle image Amazon EC2

Utilisez votre image configurée à l'étape précédente pour créer une nouvelle image en exécutant la commande suivante :

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

Le résultat est similaire à ce qui suit :

{
    "ImageId": "ami-01234567890101"
}

Lancement d'une instance

Pour lancer une instance, consultez Lancement d'une instance de conteneur Linux Amazon ECS.

Ensuite, en utilisant votre nouvelle AMI, assurez-vous que UserData contient la commande pour écrire dans le fichier ecs.config en exécutant la commande suivante : Remarque : remplacez your_cluster_name par le nom de votre cluster.

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

Cet article vous a-t-il été utile ?


Avez-vous besoin d'aide pour une question technique ou de facturation ?