Package software.amazon.awscdk.services.scheduler.targets.alpha
Amazon EventBridge Scheduler Construct Library
---
The APIs of higher level constructs in this module are in developer preview before they become stable. We will only make breaking changes to address unforeseen API issues. Therefore, these APIs are not subject to Semantic Versioning, and breaking changes will be announced in 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 millions of one-time or recurring tasks across various 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 functiontargets.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 Streamtargets.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 EventBridge Scheduler with a custom payload. You can optionally attach a dead letter queue.
import software.amazon.awscdk.services.lambda.*; Function fn = Function.Builder.create(this, "MyFunc") .runtime(Runtime.NODEJS_LATEST) .handler("index.handler") .code(Code.fromInline("exports.handler = handler.toString()")) .build(); Queue dlq = Queue.Builder.create(this, "DLQ") .queueName("MyDLQ") .build(); LambdaInvoke target = LambdaInvoke.Builder.create(fn) .deadLetterQueue(dlq) .maxEventAge(Duration.minutes(1)) .retryAttempts(3) .input(ScheduleTargetInput.fromObject(Map.of( "payload", "useful"))) .build(); Schedule schedule = Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.hours(1))) .target(target) .build();
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 EventBridge Scheduler with a custom payload.
import software.amazon.awscdk.services.stepfunctions.*; import software.amazon.awscdk.services.stepfunctions.tasks.*; Map<String, String> payload = Map.of( "Name", "MyParameter", "Value", "🌥️"); CallAwsService putParameterStep = CallAwsService.Builder.create(this, "PutParameter") .service("ssm") .action("putParameter") .iamResources(List.of("*")) .parameters(Map.of( "Name.$", "$.Name", "Value.$", "$.Value", "Type", "String", "Overwrite", true)) .build(); StateMachine stateMachine = StateMachine.Builder.create(this, "StateMachine") .definitionBody(DefinitionBody.fromChainable(putParameterStep)) .build(); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.hours(1))) .target(StepFunctionsStartExecution.Builder.create(stateMachine) .input(ScheduleTargetInput.fromObject(payload)) .build()) .build();
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 EventBridge Scheduler.
import software.amazon.awscdk.services.codebuild.*; Project project; Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(new CodeBuildStartBuild(project)) .build();
Send a Message To an SQS Queue
Use the SqsSendMessage
target to send a message to an SQS Queue.
The code snippet below creates an event rule with an SQS Queue as a target called every hour by EventBridge 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.
String payload = "test"; String messageGroupId = "id"; Queue queue = Queue.Builder.create(this, "MyQueue") .fifo(true) .contentBasedDeduplication(true) .build(); SqsSendMessage target = SqsSendMessage.Builder.create(queue) .input(ScheduleTargetInput.fromText(payload)) .messageGroupId(messageGroupId) .build(); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(1))) .target(target) .build();
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 EventBridge Scheduler with a custom payload.
import software.amazon.awscdk.services.sns.*; Topic topic = new Topic(this, "Topic"); Map<String, String> payload = Map.of( "message", "Hello scheduler!"); SnsPublish target = SnsPublish.Builder.create(topic) .input(ScheduleTargetInput.fromObject(payload)) .build(); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.hours(1))) .target(target) .build();
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 EventBridge Scheduler with a custom event payload.
import software.amazon.awscdk.services.events.*; EventBus eventBus = EventBus.Builder.create(this, "EventBus") .eventBusName("DomainEvents") .build(); EventBridgePutEventsEntry eventEntry = EventBridgePutEventsEntry.builder() .eventBus(eventBus) .source("PetService") .detail(ScheduleTargetInput.fromObject(Map.of("Name", "Fluffy"))) .detailType("🐶") .build(); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.hours(1))) .target(new EventBridgePutEvents(eventEntry)) .build();
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 the target which is called every hour by EventBridge Scheduler.
import software.amazon.awscdk.services.inspector.*; CfnAssessmentTemplate assessmentTemplate; Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(new InspectorStartAssessmentRun(assessmentTemplate)) .build();
Put a record to an Amazon Kinesis Data Stream
Use the KinesisStreamPutRecord
target to put a record to an Amazon Kinesis Data Stream.
The code snippet below creates an event rule with a stream as the target which is called every hour by EventBridge Scheduler.
import software.amazon.awscdk.services.kinesis.*; Stream stream = new Stream(this, "MyStream"); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(KinesisStreamPutRecord.Builder.create(stream) .partitionKey("key") .build()) .build();
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 EventBridge Scheduler with a custom payload.
import software.amazon.awscdk.services.kinesisfirehose.alpha.*; IDeliveryStream deliveryStream; Map<String, String> payload = Map.of( "Data", "record"); Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(KinesisDataFirehosePutRecord.Builder.create(deliveryStream) .input(ScheduleTargetInput.fromObject(payload)) .build()) .build();
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 the target which is called every hour by EventBridge Scheduler.
import software.amazon.awscdk.services.codepipeline.*; Pipeline pipeline; Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(new CodePipelineStartPipelineExecution(pipeline)) .build();
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 the target which is called every hour by EventBridge Scheduler.
import software.amazon.awscdk.services.sagemaker.*; IPipeline pipeline; Schedule.Builder.create(this, "Schedule") .schedule(ScheduleExpression.rate(Duration.minutes(60))) .target(SageMakerStartPipelineExecution.Builder.create(pipeline) .pipelineParameterList(List.of(SageMakerPipelineParameter.builder() .name("parameter-name") .value("parameter-value") .build())) .build()) .build();
-
ClassDescription(experimental) Use an AWS CodeBuild as a target for AWS EventBridge Scheduler.(experimental) A fluent builder for
CodeBuildStartBuild
.(experimental) Use an AWS CodePipeline pipeline as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forCodePipelineStartPipelineExecution
.(experimental) Send an event to an AWS EventBridge by AWS EventBridge Scheduler.(experimental) A fluent builder forEventBridgePutEvents
.(experimental) An entry to be sent to EventBridge.A builder forEventBridgePutEventsEntry
An implementation forEventBridgePutEventsEntry
(experimental) Use an Amazon Inspector as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forInspectorStartAssessmentRun
.(experimental) Use an Amazon Kinesis Data Firehose as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forKinesisDataFirehosePutRecord
.(experimental) Use an Amazon Kinesis Data Streams as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forKinesisStreamPutRecord
.(experimental) Properties for a Kinesis Data Streams Target.A builder forKinesisStreamPutRecordProps
An implementation forKinesisStreamPutRecordProps
(experimental) Use an AWS Lambda function as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forLambdaInvoke
.(experimental) Properties for a pipeline parameter.A builder forSageMakerPipelineParameter
An implementation forSageMakerPipelineParameter
(experimental) Use a SageMaker pipeline as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forSageMakerStartPipelineExecution
.(experimental) Properties for a SageMaker Target.A builder forSageMakerStartPipelineExecutionProps
An implementation forSageMakerStartPipelineExecutionProps
(experimental) Base class for Schedule Targets.(experimental) Base properties for a Schedule Target.A builder forScheduleTargetBaseProps
An implementation forScheduleTargetBaseProps
(experimental) Use an Amazon SNS topic as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forSnsPublish
.(experimental) Use an Amazon SQS Queue as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forSqsSendMessage
.(experimental) Properties for a SQS Queue Target.A builder forSqsSendMessageProps
An implementation forSqsSendMessageProps
(experimental) Use an AWS Step function as a target for AWS EventBridge Scheduler.(experimental) A fluent builder forStepFunctionsStartExecution
.