AWS SDK for Python を使用してAmazon Connectの祝日判定(オーバーライド)に祝日を設定してみた
こんにちは。
繁松です。
はじめに
AWS SDK for Python (Boto3) を使用して、Amazon Connectのオペレーション時間オーバーライド設定に祝日を設定する方法を考えてみました。
祝日データは「国民の祝日:日本」のAPIを利用します。
やってみた
前提
- Amazon Connectインスタンスは構築済み
- オペレーション時間は作成済
- boto3のバージョンは最新バージョン
各種の確認方法
インスタンスID
- コンソールから確認
AWSコンソールからAmazon Connectを開き、アカウント概要のInstance ARNの「instance/」以降の文字列がインスタンスIDです。
- AWS CLIで確認
以下のコマンドで確認できます。
aws connect list-instances
オペレーション時間ID
- コンソールから確認
Amazon Connectの管理コンソールからオペレーション時間を開きます。
対象のオペレーション時間のARNをコピーしたものを確認すると「operating-hours/」以降の文字列がオペレーション時間IDです。
- AWS CLIで確認
以下のコマンドで確認できます。
aws connect list-hours-of-operations --instance-id インスタンスID
コード
インスタンスIDとオペレーション時間IDを指定します。
「国民の祝日:日本」から取得した祝日の情報を整形します。
過去の日付を登録することはできないので今日以降の祝日のみ設定します。
祝日名は重複させることができないので「20xx-祝日名」の形式で設定します。
import boto3
from datetime import datetime
import requests
def get_holiday_data():
# 祝日データのURLから取得
url = "https://holidays-jp.github.io/api/v1/date.csv"
response = requests.get(url)
return response.text
def holiday_override(instance_id, hours_of_operation_id):
# Amazon Connect クライアントの初期化
client = boto3.client('connect')
today = datetime.now().date()
# 祝日データの取得
holiday_csv = get_holiday_data()
# CSVデータの処理
for line in holiday_csv.splitlines():
date_str, name = line.split(',')
# 過去の日時は設定できないのでスキップ
holiday_date = datetime.strptime(date_str, '%Y-%m-%d').date()
if holiday_date >= today:
try:
year = date_str[:4]
response = client.create_hours_of_operation_override(
InstanceId=instance_id,
HoursOfOperationId=hours_of_operation_id,
Name=f"{year}-{name}",
Config=[ ],
EffectiveFrom=date_str,
EffectiveTill=date_str
)
print(f"Created override for {name} on {date_str}")
except Exception as e:
print(f"Error for {name}{date_str} : {str(e)}")
# Amazon Connect の設定
instance_id = 'インスタンスID'
hours_of_operation_id = 'オペレーション時間ID'
# 関数の呼び出し
holiday_override(instance_id, hours_of_operation_id)
動作確認
- 実行前
オーバーライドに登録されている祝日はありません。
- 実行後
オーバーライドに祝日が設定されています。
以上、Amazon Connectの祝日設定についてのブログでした。