See: Description
| Interface | Description |
|---|---|
| ApiGatewayProps |
Customize the API Gateway Event Target.
|
| AwsApiInput |
Rule target input for an AwsApi target.
|
| AwsApiProps |
Properties for an AwsApi target.
|
| BatchJobProps |
Customize the Batch Job Event Target.
|
| CodeBuildProjectProps |
Customize the CodeBuild Event Target.
|
| CodePipelineTargetOptions |
Customization options when creating a
CodePipeline event target. |
| ContainerOverride |
Example:
|
| EcsTaskProps |
Properties to define an ECS Event Task.
|
| EventBusProps |
Configuration properties of an Event Bus event.
|
| KinesisFirehoseStreamProps |
Customize the Firehose Stream Event Target.
|
| KinesisStreamProps |
Customize the Kinesis Stream Event Target.
|
| LambdaFunctionProps |
Customize the Lambda Event Target.
|
| LogGroupProps |
Customize the CloudWatch LogGroup Event Target.
|
| SfnStateMachineProps |
Customize the Step Functions State Machine target.
|
| SnsTopicProps |
Customize the SNS Topic Event Target.
|
| SqsQueueProps |
Customize the SQS Queue Event Target.
|
| TargetBaseProps |
The generic properties for an RuleTarget.
|
| TaskEnvironmentVariable |
An environment variable to be set in the container run as a task.
|
This library contains integration classes to send Amazon EventBridge to any
number of supported AWS Services. Instances of these classes should be passed
to the rule.addTarget() method.
Currently supported are:
See the README of the @aws-cdk/aws-events library for more information on
EventBridge.
The Codebuild, CodePipeline, Lambda, StepFunctions, LogGroup and SQSQueue targets support attaching a dead letter queue and setting retry policies. See the lambda example. Use escape hatches for the other target types.
Use the LambdaFunction target to invoke a lambda function.
The code snippet below creates an event rule with a Lambda function as a target
triggered for every events from aws.ec2 source. You can optionally attach a
dead letter queue.
import software.amazon.awscdk.services.lambda.*;
Function fn = Function.Builder.create(this, "MyFunc")
.runtime(Runtime.NODEJS_12_X)
.handler("index.handler")
.code(Code.fromInline("exports.handler = handler.toString()"))
.build();
Rule rule = Rule.Builder.create(this, "rule")
.eventPattern(EventPattern.builder()
.source(List.of("aws.ec2"))
.build())
.build();
Queue queue = new Queue(this, "Queue");
rule.addTarget(LambdaFunction.Builder.create(fn)
.deadLetterQueue(queue) // Optional: add a dead letter queue
.maxEventAge(Duration.hours(2)) // Optional: set the maxEventAge retry policy
.retryAttempts(2)
.build());
Use the LogGroup target to log your events in a CloudWatch LogGroup.
For example, the following code snippet creates an event rule with a CloudWatch LogGroup as a target.
Every events sent from the aws.ec2 source will be sent to the CloudWatch LogGroup.
import software.amazon.awscdk.services.logs.*;
LogGroup logGroup = LogGroup.Builder.create(this, "MyLogGroup")
.logGroupName("MyLogGroup")
.build();
Rule rule = Rule.Builder.create(this, "rule")
.eventPattern(EventPattern.builder()
.source(List.of("aws.ec2"))
.build())
.build();
rule.addTarget(new CloudWatchLogGroup(logGroup));
Use the CodeBuildProject target to trigger a CodeBuild project.
The code snippet below creates a CodeCommit repository that triggers a CodeBuild project on commit to the master branch. You can optionally attach a dead letter queue.
import software.amazon.awscdk.services.codebuild.*;
import software.amazon.awscdk.services.codecommit.*;
Repository repo = Repository.Builder.create(this, "MyRepo")
.repositoryName("aws-cdk-codebuild-events")
.build();
Project project = Project.Builder.create(this, "MyProject")
.source(Source.codeCommit(CodeCommitSourceProps.builder().repository(repo).build()))
.build();
Queue deadLetterQueue = new Queue(this, "DeadLetterQueue");
// trigger a build when a commit is pushed to the repo
Rule onCommitRule = repo.onCommit("OnCommit", OnCommitOptions.builder()
.target(CodeBuildProject.Builder.create(project)
.deadLetterQueue(deadLetterQueue)
.build())
.branches(List.of("master"))
.build());
Use the CodePipeline target to trigger a CodePipeline pipeline.
The code snippet below creates a CodePipeline pipeline that is triggered every hour
import software.amazon.awscdk.services.codepipeline.*;
Pipeline pipeline = new Pipeline(this, "Pipeline");
Rule rule = Rule.Builder.create(this, "Rule")
.schedule(Schedule.expression("rate(1 hour)"))
.build();
rule.addTarget(new CodePipeline(pipeline));
Use the SfnStateMachine target to trigger a State Machine.
The code snippet below creates a Simple StateMachine that is triggered every minute with a dummy object as input. You can optionally attach a dead letter queue to the target.
import software.amazon.awscdk.services.iam.*;
import software.amazon.awscdk.services.stepfunctions.*;
Rule rule = Rule.Builder.create(this, "Rule")
.schedule(Schedule.rate(Duration.minutes(1)))
.build();
Queue dlq = new Queue(this, "DeadLetterQueue");
Role role = Role.Builder.create(this, "Role")
.assumedBy(new ServicePrincipal("events.amazonaws.com"))
.build();
StateMachine stateMachine = StateMachine.Builder.create(this, "SM")
.definition(Wait.Builder.create(this, "Hello").time(WaitTime.duration(Duration.seconds(10))).build())
.role(role)
.build();
rule.addTarget(SfnStateMachine.Builder.create(stateMachine)
.input(RuleTargetInput.fromObject(Map.of("SomeParam", "SomeValue")))
.deadLetterQueue(dlq)
.build());
Use the BatchJob target to queue a Batch job.
The code snippet below creates a Simple JobQueue that is triggered every hour with a dummy object as input. You can optionally attach a dead letter queue to the target.
// Example automatically generated from non-compiling source. May contain errors.
import software.amazon.awscdk.services.batch.*;
import software.amazon.awscdk.services.ecs.ContainerImage;
Object jobQueue = JobQueue.Builder.create(this, "MyQueue")
.computeEnvironments(List.of(Map.of(
"computeEnvironment", ComputeEnvironment.Builder.create(this, "ComputeEnvironment")
.managed(false)
.build(),
"order", 1)))
.build();
Object jobDefinition = JobDefinition.Builder.create(this, "MyJob")
.container(Map.of(
"image", ContainerImage.fromRegistry("test-repo")))
.build();
Queue queue = new Queue(this, "Queue");
Rule rule = Rule.Builder.create(this, "Rule")
.schedule(Schedule.rate(Duration.hours(1)))
.build();
rule.addTarget(BatchJob.Builder.create(jobQueue.getJobQueueArn(), jobQueue, jobDefinition.getJobDefinitionArn(), jobDefinition)
.deadLetterQueue(queue)
.event(RuleTargetInput.fromObject(Map.of("SomeParam", "SomeValue")))
.retryAttempts(2)
.maxEventAge(Duration.hours(2))
.build());
Use the ApiGateway target to trigger a REST API.
The code snippet below creates a Api Gateway REST API that is invoked every hour.
import software.amazon.awscdk.services.apigateway.*;
import software.amazon.awscdk.services.lambda.*;
Rule rule = Rule.Builder.create(this, "Rule")
.schedule(Schedule.rate(Duration.minutes(1)))
.build();
Function fn = Function.Builder.create(this, "MyFunc")
.handler("index.handler")
.runtime(Runtime.NODEJS_12_X)
.code(Code.fromInline("exports.handler = e => {}"))
.build();
LambdaRestApi restApi = LambdaRestApi.Builder.create(this, "MyRestAPI").handler(fn).build();
Queue dlq = new Queue(this, "DeadLetterQueue");
rule.addTarget(
ApiGateway.Builder.create(restApi)
.path("/*/test")
.method("GET")
.stage("prod")
.pathParameterValues(List.of("path-value"))
.headerParameters(Map.of(
"Header1", "header1"))
.queryStringParameters(Map.of(
"QueryParam1", "query-param-1"))
.deadLetterQueue(dlq)
.build());
Use the EventBus target to route event to a different EventBus.
The code snippet below creates the scheduled event rule that route events to an imported event bus.
Rule rule = Rule.Builder.create(this, "Rule")
.schedule(Schedule.expression("rate(1 minute)"))
.build();
rule.addTarget(new EventBus(EventBus.fromEventBusArn(this, "External", "arn:aws:events:eu-west-1:999999999999:event-bus/test-bus")));
Copyright © 2021. All rights reserved.