

# Processar eventos do ciclo de vida do Amazon EC2 com uma função do Lambda
<a name="services-ec2"></a>

Você pode usar o AWS Lambda para processar eventos de ciclo de vida do Amazon Elastic Compute Cloud e gerenciar recursos do Amazon EC2. O Amazon EC2 envia eventos ao [Amazon EventBridge (CloudWatch Events)](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html) para [eventos de ciclo de vida](https://docs.aws.amazon.com/autoscaling/ec2/userguide/ec2-auto-scaling-lifecycle.html), como quando uma instância muda de estado, quando o snapshot de um volume do Amazon Elastic Block Store é concluído ou quando uma instância spot está agendada para ser terminada. Configure o EventBridge (CloudWatch Events) para encaminhar esses eventos para uma função do Lambda para processamento.

O EventBridge (CloudWatch Events) invoca sua função do Lambda de forma assíncrona com o documento de evento no Amazon EC2.

**Example evento do ciclo de vida da instância**  

```
{
    "version": "0",
    "id": "b6ba298a-7732-2226-xmpl-976312c1a050",
    "detail-type": "EC2 Instance State-change Notification",
    "source": "aws.ec2",
    "account": "111122223333",
    "time": "2019-10-02T17:59:30Z",
    "region": "us-east-1",
    "resources": [
        "arn:aws:ec2:us-east-1:111122223333:instance/i-0c314xmplcd5b8173"
    ],
    "detail": {
        "instance-id": "i-0c314xmplcd5b8173",
        "state": "running"
    }
}
```

Para obter detalhes sobre como configurar eventos, consulte [Invocar uma função do Lambda segundo uma agenda](with-eventbridge-scheduler.md). Para obter uma função de exemplo que processa notificações de snapshot do Amazon EBS, consulte [EventBridge Scheduler para Amazon EBS](https://docs.aws.amazon.com/ebs/latest/userguide/ebs-cloud-watch-events.html).

Você também pode usar o AWS SDK para gerenciar instâncias e outros recursos com a API do Amazon EC2. 

## Conceder permissões ao EventBridge (CloudWatch Events)
<a name="services-ec2-permissions"></a>

Para processar eventos de ciclo de vida do Amazon EC2, o EventBridge (CloudWatch Events) precisa de permissão para invocar sua função. Essa permissão vem da [política baseada em recursos](access-control-resource-based.md) da função. Se você usar o console do EventBridge (CloudWatch Events) para configurar um acionador de evento, o console atualizará a política baseada em recursos em seu nome. Caso contrário, adicione uma instrução como a seguinte:

**Example instrução de política baseada em recursos para notificações de ciclo de vida do Amazon EC2**  

```
{
  "Sid": "ec2-events",
  "Effect": "Allow",
  "Principal": {
    "Service": "events.amazonaws.com"
  },
  "Action": "lambda:InvokeFunction",
  "Resource": "arn:aws:lambda:us-east-1:12456789012:function:my-function",
  "Condition": {
    "ArnLike": {
      "AWS:SourceArn": "arn:aws:events:us-east-1:12456789012:rule/*"
    }
  }
}
```

Para adicionar uma instrução, use o comando `add-permission` da AWS CLI.

```
aws lambda add-permission --action lambda:InvokeFunction --statement-id ec2-events \
--principal events.amazonaws.com --function-name {{my-function}} --source-arn 'arn:aws:events:us-east-1:{{12456789012}}:rule/*'
```

Se sua função usar o AWS SDK para gerenciar recursos do Amazon EC2, adicione permissões do Amazon EC2 à [função de execução](lambda-intro-execution-role.md) da função.