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) para eventos de ciclo de vida, 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.
exemplo 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. Para obter uma função de exemplo que processa notificações de snapshot do Amazon EBS, consulte EventBridge Scheduler para Amazon EBS.
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)
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 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:
exemplo 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 da função.