createSchedule method

Future<CreateScheduleOutput> createSchedule({
  1. required FlexibleTimeWindow flexibleTimeWindow,
  2. required String name,
  3. required String scheduleExpression,
  4. required Target target,
  5. ActionAfterCompletion? actionAfterCompletion,
  6. String? clientToken,
  7. String? description,
  8. DateTime? endDate,
  9. String? groupName,
  10. String? kmsKeyArn,
  11. String? scheduleExpressionTimezone,
  12. DateTime? startDate,
  13. ScheduleState? state,
})

Creates the specified schedule.

May throw ConflictException. May throw InternalServerException. May throw ResourceNotFoundException. May throw ServiceQuotaExceededException. May throw ThrottlingException. May throw ValidationException.

Parameter flexibleTimeWindow : Allows you to configure a time window during which EventBridge Scheduler invokes the schedule.

Parameter name : The name of the schedule that you are creating.

Parameter scheduleExpression : The expression that defines when the schedule runs. The following formats are supported.

  • at expression - at(yyyy-mm-ddThh:mm:ss)
  • rate expression - rate(value unit)
  • cron expression - cron(fields)
You can use at expressions to create one-time schedules that invoke a target once, at the time and in the time zone, that you specify. You can use rate and cron expressions to create recurring schedules. Rate-based schedules are useful when you want to invoke a target at regular intervals, such as every 15 minutes or every five days. Cron-based schedules are useful when you want to invoke a target periodically at a specific time, such as at 8:00 am (UTC+0) every 1st day of the month.

A cron expression consists of six fields separated by white spaces: (minutes hours day_of_month month day_of_week year).

A rate expression consists of a value as a positive integer, and a unit with the following options: minute | minutes | hour | hours | day | days

For more information and examples, see Schedule types on EventBridge Scheduler in the EventBridge Scheduler User Guide.

Parameter target : The schedule's target.

Parameter actionAfterCompletion : Specifies the action that EventBridge Scheduler applies to the schedule after the schedule completes invoking the target.

Parameter clientToken : Unique, case-sensitive identifier you provide to ensure the idempotency of the request. If you do not specify a client token, EventBridge Scheduler uses a randomly generated token for the request to ensure idempotency.

Parameter description : The description you specify for the schedule.

Parameter endDate : The date, in UTC, before which the schedule can invoke its target. Depending on the schedule's recurrence expression, invocations might stop on, or before, the EndDate you specify. EventBridge Scheduler ignores EndDate for one-time schedules.

Parameter groupName : The name of the schedule group to associate with this schedule. If you omit this, the default schedule group is used.

Parameter kmsKeyArn : The Amazon Resource Name (ARN) for the customer managed KMS key that EventBridge Scheduler will use to encrypt and decrypt your data.

Parameter scheduleExpressionTimezone : The timezone in which the scheduling expression is evaluated.

Parameter startDate : The date, in UTC, after which the schedule can begin invoking its target. Depending on the schedule's recurrence expression, invocations might occur on, or after, the StartDate you specify. EventBridge Scheduler ignores StartDate for one-time schedules.

Parameter state : Specifies whether the schedule is enabled or disabled.

Implementation

Future<CreateScheduleOutput> createSchedule({
  required FlexibleTimeWindow flexibleTimeWindow,
  required String name,
  required String scheduleExpression,
  required Target target,
  ActionAfterCompletion? actionAfterCompletion,
  String? clientToken,
  String? description,
  DateTime? endDate,
  String? groupName,
  String? kmsKeyArn,
  String? scheduleExpressionTimezone,
  DateTime? startDate,
  ScheduleState? state,
}) async {
  final $payload = <String, dynamic>{
    'FlexibleTimeWindow': flexibleTimeWindow,
    'ScheduleExpression': scheduleExpression,
    'Target': target,
    if (actionAfterCompletion != null)
      'ActionAfterCompletion': actionAfterCompletion.value,
    'ClientToken': clientToken ?? _s.generateIdempotencyToken(),
    if (description != null) 'Description': description,
    if (endDate != null) 'EndDate': unixTimestampToJson(endDate),
    if (groupName != null) 'GroupName': groupName,
    if (kmsKeyArn != null) 'KmsKeyArn': kmsKeyArn,
    if (scheduleExpressionTimezone != null)
      'ScheduleExpressionTimezone': scheduleExpressionTimezone,
    if (startDate != null) 'StartDate': unixTimestampToJson(startDate),
    if (state != null) 'State': state.value,
  };
  final response = await _protocol.send(
    payload: $payload,
    method: 'POST',
    requestUri: '/schedules/${Uri.encodeComponent(name)}',
    exceptionFnMap: _exceptionFns,
  );
  return CreateScheduleOutput.fromJson(response);
}