aws-sdk-cloudwatch 1.111.0

AWS SDK for Amazon CloudWatch
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.

/// <p>Specifies when and how long an alarm mute rule is active.</p>
/// <p>The schedule uses either a cron expression for recurring mute windows or an at expression for one-time mute windows. When the schedule activates, the mute rule mutes alarm actions for the specified duration.</p>
#[non_exhaustive]
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::fmt::Debug)]
pub struct Schedule {
    /// <p>The schedule expression that defines when the mute rule activates. The expression must be between 1 and 256 characters in length.</p>
    /// <p>You can use one of two expression formats:</p>
    /// <ul>
    /// <li>
    /// <p><b>Cron expressions</b> - For recurring mute windows. Format: <code>cron(Minutes Hours Day-of-month Month Day-of-week)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>cron(0 2 * * *)</code> - Activates daily at 2:00 AM</p></li>
    /// <li>
    /// <p><code>cron(0 2 * * SUN)</code> - Activates every Sunday at 2:00 AM for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 1 1 * *)</code> - Activates on the first day of each month at 1:00 AM for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 18 * * FRI)</code> - Activates every Friday at 6:00 PM</p></li>
    /// <li>
    /// <p><code>cron(0 23 * * *)</code> - Activates every day at 11:00 PM during nightly backup operations</p></li>
    /// </ul>
    /// <p>The characters <code>*</code>, <code>-</code>, and <code>,</code> are supported in all fields. English names can be used for the month (JAN-DEC) and day of week (SUN-SAT) fields.</p></li>
    /// <li>
    /// <p><b>At expressions</b> - For one-time mute windows. Format: <code>at(yyyy-MM-ddThh:mm)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>at(2024-05-10T14:00)</code> - Activates once on May 10, 2024 at 2:00 PM during an active incident response session</p></li>
    /// <li>
    /// <p><code>at(2024-12-23T00:00)</code> - Activates once on December 23, 2024 at midnight during annual company shutdown</p></li>
    /// </ul></li>
    /// </ul>
    pub expression: ::std::option::Option<::std::string::String>,
    /// <p>The length of time that alarms remain muted when the schedule activates. The duration must be between 1 and 50 characters in length.</p>
    /// <p>Specify the duration using ISO 8601 duration format with a minimum of 1 minute (<code>PT1M</code>) and maximum of 15 days (<code>P15D</code>).</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>PT4H</code> - 4 hours for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>P2DT12H</code> - 2 days and 12 hours for weekend muting from Friday 6:00 PM to Monday 6:00 AM</p></li>
    /// <li>
    /// <p><code>PT6H</code> - 6 hours for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>PT2H</code> - 2 hours for nightly backup operations</p></li>
    /// <li>
    /// <p><code>P7D</code> - 7 days for annual company shutdown</p></li>
    /// </ul>
    /// <p>The duration begins when the schedule expression time is reached. For recurring schedules, the duration applies to each occurrence.</p>
    pub duration: ::std::option::Option<::std::string::String>,
    /// <p>The time zone to use when evaluating the schedule expression. The time zone must be between 1 and 50 characters in length.</p>
    /// <p>Specify the time zone using standard timezone identifiers (for example, <code>America/New_York</code>, <code>Europe/London</code>, or <code>Asia/Tokyo</code>).</p>
    /// <p>If you don't specify a time zone, UTC is used by default. The time zone affects how cron and at expressions are interpreted, as well as start and expire dates you specify</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>America/New_York</code> - Eastern Time (US)</p></li>
    /// <li>
    /// <p><code>America/Los_Angeles</code> - Pacific Time (US)</p></li>
    /// <li>
    /// <p><code>Europe/London</code> - British Time</p></li>
    /// <li>
    /// <p><code>Asia/Tokyo</code> - Japan Standard Time</p></li>
    /// <li>
    /// <p><code>UTC</code> - Coordinated Universal Time</p></li>
    /// </ul>
    pub timezone: ::std::option::Option<::std::string::String>,
}
impl Schedule {
    /// <p>The schedule expression that defines when the mute rule activates. The expression must be between 1 and 256 characters in length.</p>
    /// <p>You can use one of two expression formats:</p>
    /// <ul>
    /// <li>
    /// <p><b>Cron expressions</b> - For recurring mute windows. Format: <code>cron(Minutes Hours Day-of-month Month Day-of-week)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>cron(0 2 * * *)</code> - Activates daily at 2:00 AM</p></li>
    /// <li>
    /// <p><code>cron(0 2 * * SUN)</code> - Activates every Sunday at 2:00 AM for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 1 1 * *)</code> - Activates on the first day of each month at 1:00 AM for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 18 * * FRI)</code> - Activates every Friday at 6:00 PM</p></li>
    /// <li>
    /// <p><code>cron(0 23 * * *)</code> - Activates every day at 11:00 PM during nightly backup operations</p></li>
    /// </ul>
    /// <p>The characters <code>*</code>, <code>-</code>, and <code>,</code> are supported in all fields. English names can be used for the month (JAN-DEC) and day of week (SUN-SAT) fields.</p></li>
    /// <li>
    /// <p><b>At expressions</b> - For one-time mute windows. Format: <code>at(yyyy-MM-ddThh:mm)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>at(2024-05-10T14:00)</code> - Activates once on May 10, 2024 at 2:00 PM during an active incident response session</p></li>
    /// <li>
    /// <p><code>at(2024-12-23T00:00)</code> - Activates once on December 23, 2024 at midnight during annual company shutdown</p></li>
    /// </ul></li>
    /// </ul>
    pub fn expression(&self) -> ::std::option::Option<&str> {
        self.expression.as_deref()
    }
    /// <p>The length of time that alarms remain muted when the schedule activates. The duration must be between 1 and 50 characters in length.</p>
    /// <p>Specify the duration using ISO 8601 duration format with a minimum of 1 minute (<code>PT1M</code>) and maximum of 15 days (<code>P15D</code>).</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>PT4H</code> - 4 hours for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>P2DT12H</code> - 2 days and 12 hours for weekend muting from Friday 6:00 PM to Monday 6:00 AM</p></li>
    /// <li>
    /// <p><code>PT6H</code> - 6 hours for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>PT2H</code> - 2 hours for nightly backup operations</p></li>
    /// <li>
    /// <p><code>P7D</code> - 7 days for annual company shutdown</p></li>
    /// </ul>
    /// <p>The duration begins when the schedule expression time is reached. For recurring schedules, the duration applies to each occurrence.</p>
    pub fn duration(&self) -> ::std::option::Option<&str> {
        self.duration.as_deref()
    }
    /// <p>The time zone to use when evaluating the schedule expression. The time zone must be between 1 and 50 characters in length.</p>
    /// <p>Specify the time zone using standard timezone identifiers (for example, <code>America/New_York</code>, <code>Europe/London</code>, or <code>Asia/Tokyo</code>).</p>
    /// <p>If you don't specify a time zone, UTC is used by default. The time zone affects how cron and at expressions are interpreted, as well as start and expire dates you specify</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>America/New_York</code> - Eastern Time (US)</p></li>
    /// <li>
    /// <p><code>America/Los_Angeles</code> - Pacific Time (US)</p></li>
    /// <li>
    /// <p><code>Europe/London</code> - British Time</p></li>
    /// <li>
    /// <p><code>Asia/Tokyo</code> - Japan Standard Time</p></li>
    /// <li>
    /// <p><code>UTC</code> - Coordinated Universal Time</p></li>
    /// </ul>
    pub fn timezone(&self) -> ::std::option::Option<&str> {
        self.timezone.as_deref()
    }
}
impl Schedule {
    /// Creates a new builder-style object to manufacture [`Schedule`](crate::types::Schedule).
    pub fn builder() -> crate::types::builders::ScheduleBuilder {
        crate::types::builders::ScheduleBuilder::default()
    }
}

