Event targets for Amazon EventBridge
Project description
Event Targets for Amazon EventBridge
---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:
- Start a CodeBuild build
- Start a CodePipeline pipeline
- Run an ECS task
- Invoke a Lambda function
- Invoke a API Gateway REST API
- Publish a message to an SNS topic
- Send a message to an SQS queue
- Start a StepFunctions state machine
- Queue a Batch job
- Make an AWS API call
- Put a record to a Kinesis stream
- Log an event into a LogGroup
- Put a record to a Kinesis Data Firehose stream
- Put an event on an EventBridge bus
See the README of the @aws-cdk/aws-events
library for more information on
EventBridge.
Event retry policy and using dead-letter queues
The Codebuild, CodePipeline, Lambda, StepFunctions and LogGroup targets support attaching a dead letter queue and setting retry policies. See the lambda example. Use escape hatches for the other target types.
Invoke a Lambda function
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.
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_lambda as lambda_
fn = lambda_.Function(self, "MyFunc",
runtime=lambda_.Runtime.NODEJS_12_X,
handler="index.handler",
code=lambda_.Code.from_inline("exports.handler = handler.toString()")
)
rule = events.Rule(self, "rule",
event_pattern=EventPattern(
source=["aws.ec2"]
)
)
queue = sqs.Queue(self, "Queue")
rule.add_target(targets.LambdaFunction(fn,
dead_letter_queue=queue, # Optional: add a dead letter queue
max_event_age=cdk.Duration.hours(2), # Otional: set the maxEventAge retry policy
retry_attempts=2
))
Log an event into a LogGroup
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.
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_logs as logs
log_group = logs.LogGroup(self, "MyLogGroup",
log_group_name="MyLogGroup"
)
rule = events.Rule(self, "rule",
event_pattern=EventPattern(
source=["aws.ec2"]
)
)
rule.add_target(targets.CloudWatchLogGroup(log_group))
Start a CodeBuild build
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.
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_codebuild as codebuild
import aws_cdk.aws_codecommit as codecommit
repo = codecommit.Repository(self, "MyRepo",
repository_name="aws-cdk-codebuild-events"
)
project = codebuild.Project(self, "MyProject",
source=codebuild.Source.code_commit(repository=repo)
)
dead_letter_queue = sqs.Queue(self, "DeadLetterQueue")
# trigger a build when a commit is pushed to the repo
on_commit_rule = repo.on_commit("OnCommit",
target=targets.CodeBuildProject(project,
dead_letter_queue=dead_letter_queue
),
branches=["master"]
)
Start a CodePipeline pipeline
Use the CodePipeline
target to trigger a CodePipeline pipeline.
The code snippet below creates a CodePipeline pipeline that is triggered every hour
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_codepipeline as codepipeline
pipeline = codepipeline.Pipeline(self, "Pipeline")
rule = events.Rule(self, "Rule",
schedule=events.Schedule.expression("rate(1 hour)")
)
rule.add_target(targets.CodePipeline(pipeline))
Start a StepFunctions state machine
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.
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_iam as iam
import aws_cdk.aws_stepfunctions as sfn
rule = events.Rule(self, "Rule",
schedule=events.Schedule.rate(cdk.Duration.minutes(1))
)
dlq = sqs.Queue(self, "DeadLetterQueue")
role = iam.Role(self, "Role",
assumed_by=iam.ServicePrincipal("events.amazonaws.com")
)
state_machine = sfn.StateMachine(self, "SM",
definition=sfn.Wait(self, "Hello", time=sfn.WaitTime.duration(cdk.Duration.seconds(10))),
role=role
)
rule.add_target(targets.SfnStateMachine(state_machine,
input=events.RuleTargetInput.from_object(SomeParam="SomeValue"),
dead_letter_queue=dlq
))
Queue a Batch job
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. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_batch as batch
from aws_cdk.aws_ecs import ContainerImage
job_queue = batch.JobQueue(self, "MyQueue",
compute_environments=[JobQueueComputeEnvironment(
compute_environment=batch.ComputeEnvironment(self, "ComputeEnvironment",
managed=False
),
order=1
)
]
)
job_definition = batch.JobDefinition(self, "MyJob",
container=JobDefinitionContainer(
image=ContainerImage.from_registry("test-repo")
)
)
queue = sqs.Queue(self, "Queue")
rule = events.Rule(self, "Rule",
schedule=events.Schedule.rate(cdk.Duration.hours(1))
)
rule.add_target(targets.BatchJob(job_queue.job_queue_arn, job_queue, job_definition.job_definition_arn, job_definition,
dead_letter_queue=queue,
event=events.RuleTargetInput.from_object(SomeParam="SomeValue"),
retry_attempts=2,
max_event_age=cdk.Duration.hours(2)
))
Invoke a API Gateway REST API
Use the ApiGateway
target to trigger a REST API.
The code snippet below creates a Api Gateway REST API that is invoked every hour.
# Example automatically generated. See https://github.com/aws/jsii/issues/826
import aws_cdk.aws_apigateway as api
import aws_cdk.aws_lambda as lambda_
rule = events.Rule(self, "Rule",
schedule=events.Schedule.rate(cdk.Duration.minutes(1))
)
fn = lambda_.Function(self, "MyFunc",
handler="index.handler",
runtime=lambda_.Runtime.NODEJS_12_X,
code=lambda_.Code.from_inline("exports.handler = e => {}")
)
rest_api = api.LambdaRestApi(self, "MyRestAPI", handler=fn)
dlq = sqs.Queue(self, "DeadLetterQueue")
rule.add_target(
targets.ApiGateway(rest_api,
path="/*/test",
method="GET",
stage="prod",
path_parameter_values=["path-value"],
header_parameters={
"Header1": "header1"
},
query_string_parameters={
"QueryParam1": "query-param-1"
},
dead_letter_queue=dlq
))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for aws-cdk.aws-events-targets-1.126.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c2a269a353d742c16951812ba52c35784c08eef05afa911ee8cbd42cdb7c3c15 |
|
MD5 | fe0d7e2ed43b307610ff1591cdb571e4 |
|
BLAKE2b-256 | fa7c075533cc96afdf4cbf11b504971741657e55a71e48ef1cb2585073876254 |
Hashes for aws_cdk.aws_events_targets-1.126.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0834b9719724a6f145f374d506d2cc1ff60535d80c51e083f0bf8df2ac9bcc13 |
|
MD5 | c465ea5c98febcaac4d8fd562919fb7b |
|
BLAKE2b-256 | ee0b8b66f089b1ec70c487d6f545ae8b545ed0a708b84a8d65b13ec1233c6571 |