Setting up CloudWatch Event Rule for AWS CodePipeline Failures

Notification for CodePipeline Stage Failures

Prev Question Next Question

Question

Your team creates a new pipeline called myPipeline via AWS CodePipeline service.

The pipeline includes several stages such as Source, Build, Test and Deploy.

When the pipeline is executed, it may fail at a certain stage.

You need to set up a CloudWatch Event rule to notify the DevOps team immediately whenever a pipeline stage has a failure.

You have customized an event pattern in CloudWatch Event to match the CodePipeline events.

Which of the following event patterns is the most appropriate?

Answers

Explanations

Click on the arrows to vote for the correct answer

A. B. C. D.

Correct Answer - A.

CloudWatch Events can integrate with CodePipeline to detect and react to changes in the state of a pipeline, stage, or action.

About how to configure the CloudWatch Event rules, please check https://docs.aws.amazon.com/codepipeline/latest/userguide/detect-state-changes-cloudwatch-events.html.

Option A is CORRECT: Because the CloudWatch Event rule needs to check the failure events of the CodePipeline stage state.

The detail-type should be "CodePipeline Stage Execution State Change".

Option B is incorrect: Because the detail-type is incorrect.

It also does not limit the pipeline, which means the events of other pipelines can trigger the CloudWatch Event rule as well.

Option C is incorrect: Because this event pattern uses a wrong detail-type.

Option D is incorrect: This option does not check the failure events of the CodePipeline stage state.

Sure, I'd be happy to provide a detailed explanation of each event pattern and determine which one is the most appropriate for your use case.

Event patterns in CloudWatch Events are used to match events based on specific criteria. When an event matches the pattern, CloudWatch Events triggers the associated target(s), such as a Lambda function or an SNS topic. In this case, you need to set up an event pattern to notify the DevOps team immediately whenever a pipeline stage has a failure.

Let's review each event pattern one by one:

A. { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Stage Execution State Change" ], "detail": { "state": [ "FAILED" ], "pipeline": [ "myPipeline" ] } }

This event pattern matches events that represent a stage change in a CodePipeline and includes details about the state of the stage and the pipeline name. The state filter is set to "FAILED" to only match events where a stage has failed.

B. { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Pipeline Execution State Change" ], "detail": { "state": [ "FAILED" ] } }

This event pattern matches events that represent a pipeline change in a CodePipeline and includes details about the state of the pipeline. The state filter is set to "FAILED" to only match events where the pipeline has failed.

C. { "source": [ "aws.codepipeline" ], "detail-type": [ "CodePipeline Action Execution State Change" ], "detail": { "state": [ "FAILED" ], "pipeline": [ "myPipeline" ] } }

This event pattern matches events that represent an action change in a CodePipeline and includes details about the state of the action and the pipeline name. The state filter is set to "FAILED" to only match events where an action has failed.

D. { "source": [ "aws.codepipeline" ], "detail-type": [ "AWS API Call via CloudTrail" ], "detail": { "eventSource": [ "codepipeline.amazonaws.com" ], "pipeline": [ "myPipeline" ] } }

This event pattern matches events that represent an AWS API call to the CodePipeline service via CloudTrail and includes details about the event source and the pipeline name.

Based on your use case, the most appropriate event pattern is A. This is because it matches events for a specific pipeline ("myPipeline") and includes details about the failed stage. This will provide the DevOps team with the most relevant information to diagnose and resolve the issue quickly.

Event pattern B matches events for a pipeline, but it does not provide information about the failed stage, which may lead to additional time spent diagnosing the issue.

Event pattern C matches events for an action change, but it does not provide information about the pipeline stage, which may not be as helpful for troubleshooting.

Event pattern D matches events for AWS API calls to the CodePipeline service via CloudTrail, but it does not provide information about the state of the pipeline or any specific stage or action.