Amazon Connectオペレーション時間でオーバーライドを利用し、祝日のみ営業時間外とする設定をAWS CloudFormationで作成してみた

Amazon Connectオペレーション時間でオーバーライドを利用し、祝日のみ営業時間外とする設定をAWS CloudFormationで作成してみた

Clock Icon2024.12.05

はじめに

前回の記事では、Amazon Connectのオペレーション時間にオーバーライド設定が実装され、オペレーション時間のみで祝日判定が可能になったことを紹介しました。

https://dev.classmethod.jp/articles/amazon-connect-operating-hours-holiday-update/

今回は、AWS CloudFormationを使用して、2025年度の日本の祝日を終日営業時間外とするオペレーション時間を作成してみます。

日本の祝日は、内閣府の「国民の祝日」についてのページに情報が記載されています。

https://www8.cao.go.jp/chosei/shukujitsu/gaiyou.html
以下の日付を祝日として判定します。

国民の祝日・休日月日	国民の祝日・休日名称
2025/1/1	元日
2025/1/13	成人の日
2025/2/11	建国記念の日
2025/2/23	天皇誕生日
2025/2/24	休日
2025/3/20	春分の日
2025/4/29	昭和の日
2025/5/3	憲法記念日
2025/5/4	みどりの日
2025/5/5	こどもの日
2025/5/6	休日
2025/7/21	海の日
2025/8/11	山の日
2025/9/15	敬老の日
2025/9/23	秋分の日
2025/10/13	スポーツの日
2025/11/3	文化の日
2025/11/23	勤労感謝の日
2025/11/24	休日

なお、2026年の国民の祝日は、2025年2月に掲載される予定です。

試してみる

以下のテンプレートを利用します。
テンプレート内容は以下のとおりです。

  • オペレーション時間名:24/7 Operation with Holiday Override
  • タイムゾーン:Asia/Tokyo
  • 営業時間:24時間365日(祝日を除く)
    • オーバーライド:日本の祝日は終日営業時間外
AWSTemplateFormatVersion: '2010-09-09'
Description: 24/7 Hours of Operation with holiday override for Amazon Connect

Parameters:
  ConnectInstanceId:
    Type: String
    Description: The ID of the Amazon Connect instance

Resources:
  ConnectHoursOfOperation:
    Type: AWS::Connect::HoursOfOperation
    Properties:
      Name: 24/7 Operation with Holiday Override
      Description: 24 hours operation with specific holiday schedules
      InstanceArn: !Sub arn:aws:connect:${AWS::Region}:${AWS::AccountId}:instance/${ConnectInstanceId}
      TimeZone: Asia/Tokyo
      Config:
        - Day: MONDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: TUESDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: WEDNESDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: THURSDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: FRIDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: SATURDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
        - Day: SUNDAY
          StartTime:
            Hours: 0
            Minutes: 0
          EndTime:
            Hours: 0
            Minutes: 0
      HoursOfOperationOverrides:
        - EffectiveFrom: "2025-01-01"
          EffectiveTill: "2025-01-01"
          OverrideName: New Year's Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-01-13"
          EffectiveTill: "2025-01-13"
          OverrideName: Coming of Age Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-02-11"
          EffectiveTill: "2025-02-11"
          OverrideName: National Foundation Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-02-23"
          EffectiveTill: "2025-02-23"
          OverrideName: Emperor's Birthday
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-02-24"
          EffectiveTill: "2025-02-24"
          OverrideName: Transfer Holiday for Emperor's Birthday
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-03-20"
          EffectiveTill: "2025-03-20"
          OverrideName: Vernal Equinox Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-04-29"
          EffectiveTill: "2025-04-29"
          OverrideName: Showa Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-05-03"
          EffectiveTill: "2025-05-03"
          OverrideName: Constitution Memorial Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-05-04"
          EffectiveTill: "2025-05-04"
          OverrideName: Greenery Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-05-05"
          EffectiveTill: "2025-05-05"
          OverrideName: Children's Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-05-06"
          EffectiveTill: "2025-05-06"
          OverrideName: Transfer Holiday for Children's Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-07-21"
          EffectiveTill: "2025-07-21"
          OverrideName: Marine Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-08-11"
          EffectiveTill: "2025-08-11"
          OverrideName: Mountain Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-09-15"
          EffectiveTill: "2025-09-15"
          OverrideName: Respect for the Aged Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-09-23"
          EffectiveTill: "2025-09-23"
          OverrideName: Autumnal Equinox Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-10-13"
          EffectiveTill: "2025-10-13"
          OverrideName: Sports Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-11-03"
          EffectiveTill: "2025-11-03"
          OverrideName: Culture Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-11-23"
          EffectiveTill: "2025-11-23"
          OverrideName: Labor Thanksgiving Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-11-24"
          EffectiveTill: "2025-11-24"
          OverrideName: Transfer Holiday for Labor Thanksgiving Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []

