[アップデート]Amazon Connect オペレーション時間のオーバーライドがAWS CLIでサポートされたため、祝日のみ営業時間外に設定してみた

[アップデート]Amazon Connect オペレーション時間のオーバーライドがAWS CLIでサポートされたため、祝日のみ営業時間外に設定してみた

Clock Icon2024.12.17

Amazon Connect アドベントカレンダー 2024、19日目の記事です!

クラスメソッドとギークフィードさん、クラウドビルダーズさん、ネットプロテクションズさん、AWS Japanさんの有志が募ってチャレンジしている企画になります。

(アドベントカレンダーのカレンダー一覧はこちら↓)

https://qiita.com/advent-calendar/2024/amazon-connect

はじめに

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

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

今回、AWS CLIでもオーバーライドが設定できるようになりました。

https://awsapichanges.com/archive/changes/fb7fcb-connect.html

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

AWS CLIを使用して、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	休日

AWS CLIを最新バージョンにする

今回は、AWS CloudShellで実行しますので、AWS CLIを最新バージョンにします。

$ aws --version

aws-cli/2.22.12 Python/3.12.6 Linux/6.1.115-126.197.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

$ curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"

$ unzip awscliv2.zip

$ sudo ./aws/install --update

$ aws --version
aws-cli/2.22.18 Python/3.12.6 Linux/6.1.115-126.197.amzn2023.x86_64 exec-env/CloudShell exe/x86_64.amzn.2023

AWS CLIが最新バージョンにアップデートされたことを確認しました。

オペレーション時間とオーバーライド設定追加

次に、24時間365日営業のオペレーション時間を作成します。インスタンスIDは、各自設定を変更ください。

$ aws connect create-hours-of-operation \
  --instance-id インスタンスID \
  --name "[CLI 24/7 Operation with Holiday Override" \
  --description "24 hours operation with specific holiday schedules" \
  --time-zone "Asia/Tokyo" \
  --config '[
    {"Day": "SUNDAY", "StartTime": {"Hours": 0, "Minutes": 0}, "EndTime": {"Hours": 0, "Minutes": 0}},
    {"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}}
  ]'

~出力結果~
{
    "HoursOfOperationId": "945ad13c-65d4-4a2d-bbff-043b297866ef",
    "HoursOfOperationArn": "arn:aws:connect:ap-northeast-1:123456789012:instance/インスタンスID/operating-hours/945ad13c-65d4-4a2d-bbff-043b297866ef"
}

HoursOfOperationIdは利用しますので、コピーします。

以下のコマンドで日本の祝日は終日営業時間外とするオーバーライドが設定できます。

INSTANCE_IDHOURS_OF_OPERATION_IDは、各自設定を変更ください。

$ bash << 'EOF'
INSTANCE_ID="インスタンスID"
HOURS_OF_OPERATION_ID="945ad13c-65d4-4a2d-bbff-043b297866ef"

success_count=0
failure_count=0
total_count=0

# 日付と祝日名を配列として定義
dates=(
    "2025-01-01|New Year's Day"
    "2025-01-13|Coming of Age Day"
    "2025-02-11|National Foundation Day"
    "2025-02-23|Emperor's Birthday"
    "2025-02-24|Transfer Holiday for Emperor's Birthday"
    "2025-03-20|Vernal Equinox Day"
    "2025-04-29|Showa Day"
    "2025-05-03|Constitution Memorial Day"
    "2025-05-04|Greenery Day"
    "2025-05-05|Children's Day"
    "2025-05-06|Transfer Holiday for Children's Day"
    "2025-07-21|Marine Day"
    "2025-08-11|Mountain Day"
    "2025-09-15|Respect for the Aged Day"
    "2025-09-23|Autumnal Equinox Day"
    "2025-10-13|Sports Day"
    "2025-11-03|Culture Day"
    "2025-11-23|Labor Thanksgiving Day"
    "2025-11-24|Transfer Holiday for Labor Thanksgiving Day"
)

echo "Starting to set holiday overrides..."
echo "Total holidays to process: ${#dates[@]}"
echo "----------------------------------------"

for entry in "${dates[@]}"; do
    date="${entry%%|*}"
    holiday_name="${entry#*|}"
    ((total_count++))

    echo "Processing $total_count/${#dates[@]}: $date - ${holiday_name}"

    aws connect create-hours-of-operation-override \
        --instance-id "$INSTANCE_ID" \
        --hours-of-operation-id "$HOURS_OF_OPERATION_ID" \
        --name "$holiday_name" \
        --description "Closed for Holiday" \
        --config "[]" \
        --effective-from "$date" \
        --effective-till "$date"

    if [ $? -eq 0 ]; then
        ((success_count++))
        echo "✓ Successfully set override for $date"
    else
        ((failure_count++))
        echo "✗ Failed to set override for $date"
    fi

    echo "----------------------------------------"
done

echo "Process completed!"
echo "Summary:"
echo "Total processed: $total_count"
echo "Successful: $success_count"
echo "Failed: $failure_count"
EOF

出力結果は以下の通りです

