¿Cómo creo y uso AMI personalizadas en Amazon ECS?
Última actualización: 15-04-2022
Quiero configurar y utilizar una imagen de máquina de Amazon (AMI) personalizada basada en CentOS, SUSE Enterprise Server o RHEL en un clúster de Amazon Elastic Container Service (Amazon ECS).
Descripción corta
Si desea crear una AMI personalizada para usarla con Amazon ECS, haga lo siguiente:
- Cree una AMI.
- Instale Docker en su sistema operativo.
- Instale el paquete ecs-init.
- Habilite el servicio ECS y confirme que el agente de contenedores de ECS esté activo.
- Limpie la imagen para usarla en el futuro.
- Cree una nueva imagen de Amazon Elastic Compute Cloud (EC2).
- Lance una instancia de contenedor de Linux de Amazon ECS y agregue los UserData (datos de usuario) requeridos al ejecutar la instancia para configurar el archivo ecs.config.
Resolución
Crear una AMI
Hay tres opciones para crear una AMI:
- Para crear una AMI personalizada basada en la AMI optimizada para ECS de Amazon Linux, utilice las recetas de compilación de AMI optimizadas para ECS con Hashicorp Packer para crear la imagen.
- Utilice el servicio EC2 Image Builder para crear y gestionar el mantenimiento de sus imágenes.
- Lance una instancia de Amazon Elastic Compute Cloud (EC2) y, a continuación, configure la instancia para que incluya los componentes necesarios para ECS. Para crear una AMI con requisitos de ECS incorporados, y en la AMI en la que desea que se base la AMI de ECS, consulte ¿Cómo puedo lanzar una instancia de EC2 desde una imagen de máquina de Amazon (AMI) personalizada? Una vez que la instancia se esté ejecutando, consulte Conectarse a la instancia de Linux mediante un cliente SSH.
Instalar Docker
Si desea instalar Docker para el sistema operativo y la arquitectura del sistema, consulte Instalar Docker Engine.
Instalar el paquete ecs-int
Nota: reemplace la región por la región de AWS en la que lanzó la instancia.
Para CentOS 7 u 8 x86_64, SUSE Enterprise Server 15 o RHEL 7:
$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.x86_64.rpm
Para CentOS 7/8 aarch64 o RHEL 7:
$ curl -o amazon-ecs-init.rpm https://s3.<region>.amazonaws.com/amazon-ecs-agent-<region>/amazon-ecs-init-latest.aarch64.rpm
2. Instale el paquete rpm que descargó para su instancia mediante la ejecución de uno de los siguientes comandos:
Para paquetes rpm para CentOS 7/8 y RHEL 7:
$ sudo yum install -y ./amazon-ecs-init.rpm
Para paquetes rpm para SUSE Enterprise Server 15:
$ sudo zypper install -y --allow-unsigned-rpm ./amazon-ecs-init.rpm
Habilitar el servicio ECS y confirmar que el agente de contenedores de ECS esté activo
1. Para habilitar el servicio ECS, ejecute el siguiente comando:
$ sudo systemctl enable --now ecs
2. Confirme que el servicio ECS está habilitado y que el agente de contenedores de ECS está activo mediante la ejecución del siguiente comando:
$ sudo systemctl status ecs
$ sudo docker ps
El resultado debe ser similar al siguiente:
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
Limpiar la imagen
1. Para limpiar la imagen con el objetivo de usarla en el futuro, detenga el paquete ecs-init y los procesos de Docker mediante la ejecución de los siguientes comandos:
$ sudo systemctl stop ecs
$ sudo systemctl stop docker
2. Elimine todos los archivos de registro de la instancia actual para evitar que se conserven al guardar la imagen. Utilice el script de ejemplo que figura en Prácticas recomendadas de seguridad para EC2 Image Builder para limpiar los distintos archivos de la instancia.
3. Para limpiar los datos específicos de ECS, ejecute los siguientes comandos:
$ sudo rm -rf /var/log/ecs/*
$ sudo rm /var/lib/ecs/data/agent.db
Crear una nueva imagen de Amazon EC2
Use la imagen configurada del paso anterior para crear una nueva imagen mediante la ejecución del siguiente comando:
$ aws ec2 create-image --description "My ECS Image" --instance-id
i-012345678910 --name Custom-ECS-Image --reboot
La salida es similar a la siguiente:
{
"ImageId": "ami-01234567890101"
}
Lanzar una instancia
Para lanzar una instancia, consulte Lanzamiento de una instancia de contenedor de Linux de Amazon ECS.
A continuación, con la nueva AMI, asegúrese de que UserData contiene el comando para escribir en el archivo ecs.config mediante la ejecución del siguiente comando: Nota: reemplace your_cluster_name por el nombre del clúster.
#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
¿Le resultó útil este artículo?
¿Necesita asistencia técnica o con la facturación?