https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-connect-hoursofoperation-hoursofoperationoverride.html

上記のテンプレートを使用して、CloudFormationでスタックを作成します。
パラメータには、ConnectのインスタンスIDを入力します。インスタンスARNではない点に注意してください。

cm-hirai-screenshot 2024-12-05 11.01.46

スタック作成後、オペレーション時間を確認すると、祝日はオーバーライドされて、終日営業時間外にすることができました。

cm-hirai-screenshot 2024-12-05 11.28.15

cm-hirai-screenshot 2024-12-05 11.28.22

祝日の日付が昇順や降順に並んでいない点が惜しいですね。気になる方はAWSにフィードバックを送ることを検討ください。

オーバーライドを時間指定する場合

今回は、オーバーライドで祝日を終日営業時間外としましたが、終日ではなく時間を指定することも可能です。
テンプレートは以下のとおりです。

~中略~
Resources:
  ConnectHoursOfOperation:
    Type: AWS::Connect::HoursOfOperation
    Properties:
~中略~
      HoursOfOperationOverrides:
        # 1/1は終日営業時間外
        - EffectiveFrom: "2025-01-01"
          EffectiveTill: "2025-01-01"
          OverrideName: New Year's Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []

        # 1/1は9:00-17:00のみ営業時間内
        - EffectiveFrom: "2025-01-01"
          EffectiveTill: "2025-01-01"
          OverrideName: New Year's Day
          OverrideDescription: Limited hours 9:00-17:00
          OverrideConfig:
            - Day: WEDNESDAY
              StartTime:
                Hours: 9
                Minutes: 0
              EndTime:
                Hours: 17
                Minutes: 0

スタック作成時エラー

過去の日付を指定してオーバーライドできません。
テンプレートで過去の日付を指定すると、スタックで以下のエラーが表示されます。

Resource handler returned message: “Expired EffectiveFrom or EffectiveTill date

~中略~
      HoursOfOperationOverrides:
        - EffectiveFrom: "2024-01-01"
          EffectiveTill: "2024-01-01"
          OverrideName: New Year's Day
          OverrideDescription: Closed for Holiday
          OverrideConfig: []

また、オーバーライド名は重複できません。
たとえば、テンプレートでオーバーライド名を「Holiday」として複数作成すると、スタックで以下のエラーが表示されます。

Resource handler returned message: “An hour of operation override with name Holiday already exists in Amazon Connect

~中略~
        - EffectiveFrom: "2025-01-01"
          EffectiveTill: "2025-01-01"
          OverrideName: Holiday
          OverrideDescription: Closed for Holiday
          OverrideConfig: []
        - EffectiveFrom: "2025-01-13"
          EffectiveTill: "2025-01-13"
          OverrideName: Holiday
          OverrideDescription: Closed for Holiday

AWS CLIはまだ未サポート

現時点では、AWS CLIを使用してオペレーション時間のオーバーライドを行うことはできません。
AWS CLIを最新バージョンに更新し、aws connect create-hours-of-operation helpコマンドで確認しましたが、オーバーライド機能は見当たりませんでした。

https://awscli.amazonaws.com/v2/documentation/api/latest/reference/connect/create-hours-of-operation.html

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.