Schedule
Provides an EventBridge Scheduler Schedule resource. You can find out more about EventBridge Scheduler in the User Guide.
Note: EventBridge was formerly known as CloudWatch Events. The functionality is identical.
Example Usage
Basic Usage
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.scheduler.Schedule("example", {
    name: "my-schedule",
    groupName: "default",
    flexibleTimeWindow: {
        mode: "OFF",
    },
    scheduleExpression: "rate(1 hours)",
    target: {
        arn: exampleAwsSqsQueue.arn,
        roleArn: exampleAwsIamRole.arn,
    },
});Content copied to clipboard
import pulumi
import pulumi_aws as aws
example = aws.scheduler.Schedule("example",
    name="my-schedule",
    group_name="default",
    flexible_time_window=aws.scheduler.ScheduleFlexibleTimeWindowArgs(
        mode="OFF",
    ),
    schedule_expression="rate(1 hours)",
    target=aws.scheduler.ScheduleTargetArgs(
        arn=example_aws_sqs_queue["arn"],
        role_arn=example_aws_iam_role["arn"],
    ))Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    var example = new Aws.Scheduler.Schedule("example", new()
    {
        Name = "my-schedule",
        GroupName = "default",
        FlexibleTimeWindow = new Aws.Scheduler.Inputs.ScheduleFlexibleTimeWindowArgs
        {
            Mode = "OFF",
        },
        ScheduleExpression = "rate(1 hours)",
        Target = new Aws.Scheduler.Inputs.ScheduleTargetArgs
        {
            Arn = exampleAwsSqsQueue.Arn,
            RoleArn = exampleAwsIamRole.Arn,
        },
    });
});Content copied to clipboard
package main
import (
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/scheduler"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		_, err := scheduler.NewSchedule(ctx, "example", &scheduler.ScheduleArgs{
			Name:      pulumi.String("my-schedule"),
			GroupName: pulumi.String("default"),
			FlexibleTimeWindow: &scheduler.ScheduleFlexibleTimeWindowArgs{
				Mode: pulumi.String("OFF"),
			},
			ScheduleExpression: pulumi.String("rate(1 hours)"),
			Target: &scheduler.ScheduleTargetArgs{
				Arn:     pulumi.Any(exampleAwsSqsQueue.Arn),
				RoleArn: pulumi.Any(exampleAwsIamRole.Arn),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.scheduler.Schedule;
import com.pulumi.aws.scheduler.ScheduleArgs;
import com.pulumi.aws.scheduler.inputs.ScheduleFlexibleTimeWindowArgs;
import com.pulumi.aws.scheduler.inputs.ScheduleTargetArgs;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var example = new Schedule("example", ScheduleArgs.builder()
            .name("my-schedule")
            .groupName("default")
            .flexibleTimeWindow(ScheduleFlexibleTimeWindowArgs.builder()
                .mode("OFF")
                .build())
            .scheduleExpression("rate(1 hours)")
            .target(ScheduleTargetArgs.builder()
                .arn(exampleAwsSqsQueue.arn())
                .roleArn(exampleAwsIamRole.arn())
                .build())
            .build());
    }
}Content copied to clipboard
resources:
  example:
    type: aws:scheduler:Schedule
    properties:
      name: my-schedule
      groupName: default
      flexibleTimeWindow:
        mode: OFF
      scheduleExpression: rate(1 hours)
      target:
        arn: ${exampleAwsSqsQueue.arn}
        roleArn: ${exampleAwsIamRole.arn}Content copied to clipboard
Universal Target
import * as pulumi from "@pulumi/pulumi";
import * as aws from "@pulumi/aws";
const example = new aws.sqs.Queue("example", {});
const exampleSchedule = new aws.scheduler.Schedule("example", {
    name: "my-schedule",
    flexibleTimeWindow: {
        mode: "OFF",
    },
    scheduleExpression: "rate(1 hours)",
    target: {
        arn: "arn:aws:scheduler:::aws-sdk:sqs:sendMessage",
        roleArn: exampleAwsIamRole.arn,
        input: pulumi.jsonStringify({
            MessageBody: "Greetings, programs!",
            QueueUrl: example.url,
        }),
    },
});Content copied to clipboard
import pulumi
import json
import pulumi_aws as aws
example = aws.sqs.Queue("example")
example_schedule = aws.scheduler.Schedule("example",
    name="my-schedule",
    flexible_time_window=aws.scheduler.ScheduleFlexibleTimeWindowArgs(
        mode="OFF",
    ),
    schedule_expression="rate(1 hours)",
    target=aws.scheduler.ScheduleTargetArgs(
        arn="arn:aws:scheduler:::aws-sdk:sqs:sendMessage",
        role_arn=example_aws_iam_role["arn"],
        input=pulumi.Output.json_dumps({
            "MessageBody": "Greetings, programs!",
            "QueueUrl": example.url,
        }),
    ))Content copied to clipboard
