AWS Access Control Alerts with CloudWatch and CloudTrail

45 minutes
  • 2 Learning Objectives

About this Hands-on Lab

In this hands-on lab, we will create and configure a CloudTrail trail and a CloudWatch Logs log stream in order to set up monitoring and access alerts for an S3 bucket. Specifically, we’ll create the trail for monitoring access to the S3 bucket, the CloudWatch Logs log stream to allow searching and filtering of the logs, and then a CloudWatch metric filter and alarm on that metric filter to generate an alert whenever there is any access to an S3 bucket.

This will demonstrate how to build effective monitoring and alerting with specific AWS API calls.

Learning Objectives

Successfully complete this lab by achieving the following learning objectives:

Create a CloudTrail Trail

Create a CloudTrail trail in the AWS Console:

  1. Create an S3 bucket to monitor with CloudTrail.
  2. Create a CloudTrail trail in the CloudTrail Management Console.
  3. Turn off management events.
  4. Set up logging for the data events happening to the S3 bucket you created.
  5. Upload some data to the S3 bucket.
Create and Configure a CloudWatch Log Group and CloudWatch Alarm with Your CloudTrail Trail

After creating your CloudTrail trail, create a CloudWatch log group:

  1. Go to the CloudTrail Management Console.
  2. Select the CloudTrail trail you already created.
  3. Add a CloudWatch log group under the CloudWatch section.
  4. Test the CloudWatch log group by uploading and downloading files in the S3 bucket you created.
  5. Confirm that you see data coming in for the CloudWatch log group.
  6. Create a custom metric filter for the CloudWatch log group you created using the code provided for this lab.
  7. Create a CloudWatch alarm based on this custom metric.
  8. Verify your email for the CloudWatch alarm.
  9. Test the alarm by uploading and downloading objects in the S3 bucket that your CloudTrail trail monitors.

Additional Resources

Make sure you are using the us-east-1 (N. Virginia) region.

Here is the code required for this lab:

{ ($.eventSource = && (($.eventName = PutObject) || ($.eventName = GetObject)) }

What are Hands-on Labs

Hands-on Labs are real environments created by industry experts to help you learn. These environments help you gain knowledge and experience, practice without compromising your system, test without risk, destroy without fear, and let you learn from your mistakes. Hands-on Labs: practice your skills before delivering in the real world.

Sign In
Welcome Back!

Psst…this one if you’ve been moved to ACG!

Get Started
Who’s going to be learning?