Events

Amazon CloudWatch Events delivers a near real-time stream of system events that describe changes in Amazon Web Services (AWS) resources to AWS Lambda functions as well as trigger events on a pre-determined schedule .

Using simple rules that you can quickly set up, you can match events and route them to one or more target functions.

A full list of available events can be found here: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html

Anatomy of the integration

events:

  { INTEGRATION_NAME }:
    state: { STATE }
    description: { STRING }
    schedule_expression: { RATE }
    event_pattern: { MAP }
    targets:
      { TARGET_ID }:
        lambda: { LAMBDA_NAME }
        input: { INPUT }
        input_path: { INPUT_PATH }

Note

You need to specify either schedule_expression, event_pattern or both.

Properties

Integration Name

Name Key of the events map.
Required Yes
Valid types string
Max length 30
Description Name for your CLoudWatch integration.

State

Name state
Required No
Valid Values ENABLED, DISABLED
Description Enables or disables this integration

Schedule Expression

Name schedule_expression
Required No
Valid Types rate
Description Rate at which your lambda will be scheduled

All scheduled events use UTC time zone and the minimum precision for schedules is 1 minute. CloudWatch Events rates supports the following formats:

  • cron(<Fields>)
  • rate(<Value> <Unit>)

For more information about cron and rate: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/ScheduledEvents.html

Examples:

  • cron(0 10 * * ? *) Run at 10:00 am (UTC) every day.
  • cron(0 18 ? * MON-FRI *) Run at 06:00 pm (UTC) every Monday through Friday.
  • cron(0/15 * * * ? *) Run every 15 minutes.
  • rate(5 minutes) Every 5 minutes.
  • rate(1 hour) Every 1 hour.
  • rate(2 day) Every 2 day.

Event pattern

Name event_pattern
Required No
Valid Types map
Description Pattern structure which matches certain CloudWatch events you are interested in.

Rules use event patterns to select events and route them to targets. A pattern either matches an event or it doesn’t. Event patterns are represented as objects with a structure that is similar to that of events.

event_pattern:
    source:
        - aws.ec2
    detail:
        state:
            - pending

For more information about Events: http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/CloudWatchEventsandEventPatterns.html

Targets

Name targets
Required No
Valid Types map
Description Map of target lambdas to connect this event to, as well as optional input and input_path information.
targets:
  say_hello:
    lambda: helloworld.hellopy

say_hello:
  lambda: helloworld.hellopy
  input: xxx
  input_path: yyy

Full Example

events:
  every_night:
    schedule_expression: cron(0 0 * * ? *)
    description: Call example_lambda every midnight.
    state: ENABLED

    targets:
      say_hello:
        lambda: helloworld.hellopy  # Example lambda

  new_asg_instance:
    description: Do something when an autoscaling-group instance-launch happens
    state: ENABLED

    targets:
      say_hello:
        lambda: helloworld.hellopy  # Example lambda

    event_pattern:
        source:
            - aws.autoscaling
        detail:
            LifecycleTransition:
              - autoscaling:EC2_INSTANCE_LAUNCHING