[アップデート]Amazon Connect オペレーション時間のオーバーライドがAWS CLIでサポートされたため、祝日のみ営業時間外に設定してみた
Amazon Connect アドベントカレンダー 2024、19日目の記事です!
クラスメソッドとギークフィードさん、クラウドビルダーズさん、ネットプロテクションズさん、AWS Japanさんの有志が募ってチャレンジしている企画になります。
(アドベントカレンダーのカレンダー一覧はこちら↓)
はじめに
前回の記事では、Amazon Connectのオペレーション時間にオーバーライド設定が実装され、オペレーション時間のみで祝日判定が可能になったことを紹介しました。
今回、AWS CLIでもオーバーライドが設定できるようになりました。
AWS CLIを使用して、2025年度の日本の祝日を終日営業時間外とするオペレーション時間を作成してみます。
日本の祝日は、内閣府の「国民の祝日」についてのページに記載されています。
以下の日付を祝日として判定します。
国民の祝日・休日月日 国民の祝日・休日名称
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_ID
とHOURS_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のコンソールではオーバーライド設定が日付順に表示されない仕様となっています。
ちなみに、過去の日付に対してはオーバーライド設定を作成することができません。
$ 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