As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Tutorial: Ouvindo eventos do Amazon ECS CloudWatch
Neste tutorial, você configura uma AWS Lambda função simples que escuta eventos de tarefas do Amazon ECS e os grava em um stream de CloudWatch logs de registros.
Pré-requisito: configurar um cluster de teste
Caso você não tenha um cluster em execução para capturar eventos, siga as etapas em Criação de um cluster para o tipo de lançamento Fargate e External usando o console para criar um. Ao final deste tutorial, você executará uma tarefa nesse cluster para testar se configurou a função Lambda corretamente.
Etapa 1: Criar a função do Lambda
Neste procedimento, você criará uma função simples do Lambda para funcionar como um destino para mensagens da sequência de eventos do Amazon ECS.
Abra o console do AWS Lambda em https://console.aws.amazon.com/lambda/
. -
Escolha Create function.
-
Na tela Author from scratch, faça o seguinte:
-
Em Name (Nome), insira um valor.
-
Para Runtime (Tempo de execução), escolha sua versão do Python, por exemplo, Python 3.9.
-
Em Role (Função), escolha Create a new role with basic Lambda permissions (Criar uma nova função com permissões básicas do Lambda).
-
-
Escolha Criar função.
-
Na seção Function code, edite o código de exemplo de acordo com o exemplo a seguir.
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))
Essa é uma função simples do Python 3.9 que imprime o evento enviado pelo Amazon ECS. Se tudo estiver configurado corretamente, no final deste tutorial, você verá que os detalhes do evento aparecem no fluxo de log de CloudWatch registros associado a essa função Lambda.
-
Escolha Salvar.
Etapa 2: Registrar uma regra de evento
Em seguida, você cria uma regra de CloudWatch eventos de eventos que captura eventos de tarefas provenientes de seus clusters do Amazon ECS. Essa regra captura todos os eventos vindos de todos os clusters dentro da conta em que ela está definida. As próprias mensagens de tarefa contêm informações sobre a origem do evento, inclusive o cluster no qual reside, que você pode usar para filtrar e classificar eventos programaticamente.
nota
Quando você usa o AWS Management Console para criar uma regra de evento, o console adiciona automaticamente as permissões do IAM necessárias para conceder aos CloudWatch Eventos a permissão de chamar sua função Lambda. Caso esteja criando uma regra de evento usando a AWS CLI, você precisa conceder essa permissão explicitamente. Para obter mais informações, consulte Eventos e padrões de eventos no Guia do usuário de CloudWatch eventos da Amazon.
Para encaminhar eventos para a função Lambda
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, escolha Events (Eventos), Rules (Regras), Create rule (Criar regra).
-
Em Event Source, escolha ECS como origem do evento. Por padrão, a regra se aplica a todos os eventos do Amazon ECS para todos os grupos do Amazon ECS. Como alternativa, você pode selecionar eventos específicos ou um grupo específico do Amazon ECS.
-
Em Targets (Destinos), escolha Add target (Adicionar destino), em Target type (Tipo de destino), escolha Lambda function (Função Lambda) e, em seguida, selecione a função Lambda.
-
Escolha Configure details (Configurar detalhes).
-
Em Rule definition, digite um nome e uma descrição para a regra e escolha Create rule.
Etapa 3: Criar uma definição de tarefa
Crie uma definição de tarefa.
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
No painel de navegação, selecione Task Definitions (Definições de tarefas).
-
Escolha Create new Task Definition (Criar nova definição de tarefa), Create new revision with JSON (Criar nova revisão com JSON).
-
Copie e cole o exemplo de definição de tarefa a seguir na caixa e escolha Save (Salvar).
{ "containerDefinitions": [ { "entryPoint": [ "sh", "-c" ], "portMappings": [ { "hostPort": 80, "protocol": "tcp", "containerPort": 80 } ], "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\"" ], "cpu": 10, "memory": 300, "image": "httpd:2.4", "name": "simple-app" } ], "family": "console-sample-app-static" }
-
Escolha Create (Criar).
Etapa 4: testar a regra
Por fim, você cria uma regra de CloudWatch eventos de eventos que captura eventos de tarefas provenientes de seus clusters do Amazon ECS. Essa regra captura todos os eventos vindos de todos os clusters dentro da conta em que ela está definida. As próprias mensagens de tarefa contêm informações sobre a origem do evento, inclusive o cluster no qual reside, que você pode usar para filtrar e classificar eventos programaticamente.
Como testar sua regra
Abra o console em https://console.aws.amazon.com/ecs/v2
. -
Escolha Task definitions (Definições de tarefa).
-
Escolha e console-sample-app-static, em seguida, escolha Implantar, Executar nova tarefa.
-
Em Cluster, escolha default (padrão) e, em seguida, escolha Deploy (Implantar).
Abra o CloudWatch console em https://console.aws.amazon.com/cloudwatch/
. -
No painel de navegação, escolha Logs e selecione o grupo de logs para sua função Lambda (por exemplo, /aws/lambda/
my-function
). -
Selecione um fluxo de log para visualizar os dados do evento.