Schedule
The Schedule resource lets you manage AWS Scheduler Schedules for automating tasks and events based on a defined schedule.
Minimal Example
Section titled “Minimal Example”Create a basic schedule that triggers a Lambda function at a specified interval.
import AWS from "alchemy/aws/control";
const lambdaSchedule = await AWS.Scheduler.Schedule("lambdaSchedule", { scheduleExpression: "rate(5 minutes)", target: { arn: "arn:aws:lambda:us-west-2:123456789012:function:myLambdaFunction", roleArn: "arn:aws:iam::123456789012:role/service-role/myLambdaRole" }, flexibleTimeWindow: { mode: "OFF" }, description: "Schedule to trigger my Lambda function every 5 minutes."});
Advanced Configuration
Section titled “Advanced Configuration”Configure a schedule with a specific start and end date, as well as a custom time zone.
const advancedSchedule = await AWS.Scheduler.Schedule("advancedSchedule", { scheduleExpression: "cron(0 12 * * ? *)", // Every day at 12 PM UTC target: { arn: "arn:aws:sns:us-east-1:123456789012:mySnsTopic", roleArn: "arn:aws:iam::123456789012:role/service-role/mySnsRole" }, startDate: "2023-11-01T00:00:00Z", endDate: "2023-12-01T00:00:00Z", scheduleExpressionTimezone: "UTC", flexibleTimeWindow: { mode: "OFF" }, description: "Daily notification to SNS at 12 PM UTC from Nov 1 to Dec 1."});
Using a KMS Key for Encryption
Section titled “Using a KMS Key for Encryption”Create a schedule that uses a KMS key for encrypting the target’s data.
const encryptedSchedule = await AWS.Scheduler.Schedule("encryptedSchedule", { scheduleExpression: "rate(1 hour)", target: { arn: "arn:aws:lambda:us-east-1:123456789012:function:mySecureLambdaFunction", roleArn: "arn:aws:iam::123456789012:role/service-role/mySecureLambdaRole" }, kmsKeyArn: "arn:aws:kms:us-east-1:123456789012:key/abcd1234-efgh-5678-ijkl-91011mnopqr", flexibleTimeWindow: { mode: "OFF" }, description: "Securely triggers my Lambda function every hour using KMS."});
Adoption of Existing Resources
Section titled “Adoption of Existing Resources”Create a schedule while adopting an existing resource if it already exists.
const adoptedSchedule = await AWS.Scheduler.Schedule("adoptedSchedule", { scheduleExpression: "cron(0 18 * * ? *)", // Every day at 6 PM UTC target: { arn: "arn:aws:ecs:us-west-2:123456789012:service/myEcsService", roleArn: "arn:aws:iam::123456789012:role/service-role/myEcsRole" }, adopt: true, // Adopt existing resource flexibleTimeWindow: { mode: "OFF" }, description: "Adopt existing schedule to trigger ECS service daily at 6 PM UTC."});