¿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:

  1. Cree una AMI.
  2. Instale Docker en su sistema operativo.
  3. Instale el paquete ecs-init.
  4. Habilite el servicio ECS y confirme que el agente de contenedores de ECS esté activo.
  5. Limpie la imagen para usarla en el futuro.
  6. Cree una nueva imagen de Amazon Elastic Compute Cloud (EC2).
  7. 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:

Instalar Docker

Si desea instalar Docker para el sistema operativo y la arquitectura del sistema, consulte Instalar Docker Engine.

Instalar el paquete ecs-int

1.    Descargue el paquete ecs-int de Amazon para CentOS, SUSE Enterprise Server o RHEL mediante la ejecución de uno de los siguientes comandos:

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?