Comment créer et utiliser des AMI personnalisées dans Amazon ECS ?
Je souhaite 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 :
- Créez un ALB.
- Installez Docker pour votre système d'exploitation.
- Installez le package ecs-init.
- (Facultatif) Installez l'agent AWS Systems Manager (agent SSM) pour ECS.
- Activez le service ECS, puis confirmez que l'agent de conteneur ECS est actif.
- Nettoyez l'image pour une utilisation ultérieure.
- Créez une nouvelle image Amazon Elastic Compute Cloud (Amazon EC2).
- Lancez une instance de conteneur Linux Amazon ECS, puis ajoutez les données utilisateur requises lors de l'exécution de l'instance pour configurer le fichier ecs.config.
Résolution
Créer une AMI
Trois options s'offrent à vous pour créer une AMI :
- Pour créer une AMI personnalisée basée sur l'AMI optimisée pour Amazon Linux ECS, utilisez les recettes de construction d'AMI optimisées pour ECS avec le packer HashiCorp pour créer l'image.
- Utilisez EC2 Image Builder pour créer et gérer la maintenance de vos images.
- Lancez une instance Amazon EC2, puis configurez l'instance pour inclure les composants requis pour ECS. Pour créer une AMI avec des exigences ECS intégrées et sur l'AMI sur laquelle vous souhaitez que votre AMI ECS soit basée, consultez Comment lancer une instance EC2 à partir d'une Amazon Machine Image (AMI) personnalisée ? Une fois l'instance en cours d'exécution, consultez la section Se connecter à votre instance Linux à l'aide d'un client SSH.
Installez Docker
Pour installer Docker en fonction de votre système d'exploitation et de votre architecture système, consultez les instructions d'installation du moteur Docker sur le site Web de Docker.
Installation du package ecs-int
1. Exécutez la commande suivante pour télécharger le package Amazon ecs-int pour CentOS, SUSE Enterprise Server ou RHEL :
Remarque : Remplacez la région par la région AWS dans laquelle vous avez lancé l'instance.
Pour x86_64 CentOS 7 / 8, 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 aarch64 CentOS 7 / 8 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. Exécutez l'une des commandes suivantes pour installer le package rpm que vous avez téléchargé pour votre instance :
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
(Facultatif) Installation de l'agent SSM pour ECS
Pour utiliser la fonctionnalité de débogage d'Amazon ECS Exec, vous devez installer l'agent SSM pour Amazon ECS.
1. Exécutez la commande suivante pour télécharger et extraire les fichiers binaires de l'agent SSM :
$ mkdir -p ssm-binaries && cd ssm-binaries
2. Exécutez l'une des commandes suivantes pour CentOS, SUSE Enterprise Server ou RHEL :
Remarque : Remplacez la région par la région dans laquelle vous avez lancé l'instance.
Pour x86_64 CentOS 7 / 8, SUSE Enterprise Server 15 ou 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
Pour aarch64 CentOS 7 / 8 ou 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. Exécutez la commande suivante pour extraire les fichiers de l'agent :
$ tar -xzvf amazon-ssm-agent.tar.gz
4. Obtenez la version de l'agent SSM, puis créez un répertoire sous /var/lib/ecs/deps/execute-command/bin/. Nommez le répertoire avec la version de l'agent SSM. Voici un exemple de commande permettant d'obtenir la version de l'agent SSM :
$ ./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. Exécutez les commandes suivantes pour copier les fichiers binaires de l'agent SSM dans le répertoire :
$ 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. Exécutez la commande suivante pour copier les certificats TLS pour l'agent SSM :
$ 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
Activez le service ECS et confirmez que l'agent de conteneur ECS est actif
1. Pour activer le service ECS, exécutez la commande suivante :
$ sudo systemctl enable --now ecs
2. Exécutez la commande suivante pour vérifier que le service ECS est activé et que l'agent de conteneur ECS est actif :
$ sudo systemctl status ecs $ sudo docker ps
Les sorties 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
Nettoyez l'image
1. Pour nettoyer l'image en vue d'une utilisation ultérieure, exécutez la commande suivante pour arrêter le package ecs-init et les processus Docker :
$ 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 l'exemple de script de la section Meilleures pratiques de sécurité pour EC2 Image Builder afin de 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
Exécutez la commande suivante pour utiliser l'image configurée à l'étape précédente afin de créer une nouvelle image :
$ aws ec2 create-image --description "My ECS Image" --instance-id i-012345678910 --name Custom-ECS-Image --reboot
La sortie ressemble au message suivant :
{ "ImageId": "ami-01234567890101" }
Lancer une instance
Pour lancer une instance, consultez la section Lancement d'une instance de conteneur Amazon ECS Linux.
Avec votre nouvelle AMI, exécutez la commande suivante pour vérifier que UserData contient la commande à écrire dans le fichier ecs.config :
Remarque : Remplacez your_cluster_name par le nom de votre cluster.
#!/bin/bash echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
Contenus pertinents
- demandé il y a 3 moislg...
- demandé il y a 2 anslg...
- demandé il y a 20 jourslg...
- AWS OFFICIELA mis à jour il y a un an
- AWS OFFICIELA mis à jour il y a 8 mois
- AWS OFFICIELA mis à jour il y a 5 mois
- AWS OFFICIELA mis à jour il y a un an