Crear un evento programado de CloudWatch con datos arbitrarios en el campo "detalle"

Crear un evento programado de CloudWatch con datos arbitrarios en el campo "detalle"

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.CloudWatchEventme 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

información relacionada