/// A builder for [`Schedule`](crate::types::Schedule).
#[derive(::std::clone::Clone, ::std::cmp::PartialEq, ::std::default::Default, ::std::fmt::Debug)]
#[non_exhaustive]
pub struct ScheduleBuilder {
    pub(crate) expression: ::std::option::Option<::std::string::String>,
    pub(crate) duration: ::std::option::Option<::std::string::String>,
    pub(crate) timezone: ::std::option::Option<::std::string::String>,
}
impl ScheduleBuilder {
    /// <p>The schedule expression that defines when the mute rule activates. The expression must be between 1 and 256 characters in length.</p>
    /// <p>You can use one of two expression formats:</p>
    /// <ul>
    /// <li>
    /// <p><b>Cron expressions</b> - For recurring mute windows. Format: <code>cron(Minutes Hours Day-of-month Month Day-of-week)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>cron(0 2 * * *)</code> - Activates daily at 2:00 AM</p></li>
    /// <li>
    /// <p><code>cron(0 2 * * SUN)</code> - Activates every Sunday at 2:00 AM for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 1 1 * *)</code> - Activates on the first day of each month at 1:00 AM for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 18 * * FRI)</code> - Activates every Friday at 6:00 PM</p></li>
    /// <li>
    /// <p><code>cron(0 23 * * *)</code> - Activates every day at 11:00 PM during nightly backup operations</p></li>
    /// </ul>
    /// <p>The characters <code>*</code>, <code>-</code>, and <code>,</code> are supported in all fields. English names can be used for the month (JAN-DEC) and day of week (SUN-SAT) fields.</p></li>
    /// <li>
    /// <p><b>At expressions</b> - For one-time mute windows. Format: <code>at(yyyy-MM-ddThh:mm)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>at(2024-05-10T14:00)</code> - Activates once on May 10, 2024 at 2:00 PM during an active incident response session</p></li>
    /// <li>
    /// <p><code>at(2024-12-23T00:00)</code> - Activates once on December 23, 2024 at midnight during annual company shutdown</p></li>
    /// </ul></li>
    /// </ul>
    /// This field is required.
    pub fn expression(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.expression = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The schedule expression that defines when the mute rule activates. The expression must be between 1 and 256 characters in length.</p>
    /// <p>You can use one of two expression formats:</p>
    /// <ul>
    /// <li>
    /// <p><b>Cron expressions</b> - For recurring mute windows. Format: <code>cron(Minutes Hours Day-of-month Month Day-of-week)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>cron(0 2 * * *)</code> - Activates daily at 2:00 AM</p></li>
    /// <li>
    /// <p><code>cron(0 2 * * SUN)</code> - Activates every Sunday at 2:00 AM for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 1 1 * *)</code> - Activates on the first day of each month at 1:00 AM for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 18 * * FRI)</code> - Activates every Friday at 6:00 PM</p></li>
    /// <li>
    /// <p><code>cron(0 23 * * *)</code> - Activates every day at 11:00 PM during nightly backup operations</p></li>
    /// </ul>
    /// <p>The characters <code>*</code>, <code>-</code>, and <code>,</code> are supported in all fields. English names can be used for the month (JAN-DEC) and day of week (SUN-SAT) fields.</p></li>
    /// <li>
    /// <p><b>At expressions</b> - For one-time mute windows. Format: <code>at(yyyy-MM-ddThh:mm)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>at(2024-05-10T14:00)</code> - Activates once on May 10, 2024 at 2:00 PM during an active incident response session</p></li>
    /// <li>
    /// <p><code>at(2024-12-23T00:00)</code> - Activates once on December 23, 2024 at midnight during annual company shutdown</p></li>
    /// </ul></li>
    /// </ul>
    pub fn set_expression(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.expression = input;
        self
    }
    /// <p>The schedule expression that defines when the mute rule activates. The expression must be between 1 and 256 characters in length.</p>
    /// <p>You can use one of two expression formats:</p>
    /// <ul>
    /// <li>
    /// <p><b>Cron expressions</b> - For recurring mute windows. Format: <code>cron(Minutes Hours Day-of-month Month Day-of-week)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>cron(0 2 * * *)</code> - Activates daily at 2:00 AM</p></li>
    /// <li>
    /// <p><code>cron(0 2 * * SUN)</code> - Activates every Sunday at 2:00 AM for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 1 1 * *)</code> - Activates on the first day of each month at 1:00 AM for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>cron(0 18 * * FRI)</code> - Activates every Friday at 6:00 PM</p></li>
    /// <li>
    /// <p><code>cron(0 23 * * *)</code> - Activates every day at 11:00 PM during nightly backup operations</p></li>
    /// </ul>
    /// <p>The characters <code>*</code>, <code>-</code>, and <code>,</code> are supported in all fields. English names can be used for the month (JAN-DEC) and day of week (SUN-SAT) fields.</p></li>
    /// <li>
    /// <p><b>At expressions</b> - For one-time mute windows. Format: <code>at(yyyy-MM-ddThh:mm)</code></p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>at(2024-05-10T14:00)</code> - Activates once on May 10, 2024 at 2:00 PM during an active incident response session</p></li>
    /// <li>
    /// <p><code>at(2024-12-23T00:00)</code> - Activates once on December 23, 2024 at midnight during annual company shutdown</p></li>
    /// </ul></li>
    /// </ul>
    pub fn get_expression(&self) -> &::std::option::Option<::std::string::String> {
        &self.expression
    }
    /// <p>The length of time that alarms remain muted when the schedule activates. The duration must be between 1 and 50 characters in length.</p>
    /// <p>Specify the duration using ISO 8601 duration format with a minimum of 1 minute (<code>PT1M</code>) and maximum of 15 days (<code>P15D</code>).</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>PT4H</code> - 4 hours for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>P2DT12H</code> - 2 days and 12 hours for weekend muting from Friday 6:00 PM to Monday 6:00 AM</p></li>
    /// <li>
    /// <p><code>PT6H</code> - 6 hours for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>PT2H</code> - 2 hours for nightly backup operations</p></li>
    /// <li>
    /// <p><code>P7D</code> - 7 days for annual company shutdown</p></li>
    /// </ul>
    /// <p>The duration begins when the schedule expression time is reached. For recurring schedules, the duration applies to each occurrence.</p>
    /// This field is required.
    pub fn duration(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.duration = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The length of time that alarms remain muted when the schedule activates. The duration must be between 1 and 50 characters in length.</p>
    /// <p>Specify the duration using ISO 8601 duration format with a minimum of 1 minute (<code>PT1M</code>) and maximum of 15 days (<code>P15D</code>).</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>PT4H</code> - 4 hours for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>P2DT12H</code> - 2 days and 12 hours for weekend muting from Friday 6:00 PM to Monday 6:00 AM</p></li>
    /// <li>
    /// <p><code>PT6H</code> - 6 hours for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>PT2H</code> - 2 hours for nightly backup operations</p></li>
    /// <li>
    /// <p><code>P7D</code> - 7 days for annual company shutdown</p></li>
    /// </ul>
    /// <p>The duration begins when the schedule expression time is reached. For recurring schedules, the duration applies to each occurrence.</p>
    pub fn set_duration(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.duration = input;
        self
    }
    /// <p>The length of time that alarms remain muted when the schedule activates. The duration must be between 1 and 50 characters in length.</p>
    /// <p>Specify the duration using ISO 8601 duration format with a minimum of 1 minute (<code>PT1M</code>) and maximum of 15 days (<code>P15D</code>).</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>PT4H</code> - 4 hours for weekly system maintenance</p></li>
    /// <li>
    /// <p><code>P2DT12H</code> - 2 days and 12 hours for weekend muting from Friday 6:00 PM to Monday 6:00 AM</p></li>
    /// <li>
    /// <p><code>PT6H</code> - 6 hours for monthly database maintenance</p></li>
    /// <li>
    /// <p><code>PT2H</code> - 2 hours for nightly backup operations</p></li>
    /// <li>
    /// <p><code>P7D</code> - 7 days for annual company shutdown</p></li>
    /// </ul>
    /// <p>The duration begins when the schedule expression time is reached. For recurring schedules, the duration applies to each occurrence.</p>
    pub fn get_duration(&self) -> &::std::option::Option<::std::string::String> {
        &self.duration
    }
    /// <p>The time zone to use when evaluating the schedule expression. The time zone must be between 1 and 50 characters in length.</p>
    /// <p>Specify the time zone using standard timezone identifiers (for example, <code>America/New_York</code>, <code>Europe/London</code>, or <code>Asia/Tokyo</code>).</p>
    /// <p>If you don't specify a time zone, UTC is used by default. The time zone affects how cron and at expressions are interpreted, as well as start and expire dates you specify</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>America/New_York</code> - Eastern Time (US)</p></li>
    /// <li>
    /// <p><code>America/Los_Angeles</code> - Pacific Time (US)</p></li>
    /// <li>
    /// <p><code>Europe/London</code> - British Time</p></li>
    /// <li>
    /// <p><code>Asia/Tokyo</code> - Japan Standard Time</p></li>
    /// <li>
    /// <p><code>UTC</code> - Coordinated Universal Time</p></li>
    /// </ul>
    pub fn timezone(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.timezone = ::std::option::Option::Some(input.into());
        self
    }
    /// <p>The time zone to use when evaluating the schedule expression. The time zone must be between 1 and 50 characters in length.</p>
    /// <p>Specify the time zone using standard timezone identifiers (for example, <code>America/New_York</code>, <code>Europe/London</code>, or <code>Asia/Tokyo</code>).</p>
    /// <p>If you don't specify a time zone, UTC is used by default. The time zone affects how cron and at expressions are interpreted, as well as start and expire dates you specify</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>America/New_York</code> - Eastern Time (US)</p></li>
    /// <li>
    /// <p><code>America/Los_Angeles</code> - Pacific Time (US)</p></li>
    /// <li>
    /// <p><code>Europe/London</code> - British Time</p></li>
    /// <li>
    /// <p><code>Asia/Tokyo</code> - Japan Standard Time</p></li>
    /// <li>
    /// <p><code>UTC</code> - Coordinated Universal Time</p></li>
    /// </ul>
    pub fn set_timezone(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.timezone = input;
        self
    }
    /// <p>The time zone to use when evaluating the schedule expression. The time zone must be between 1 and 50 characters in length.</p>
    /// <p>Specify the time zone using standard timezone identifiers (for example, <code>America/New_York</code>, <code>Europe/London</code>, or <code>Asia/Tokyo</code>).</p>
    /// <p>If you don't specify a time zone, UTC is used by default. The time zone affects how cron and at expressions are interpreted, as well as start and expire dates you specify</p>
    /// <p>Examples:</p>
    /// <ul>
    /// <li>
    /// <p><code>America/New_York</code> - Eastern Time (US)</p></li>
    /// <li>
    /// <p><code>America/Los_Angeles</code> - Pacific Time (US)</p></li>
    /// <li>
    /// <p><code>Europe/London</code> - British Time</p></li>
    /// <li>
    /// <p><code>Asia/Tokyo</code> - Japan Standard Time</p></li>
    /// <li>
    /// <p><code>UTC</code> - Coordinated Universal Time</p></li>
    /// </ul>
    pub fn get_timezone(&self) -> &::std::option::Option<::std::string::String> {
        &self.timezone
    }
    /// Consumes the builder and constructs a [`Schedule`](crate::types::Schedule).
    pub fn build(self) -> crate::types::Schedule {
        crate::types::Schedule {
            expression: self.expression,
            duration: self.duration,
            timezone: self.timezone,
        }
    }
}