Configurazione di Amazon ECS per CloudWatch ascoltare gli eventi Events - Amazon Elastic Container Service

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Configurazione di Amazon ECS per CloudWatch ascoltare gli eventi Events

Scopri come configurare una semplice funzione Lambda che ascolta gli eventi delle attività e li scrive in un flusso di log di CloudWatch Logs.

Prerequisito: configurazione di un cluster di verifica

Se non disponi di un cluster in esecuzione da cui acquisire eventi, segui la procedura descritta in Creazione di un cluster Amazon ECS per il tipo di lancio Fargate per crearne uno. Al termine del tutorial, potrai eseguire un processo su questo cluster per verificare la corretta configurazione della funzione Lambda.

Fase 1: Creazione della funzione Lambda

In questa procedura, viene creata una funzione Lambda semplice che funge da destinazione per i messaggi del flusso di eventi di Amazon ECS.

  1. Apri la console all' AWS Lambda indirizzo. https://console.aws.amazon.com/lambda/

  2. Scegli Crea funzione.

  3. In Author from scratch (Crea da zero) effettua le seguenti operazioni:

    1. In Name (Nome), immetti un valore.

    2. In Runtime, scegli la versione di Python, ad esempio, Python 3.9.

    3. In Role (Ruolo), scegliere Create a new role with basic Lambda permissions (Crea un nuovo ruolo con le autorizzazioni Lambda di base).

  4. Scegli Crea funzione.

  5. Nella sezione Function code (Codice della funzione), modifica il codice di esempio affinché corrisponda all'esempio seguente:

    import json def lambda_handler(event, context): if event["source"] != "aws.ecs": raise ValueError("Function only supports input from events with a source type of: aws.ecs") print('Here is the event:') print(json.dumps(event))

    Si tratta di una funzione Python 3.9 semplice che stampa l'evento inviato da Amazon ECS. Se tutto è configurato correttamente, alla fine di questo tutorial, vedrai che i dettagli dell'evento vengono visualizzati nel flusso di log CloudWatch Logs associato a questa funzione Lambda.

  6. Scegli Save (Salva).

Fase 2: Registrazione di una regola di evento

Successivamente, crei una regola CloudWatch degli eventi che acquisisce gli eventi delle attività provenienti dai tuoi cluster Amazon ECS. Questa regola acquisisce tutti gli eventi provenienti da tutti i cluster all'interno dell'account in cui è definita. Gli stessi messaggi di attività contengono informazioni sull'origine dell'evento, tra cui il cluster in cui esso risiede, utilizzabile per filtrare e ordinare gli eventi in modo programmatico.

Nota

Quando usi AWS Management Console per creare una regola di evento, la console aggiunge automaticamente le autorizzazioni IAM necessarie per concedere a CloudWatch Events l'autorizzazione a chiamare la tua funzione Lambda. Se stai creando una regola di evento utilizzando il AWS CLI, devi concedere questa autorizzazione in modo esplicito. Per ulteriori informazioni, consulta Events in Amazon EventBridge e Amazon EventBridge Event Patterns nella Amazon EventBridge User Guide.

Come instradare gli eventi alla funzione Lambda
  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel pannello di navigazione, selezionare prima Events (Eventi), quindi Rules (Regole) e infine Create rule (Crea regola).

  3. In Event Source (Origine eventi), scegli ECS come origine evento. Di default, questa regola si applica a tutti gli eventi di Amazon ECS per tutti i gruppi Amazon ECS. In alternativa, puoi selezionare eventi specifici o un gruppo specifico di Amazon ECS.

  4. In Targets (Destinazioni), scegli Add target (Aggiungi destinazione), in Target type (Tipo di destinazione) scegli Lambda function (Funzione Lambda) quindi seleziona la tua funzione Lambda.

  5. Scegli Configura dettagli.

  6. In Rule definition (Definizione regola), digita un nome e una descrizione per la regola, quindi seleziona Create rule (Crea regola).

Fase 3: creazione di una definizione di attività

Crea una definizione di attività.

  1. Apri la console nella https://console.aws.amazon.com/ecs/versione 2.

  2. Nel riquadro di navigazione, scegli Definizioni di attività.

  3. Scegli Create new Task Definition (Crea nuova definizione di attività), Create new revision with JSON (Crea nuova revisione con JSON).

  4. Copia e incolla la seguente definizione di attività di esempio nella casella, quindi scegli Save (Salva).

    { "containerDefinitions": [ { "command": [ "/bin/sh -c \"echo '<html> <head> <title>Amazon ECS Sample App</title> <style>body {margin-top: 40px; background-color: #333;} </style> </head><body> <div style=color:white;text-align:center> <h1>Amazon ECS Sample App</h1> <h2>Congratulations!</h2> <p>Your application is now running on a container in Amazon ECS.</p> </div></body></html>' > /usr/local/apache2/htdocs/index.html && httpd-foreground\"" ], "entryPoint": [ "sh", "-c" ], "essential": true, "image": "public.ecr.aws/docker/library/httpd:2.4", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group" : "/ecs/fargate-task-definition", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "ecs" } }, "name": "sample-fargate-app", "portMappings": [ { "containerPort": 80, "hostPort": 80, "protocol": "tcp" } ] } ], "cpu": "256", "executionRoleArn": "arn:aws:iam::012345678910:role/ecsTaskExecutionRole", "family": "fargate-task-definition", "memory": "512", "networkMode": "awsvpc", "runtimePlatform": { "operatingSystemFamily": "LINUX" }, "requiresCompatibilities": [ "FARGATE" ] }
  5. Scegli Create (Crea).

Fase 4: Test della regola

Infine, crei una regola CloudWatch degli eventi che acquisisce gli eventi delle attività provenienti dai tuoi cluster Amazon ECS. Questa regola acquisisce tutti gli eventi provenienti da tutti i cluster all'interno dell'account in cui è definita. Gli stessi messaggi di attività contengono informazioni sull'origine dell'evento, tra cui il cluster in cui esso risiede, utilizzabile per filtrare e ordinare gli eventi in modo programmatico.

Per testare la regola
  1. Apri la console nella versione 2. https://console.aws.amazon.com/ecs/

  2. Scegli Task definitions (Definizioni di attività).

  3. Scegli console-sample-app-static, quindi scegli Distribuisci, Esegui nuova attività.

  4. Per Cluster, scegli l'impostazione predefinita, quindi scegli Deploy (Implementa).

  5. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  6. Nel pannello di navigazione, scegli Logs e seleziona il gruppo di log per la tua funzione Lambda (ad esempio, my-function /aws/lambda/).

  7. Seleziona un flusso di log per visualizzare i dati di evento.