Me gustaría ejecutar una tarea Lambda en un cronograma fijo, con alguna configuración transmitida por el evento programado de CloudWatch que activa la tarea. Mirando la documentaciónaquí, puedo ver que los eventos programados de Cloudwatch tienen este aspecto:
{
"id": "53dc4d37-cffa-4f76-80c9-8b7d4a4d2eaa",
"detail-type": "Scheduled Event",
"source": "aws.events",
"account": "123456789012",
"time": "2015-10-08T16:53:06Z",
"region": "us-east-1",
"resources": [ "arn:aws:events:us-east-1:123456789012:rule/MyScheduledRule" ],
"detail": {}
}
Mi tarea Lambda está escrita en Go y puedo ver que event.CloudWatchEvent
me permite acceder al JSON en el campo del evento detail
, pero no puedo entender cómo crear una regla de evento programado de Cloudwatch con algunos detalles personalizados. ¿Alguna idea?
Respuesta1
# This is for AWS Sam CF
MyScheduledRule:
Type: "AWS::Events::Rule"
Properties:
Description: "ScheduledRule"
ScheduleExpression: "rate(6 minutes)"
State: "ENABLED"
Targets:
- Arn:
!GetAtt MyLambdaFunction.Arn
Id: "IdForAlert"
Input: "{\"name\": \"value\"}"
Respuesta2
No es una respuesta perfecta, pero terminé comunicándome con la tarea Lambda usando env vars.
https://docs.aws.amazon.com/lambda/latest/dg/env_variables.html