Menu
Amazon CloudWatch Events
User Guide

Tutorial: Log the State of an Auto Scaling Group Using CloudWatch Events

You can run an AWS Lambda function that logs an event whenever an Auto Scaling group launches or terminates an Amazon EC2 instance and whether the launch or terminate event was successful.

For additional CloudWatch Events scenarios using Auto Scaling events, see Getting CloudWatch Events When Your Auto Scaling Group Scales in the Auto Scaling User Guide.

Step 1: Create a Lambda Function

Create a Lambda function to log the scale out and scale in events for your Auto Scaling group. You'll specify this function when you create your rule.

To create a Lambda function

  1. Open the AWS Lambda console at https://console.aws.amazon.com/lambda/.

  2. If you are new to Lambda, you see a welcome page; choose Get Started Now; otherwise, choose Create a Lambda function.

  3. On the Select blueprint page, type hello for the filter, and then choose the hello-world blueprint.

  4. On the Configure triggers page, choose Next.

  5. On the Configure function page, do the following:

    1. Type a name and description for the Lambda function. (For example, name the function "LogAutoScalingEvent").

    2. Edit the sample code for the Lambda function. For example:

      Copy
      'use strict'; exports.handler = (event, context, callback) => { console.log('LogAutoScalingEvent'); console.log('Received event:', JSON.stringify(event, null, 2)); callback(null, 'Finished'); };
    3. For Role, choose Choose an existing role and then choose your basic execution role from Existing role. Otherwise, create a new basic execution role.

    4. Choose Next.

  6. Choose Create function.

Step 2: Create a Rule

Create a rule to run your Lambda function whenever your Auto Scaling group launches or terminates an instance.

To create a rule

  1. Open the CloudWatch console at https://console.aws.amazon.com/cloudwatch/.

  2. In the navigation pane, choose Events.

  3. Choose Create rule.

  4. For Event source, do the following:

    1. Choose Event Pattern.

    2. Choose Build event pattern to match events by service.

    3. Choose Auto Scaling and then choose Instance Launch and Terminate.

    4. Choose Any instance event to capture all successful and unsuccessful instance launch and terminate events.

    
                             The Event selector pane
  5. By default, the rule matches any Auto Scaling group in the region. To make the rule match a specific Auto Scaling group, choose Specific group name(s) and then choose one or more Auto Scaling groups.

  6. For Targets, choose Add target and then choose Lambda function.

  7. For Function, select the Lambda function that you created.

  8. Choose Configure details.

  9. For Rule definition, type a name and description for the rule. (For example, describe the rule as "Log whenever an Auto Scaling group scales out or in".)

  10. Choose Create rule.

Step 3: Test the Rule

You can test your rule by manually scaling an Auto Scaling group so that it launches an instance. After waiting a few minutes for the scale out event to occur, you can verify that your Lambda function was invoked.

To test your rule using an Auto Scaling group

  1. To increase the size of your Auto Scaling group, do the following:

    1. Open the Amazon EC2 console at https://console.aws.amazon.com/ec2/.

    2. On the navigation pane, choose Auto Scaling, Auto Scaling Groups.

    3. Select the checkbox for your Auto Scaling group.

    4. On the Details tab, choose Edit. For Desired, increase the desired capacity by one. For example, if the current value is 2, type 3. The desired capacity must be less than or equal to the maximum size of the group. Therefore, you must update Max if your new value for Desired is greater than Max. When you are finished, choose Save.

  2. Open the CloudWatch console at https://console.aws.amazon.com/cloudwatch/.

  3. To view metrics for the event, do the following:

    1. In the navigation pane, choose Events, Rules.

    2. Choose the name of the rule you created.

    3. Choose Show metrics for the rule.

  4. To view the output from your Lambda function, do the following:

    1. In the navigation pane, choose Logs.

    2. Choose the name of the log group for your Lambda function (/aws/lambda/function-name).

    3. Choose the name of log stream to view the data provided by the function for the instance you launched.

  5. (Optional) When you are finished, you can decrease the desired capacity by one so that the Auto Scaling group returns to its previous size.