using System.Collections.Generic;
using System.Linq;
using System.Text.Json;
using Pulumi;
using Aws = Pulumi.Aws;
return await Deployment.RunAsync(() =>
{
    var example = new Aws.Sqs.Queue("example");
    var exampleSchedule = new Aws.Scheduler.Schedule("example", new()
    {
        Name = "my-schedule",
        FlexibleTimeWindow = new Aws.Scheduler.Inputs.ScheduleFlexibleTimeWindowArgs
        {
            Mode = "OFF",
        },
        ScheduleExpression = "rate(1 hours)",
        Target = new Aws.Scheduler.Inputs.ScheduleTargetArgs
        {
            Arn = "arn:aws:scheduler:::aws-sdk:sqs:sendMessage",
            RoleArn = exampleAwsIamRole.Arn,
            Input = Output.JsonSerialize(Output.Create(new Dictionary<string, object?>
            {
                ["MessageBody"] = "Greetings, programs!",
                ["QueueUrl"] = example.Url,
            })),
        },
    });
});Content copied to clipboard
package main
import (
	"encoding/json"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/scheduler"
	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sqs"
	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
)
func main() {
	pulumi.Run(func(ctx *pulumi.Context) error {
		example, err := sqs.NewQueue(ctx, "example", nil)
		if err != nil {
			return err
		}
		_, err = scheduler.NewSchedule(ctx, "example", &scheduler.ScheduleArgs{
			Name: pulumi.String("my-schedule"),
			FlexibleTimeWindow: &scheduler.ScheduleFlexibleTimeWindowArgs{
				Mode: pulumi.String("OFF"),
			},
			ScheduleExpression: pulumi.String("rate(1 hours)"),
			Target: &scheduler.ScheduleTargetArgs{
				Arn:     pulumi.String("arn:aws:scheduler:::aws-sdk:sqs:sendMessage"),
				RoleArn: pulumi.Any(exampleAwsIamRole.Arn),
				Input: example.Url.ApplyT(func(url string) (pulumi.String, error) {
					var _zero pulumi.String
					tmpJSON0, err := json.Marshal(map[string]interface{}{
						"MessageBody": "Greetings, programs!",
						"QueueUrl":    url,
					})
					if err != nil {
						return _zero, err
					}
					json0 := string(tmpJSON0)
					return pulumi.String(json0), nil
				}).(pulumi.StringOutput),
			},
		})
		if err != nil {
			return err
		}
		return nil
	})
}Content copied to clipboard
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.sqs.Queue;
import com.pulumi.aws.scheduler.Schedule;
import com.pulumi.aws.scheduler.ScheduleArgs;
import com.pulumi.aws.scheduler.inputs.ScheduleFlexibleTimeWindowArgs;
import com.pulumi.aws.scheduler.inputs.ScheduleTargetArgs;
import static com.pulumi.codegen.internal.Serialization.*;
import java.util.List;
import java.util.ArrayList;
import java.util.Map;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
public class App {
    public static void main(String[] args) {
        Pulumi.run(App::stack);
    }
    public static void stack(Context ctx) {
        var example = new Queue("example");
        var exampleSchedule = new Schedule("exampleSchedule", ScheduleArgs.builder()
            .name("my-schedule")
            .flexibleTimeWindow(ScheduleFlexibleTimeWindowArgs.builder()
                .mode("OFF")
                .build())
            .scheduleExpression("rate(1 hours)")
            .target(ScheduleTargetArgs.builder()
                .arn("arn:aws:scheduler:::aws-sdk:sqs:sendMessage")
                .roleArn(exampleAwsIamRole.arn())
                .input(example.url().applyValue(url -> serializeJson(
                    jsonObject(
                        jsonProperty("MessageBody", "Greetings, programs!"),
                        jsonProperty("QueueUrl", url)
                    ))))
                .build())
            .build());
    }
}Content copied to clipboard
resources:
  example:
    type: aws:sqs:Queue
  exampleSchedule:
    type: aws:scheduler:Schedule
    name: example
    properties:
      name: my-schedule
      flexibleTimeWindow:
        mode: OFF
      scheduleExpression: rate(1 hours)
      target:
        arn: arn:aws:scheduler:::aws-sdk:sqs:sendMessage
        roleArn: ${exampleAwsIamRole.arn}
        input:
          fn::toJSON:
            MessageBody: Greetings, programs!
            QueueUrl: ${example.url}Content copied to clipboard
Import
Using pulumi import, import schedules using the combination group_name/name. For example:
$ pulumi import aws:scheduler/schedule:Schedule example my-schedule-group/my-scheduleContent copied to clipboard
Properties
Link copied to clipboard
                Link copied to clipboard
                Defines when the schedule runs. Read more in Schedule types on EventBridge Scheduler.