Salta al contenuto

Come posso creare e utilizzare AMI personalizzate in Amazon ECS?

5 minuti di lettura
0

Desidero configurare e utilizzare un Amazon Machine Image (AMI) personalizzato basato su CentOS, SUSE Enterprise Server o RHEL in un cluster Amazon Elastic Container Service (Amazon ECS).

Breve descrizione

Per creare un'AMI personalizzata da utilizzare con Amazon ECS, procedi come segue:

  1. Crea un'AMI.
  2. Installa Docker per il tuo sistema operativo.
  3. Installa il pacchetto ecs-init.
  4. (Facoltativo) Installa l'Agente AWS Systems Manager (Agente SSM) per ECS.
  5. Attiva il servizio ECS e verifica che l'agente del container ECS sia attivo.
  6. Pulisci l'immagine per un uso futuro.
  7. Crea una nuova immagine Amazon Elastic Compute Cloud (Amazon EC2).
  8. Avvia un'istanza di container Amazon ECS Linux, quindi aggiungi quanto necessario in UserData durante l'esecuzione dell'istanza per configurare il file ecs.config.

Risoluzione

Crea un'AMI

Un'AMI può essere creata in tre modi:

Installa Docker

Per installare Docker per il sistema operativo e l'architettura di sistema in uso, consulta le istruzioni in Install Docker Engine (Installazione di Docker Engine) sul sito web Docker.

Installa il pacchetto ecs-int

1.    Esegui questo comando per scaricare il pacchetto Amazon ecs-int per ** CentOS**, SUSE Enterprise Server o RHEL:

Nota: sostituisci region con la Regione AWS in cui hai avviato l'istanza.

Per CentOS 7/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

Per 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.    Esegui uno di questi comandi per installare il pacchetto rpm scaricato per l'istanza:

Per i pacchetti rpm per CentOS 7/8 e RHEL 7:

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

Per i pacchetti rpm per SUSE Enterprise Server 15:

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

(Facoltativo) Installa l'Agente SSM per ECS

Per utilizzare la funzionalità Amazon ECS Exec per il debugging, devi installare l'Agente SSM per Amazon ECS.

1.    Esegui questo comando per scaricare ed estrarre i file binari dell'Agente SSM:

$ mkdir -p ssm-binaries && cd ssm-binaries

2.    Esegui uno di questi comandi per CentOS, SUSE Enterprise Server o RHEL:

Nota: sostituisci region con la Regione in cui hai avviato l'istanza.

Per CentOS 7/8 x86_64, SUSE Enterprise Server 15 o 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

Per CentOS 7/8 aarch64 o 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.    Esegui questo comando per estrarre i file dell'agente:

$ tar -xzvf amazon-ssm-agent.tar.gz

4.    Ottieni la versione dell'Agente SSM, quindi crea una directory in /var/lib/ecs/deps/execute-command/bin/. Assegna un nome alla directory con la versione dell'Agente SSM. Di seguito è riportato un esempio di comando per ottenere la versione dell'Agente 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.    Esegui questi comandi per copiare i file binari dell'Agente SSM nella directory:

$ 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.    Esegui questo comando per copiare i certificati TLS per l'Agente 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

Attiva il servizio ECS e verifica che l'agente del container ECS sia attivo

1.    Per attivare il servizio ECS, esegui questo comando:

$ sudo systemctl enable --now ecs

2.    Esegui questo comando per verificare che il servizio ECS sia attivato e che l'agente del contenitore ECS sia attivo:

$ sudo systemctl status ecs

$ sudo docker ps

Gli output sono simili ai seguenti:

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

Pulisci l'immagine

1.    Per pulire l'immagine per un uso futuro, interrompi il pacchetto ecs-init e i processi Docker eseguendo questo comando:

$ sudo systemctl stop ecs
$ sudo systemctl stop docker
  1. Rimuovi tutti i file di registro dall'istanza corrente per impedirne la conservazione durante il salvataggio dell'immagine. Usa lo script di esempio in Security best practice per EC2 Image Builder per ripulire i vari file dall'istanza.

  2. Per ripulire i dati specifici di ECS, esegui i seguenti comandi:

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

Crea una nuova immagine Amazon EC2

Esegui questo comando per creare una nuova immagine utilizzando l'immagine configurata nel passaggio precedente:

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

L'output è simile al seguente:

{
    "ImageId": "ami-01234567890101"
}

Avvia un'istanza

Per avviare un'istanza, consulta Avvio di un'istanza di container Linux di Amazon ECS.

Con la nuova AMI, esegui questo comando per verificare che UserData contenga il comando per scrivere nel file ecs.config:

Nota: sostituisci ** il tuo_cluster_name** con il nome del tuo cluster.

#!/bin/bash
echo ECS_CLUSTER=your_cluster_name >> /etc/ecs/ecs.config
AWS UFFICIALEAggiornata 3 anni fa