Starting to set holiday overrides...
Total holidays to process: 19
----------------------------------------
Processing 1/19: 2025-01-01 - New Year's Day
{
    "HoursOfOperationOverrideId": "f104befd-0a82-4c4b-a9a4-3607570cacca"
}
✓ Successfully set override for 2025-01-01
----------------------------------------
Processing 2/19: 2025-01-13 - Coming of Age Day
{
    "HoursOfOperationOverrideId": "ca1bf1de-de30-4e0d-93e3-fe56eda7542d"
}
✓ Successfully set override for 2025-01-13
----------------------------------------
Processing 3/19: 2025-02-11 - National Foundation Day
{
    "HoursOfOperationOverrideId": "c56f7111-a88f-455c-ae13-fc3ea7b354cb"
}
✓ Successfully set override for 2025-02-11
----------------------------------------
Processing 4/19: 2025-02-23 - Emperor's Birthday
{
    "HoursOfOperationOverrideId": "d3dbb3bb-7d5d-44e3-b2e7-9b24888e4b08"
}
✓ Successfully set override for 2025-02-23
----------------------------------------
Processing 5/19: 2025-02-24 - Transfer Holiday for Emperor's Birthday
{
    "HoursOfOperationOverrideId": "55562bb7-9955-4e18-af48-ed2457120907"
}
✓ Successfully set override for 2025-02-24
----------------------------------------
Processing 6/19: 2025-03-20 - Vernal Equinox Day
{
    "HoursOfOperationOverrideId": "234d8e5f-e8e5-49d9-a9cf-af51e4c587f4"
}
✓ Successfully set override for 2025-03-20
----------------------------------------
Processing 7/19: 2025-04-29 - Showa Day
{
    "HoursOfOperationOverrideId": "35d7a4e7-c96b-4849-ab1c-14622b7799ca"
}
✓ Successfully set override for 2025-04-29
----------------------------------------
Processing 8/19: 2025-05-03 - Constitution Memorial Day
{
    "HoursOfOperationOverrideId": "1f1d9db5-cd04-4a96-b2cb-a1e6d42b0f15"
}
✓ Successfully set override for 2025-05-03
----------------------------------------
Processing 9/19: 2025-05-04 - Greenery Day
{
    "HoursOfOperationOverrideId": "98ed2454-cb4c-444e-8014-3d22d9ce700f"
}
✓ Successfully set override for 2025-05-04
----------------------------------------
Processing 10/19: 2025-05-05 - Children's Day
{
    "HoursOfOperationOverrideId": "8896ef81-ad80-46a5-ac3b-7b56384a79a5"
}
✓ Successfully set override for 2025-05-05
----------------------------------------
Processing 11/19: 2025-05-06 - Transfer Holiday for Children's Day
{
    "HoursOfOperationOverrideId": "0fd94451-d012-4a1d-ad79-37ee237fa656"
}
✓ Successfully set override for 2025-05-06
----------------------------------------
Processing 12/19: 2025-07-21 - Marine Day
{
    "HoursOfOperationOverrideId": "65d9480c-da75-4a6d-a510-e02011cfdd88"
}
✓ Successfully set override for 2025-07-21
----------------------------------------
Processing 13/19: 2025-08-11 - Mountain Day
{
    "HoursOfOperationOverrideId": "961e7b3e-2115-45fb-b52e-5d17fc54c3f7"
}
✓ Successfully set override for 2025-08-11
----------------------------------------
Processing 14/19: 2025-09-15 - Respect for the Aged Day
{
    "HoursOfOperationOverrideId": "90a630ac-8133-4c69-b18b-200edf3b0848"
}
✓ Successfully set override for 2025-09-15
----------------------------------------
Processing 15/19: 2025-09-23 - Autumnal Equinox Day
{
    "HoursOfOperationOverrideId": "49437022-377f-4cf3-83e6-07316ab7ce13"
}
✓ Successfully set override for 2025-09-23
----------------------------------------
Processing 16/19: 2025-10-13 - Sports Day
{
    "HoursOfOperationOverrideId": "5ad43a8b-808e-46ad-92e4-bbef78faae4c"
}
✓ Successfully set override for 2025-10-13
----------------------------------------
Processing 17/19: 2025-11-03 - Culture Day
{
    "HoursOfOperationOverrideId": "bec16f56-b8e8-4395-a825-d933f0e1880d"
}
✓ Successfully set override for 2025-11-03
----------------------------------------
Processing 18/19: 2025-11-23 - Labor Thanksgiving Day
{
    "HoursOfOperationOverrideId": "874b29ab-ca73-46b3-a2e5-2b16c94e4c29"
}
✓ Successfully set override for 2025-11-23
----------------------------------------
Processing 19/19: 2025-11-24 - Transfer Holiday for Labor Thanksgiving Day
{
    "HoursOfOperationOverrideId": "46fb28e4-ef0d-46e2-9125-475dd7d61218"
}
✓ Successfully set override for 2025-11-24
----------------------------------------
Process completed!
Summary:
Total processed: 19
Successful: 19
Failed: 0

各祝日がオーバーライド設定されていることを確認できます。
なお、コマンドの実行結果(出力)は日付順に表示されますが、Amazon Connectのコンソールではオーバーライド設定が日付順に表示されない仕様となっています。

cm-hirai-screenshot 2024-12-17 7.58.42

ちなみに、過去の日付に対してはオーバーライド設定を作成することができません。

$ aws connect create-hours-of-operation-override \
  --instance-id インスタンスID \
  --hours-of-operation-id 945ad13c-65d4-4a2d-bbff-043b297866ef \
  --name "New Year's Day 2024" \
  --description "Closed for New Year's Day" \
  --config "[]" \
  --effective-from "2024-01-01" \
  --effective-till "2024-01-01"

~出力結果~
An error occurred (InvalidRequestException) when calling the CreateHoursOfOperationOverride operation: Expired EffectiveFrom or EffectiveTil

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.