Puede utilizar AWS Lambda para procesar eventos del ciclo de vida desde Amazon Elastic Compute Cloud y administrar los recursos de Amazon EC2. 2Amazon EC2 envía eventos a Amazon EventBridge (Eventos de CloudWatch) para eventos del ciclo de vida, como cuando una instancia cambia de estado, cuando se completa una instantánea de volumen de Amazon Elastic Block Store o cuando se programa que se termine una instancia de spot. Configura EventBridge (CloudWatch Events) para reenviar esos eventos a una función de Lambda para su procesamiento.
EventBridge (CloudWatch Events) invoca su función de Lambda de forma asíncrona con el documento de evento de Amazon EC2.
ejemplo Ciclo de vida de la instancia
{
"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 obtener detalles sobre la configuración de eventos, consulte Invocación de una función de Lambda según una programación. Para ver una función de ejemplo que procesa las notificaciones de instantáneas de Amazon EBS, consulte EventBridge Scheduler para Amazon EBS.
También puede utilizar AWS SDK para administrar instancias y otros recursos con la API de Amazon EC2.
Cómo otorgar permisos a EventBridge (Eventos de CloudWatch)
Para procesar eventos del ciclo de vida desde Amazon EC2, EventBridge (CloudWatch Events) necesita permiso para invocar su función. Este permiso proviene de la política basada en recursos de la función. Si utiliza la consola de EventBridge (CloudWatch Events) para configurar un desencadenador de eventos, la consola actualiza la política basada en recursos en su nombre. De lo contrario, agregue una declaración como la siguiente:
ejemplo Instrucción de una política basada en recursos para notificaciones del ciclo de vida de 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 agregar una instrucción, utilice el comando de la AWS CLI add-permission
.
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/*'
Si la función utiliza el AWS SDK para administrar recursos de Amazon EC2, agregue permisos de Amazon EC2 al rol de ejecución de la función.