The CDK Construct Library for Amazon Scheduler Targets
Project description
Amazon EventBridge Scheduler Construct Library
---The APIs of higher level constructs in this module are experimental and under active development. They are subject to non-backward compatible changes or removal in any future version. These are not subject to the Semantic Versioning model and breaking changes will be announced in the release notes. This means that while you may use them, you may need to update your source code when upgrading to a newer version of this package.
Amazon EventBridge Scheduler is a feature from Amazon EventBridge that allows you to create, run, and manage scheduled tasks at scale. With EventBridge Scheduler, you can schedule one-time or recurrently tens of millions of tasks across many AWS services without provisioning or managing underlying infrastructure.
This library contains integration classes for Amazon EventBridge Scheduler to call any number of supported AWS Services.
The following targets are supported:
targets.LambdaInvoke
: Invoke an AWS Lambda function)targets.StepFunctionsStartExecution
: Start an AWS Step Functiontargets.CodeBuildStartBuild
: Start a CodeBuild jobtargets.SqsSendMessage
: Send a Message to an Amazon SQS Queuetargets.SnsPublish
: Publish messages to an Amazon SNS topictargets.EventBridgePutEvents
: Put Events on EventBridgetargets.InspectorStartAssessmentRun
: Start an Amazon Inspector assessment runtargets.KinesisStreamPutRecord
: Put a record to an Amazon Kinesis Data Streamstargets.KinesisDataFirehosePutRecord
: Put a record to a Kinesis Data Firehosetargets.CodePipelineStartPipelineExecution
: Start a CodePipeline executiontargets.SageMakerStartPipelineExecution
: Start a SageMaker pipeline execution
Invoke a Lambda function
Use the LambdaInvoke
target to invoke a lambda function.
The code snippet below creates an event rule with a Lambda function as a target called every hour by Event Bridge Scheduler with custom payload. You can optionally attach a dead letter queue.
import aws_cdk.aws_lambda as lambda_
fn = lambda_.Function(self, "MyFunc",
runtime=lambda_.Runtime.NODEJS_LATEST,
handler="index.handler",
code=lambda_.Code.from_inline("exports.handler = handler.toString()")
)
dlq = sqs.Queue(self, "DLQ",
queue_name="MyDLQ"
)
target = targets.LambdaInvoke(fn,
dead_letter_queue=dlq,
max_event_age=Duration.minutes(1),
retry_attempts=3,
input=ScheduleTargetInput.from_object({
"payload": "useful"
})
)
schedule = Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.hours(1)),
target=target
)
Start an AWS Step Function
Use the StepFunctionsStartExecution
target to start a new execution on a StepFunction.
The code snippet below creates an event rule with a Step Function as a target called every hour by Event Bridge Scheduler with a custom payload.
import aws_cdk.aws_stepfunctions as sfn
import aws_cdk.aws_stepfunctions_tasks as tasks
payload = {
"Name": "MyParameter",
"Value": "🌥️"
}
put_parameter_step = tasks.CallAwsService(self, "PutParameter",
service="ssm",
action="putParameter",
iam_resources=["*"],
parameters={
"Name.$": "$.Name",
"Value.$": "$.Value",
"Type": "String",
"Overwrite": True
}
)
state_machine = sfn.StateMachine(self, "StateMachine",
definition_body=sfn.DefinitionBody.from_chainable(put_parameter_step)
)
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.hours(1)),
target=targets.StepFunctionsStartExecution(state_machine,
input=ScheduleTargetInput.from_object(payload)
)
)
Start a CodeBuild job
Use the CodeBuildStartBuild
target to start a new build run on a CodeBuild project.
The code snippet below creates an event rule with a CodeBuild project as target which is called every hour by Event Bridge Scheduler.
import aws_cdk.aws_codebuild as codebuild
# project: codebuild.Project
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.CodeBuildStartBuild(project)
)
Send A Message To SQS Queue
Use the SqsSendMessage
target to send a message to SQS Queue.
The code snippet below creates an event rule with a SQS Queue as a target called every hour by Event Bridge Scheduler with a custom payload.
Contains the messageGroupId
to use when the target is a FIFO queue. If you specify
a FIFO queue as a target, the queue must have content-based deduplication enabled.
payload = "test"
message_group_id = "id"
queue = sqs.Queue(self, "MyQueue",
fifo=True,
content_based_deduplication=True
)
target = targets.SqsSendMessage(queue,
input=ScheduleTargetInput.from_text(payload),
message_group_id=message_group_id
)
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(1)),
target=target
)
Publish messages to an Amazon SNS topic
Use the SnsPublish
target to publish messages to an Amazon SNS topic.
The code snippets below create an event rule with a Amazon SNS topic as a target. It's called every hour by Amazon Event Bridge Scheduler with custom payload.
import aws_cdk.aws_sns as sns
topic = sns.Topic(self, "Topic")
payload = {
"message": "Hello scheduler!"
}
target = targets.SnsPublish(topic,
input=ScheduleTargetInput.from_object(payload)
)
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.hours(1)),
target=target
)
Send events to an EventBridge event bus
Use the EventBridgePutEvents
target to send events to an EventBridge event bus.
The code snippet below creates an event rule with an EventBridge event bus as a target called every hour by Event Bridge Scheduler with a custom event payload.
import aws_cdk.aws_events as events
event_bus = events.EventBus(self, "EventBus",
event_bus_name="DomainEvents"
)
event_entry = targets.EventBridgePutEventsEntry(
event_bus=event_bus,
source="PetService",
detail=ScheduleTargetInput.from_object({"Name": "Fluffy"}),
detail_type="🐶"
)
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.hours(1)),
target=targets.EventBridgePutEvents(event_entry)
)
Start an Amazon Inspector assessment run
Use the InspectorStartAssessmentRun
target to start an Inspector assessment run.
The code snippet below creates an event rule with an assessment template as target which is called every hour by Event Bridge Scheduler.
import aws_cdk.aws_inspector as inspector
# assessment_template: inspector.CfnAssessmentTemplate
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.InspectorStartAssessmentRun(assessment_template)
)
Put a record to an Amazon Kinesis Data Streams
Use the KinesisStreamPutRecord
target to put a record to an Amazon Kinesis Data Streams.
The code snippet below creates an event rule with a stream as target which is called every hour by Event Bridge Scheduler.
import aws_cdk.aws_kinesis as kinesis
stream = kinesis.Stream(self, "MyStream")
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.KinesisStreamPutRecord(stream,
partition_key="key"
)
)
Put a record to a Kinesis Data Firehose
Use the KinesisDataFirehosePutRecord
target to put a record to a Kinesis Data Firehose delivery stream.
The code snippet below creates an event rule with a delivery stream as a target called every hour by Event Bridge Scheduler with a custom payload.
import aws_cdk.aws_kinesisfirehose as firehose
# delivery_stream: firehose.CfnDeliveryStream
payload = {
"Data": "record"
}
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.KinesisDataFirehosePutRecord(delivery_stream,
input=ScheduleTargetInput.from_object(payload)
)
)
Start a CodePipeline execution
Use the CodePipelineStartPipelineExecution
target to start a new execution for a CodePipeline pipeline.
The code snippet below creates an event rule with a CodePipeline pipeline as target which is called every hour by Event Bridge Scheduler.
import aws_cdk.aws_codepipeline as codepipeline
# pipeline: codepipeline.Pipeline
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.CodePipelineStartPipelineExecution(pipeline)
)
Start a SageMaker pipeline execution
Use the SageMakerStartPipelineExecution
target to start a new execution for a SageMaker pipeline.
The code snippet below creates an event rule with a SageMaker pipeline as target which is called every hour by Event Bridge Scheduler.
import aws_cdk.aws_sagemaker as sagemaker
# pipeline: sagemaker.IPipeline
Schedule(self, "Schedule",
schedule=ScheduleExpression.rate(Duration.minutes(60)),
target=targets.SageMakerStartPipelineExecution(pipeline,
pipeline_parameter_list=[targets.SageMakerPipelineParameter(
name="parameter-name",
value="parameter-value"
)]
)
)
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-scheduler-targets-alpha-2.147.0a0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ea60d7d70580c4538b59e9be9f45f29b73d10792534e75b74b3f644eeebd113 |
|
MD5 | c03af97e0fe3e2da11b866b4b6985d54 |
|
BLAKE2b-256 | df41e5eb0fe74566907e93fd5e411c21eea07c8eacd14e9a7b601cd4b389ab9a |
Hashes for aws_cdk.aws_scheduler_targets_alpha-2.147.0a0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 270612c4f781778e0bf471e37b5b4560faf5fb51f7b35592d366a86c13cbdc13 |
|
MD5 | 471111e5feb239269c145c76622f5f21 |
|
BLAKE2b-256 | 018668173223f688fb5cc73659739f37a50c46ded737cc401fcf3aac5ea854a5 |