[アップデート] Amazon QuickSight ダッシュボード内容のメール送信方法に新たに API からの実行が可能になりました
Amazon QuickSight レポーティング機能に新たに API 経由でメール送信を実行できるようになりました。 レポーティング機能はダッシュボードの内容を外部へメール送信できる機能です。ダッシュボードの内容を添付ファイルもでき、PDF 形式または、ページ分割レポートに課金している場合は Excel, CSV 形式でファイル添付できます。
なにができるようになったのか
従来のメール送信方法は以下の 2 つでした。
- 事前設定した日時での自動送信(定期送信も可能)
- QuickSight ダッシュボードからの手動送信
今回のアップデートで、AWS CLI や AWS SDK を使用した API 経由で事前に設定済みのスケジュール(メール送信)の実行が可能になりました。 これにより外部からの操作でダッシュボードの分析結果をメール送信ができるようになりました。
やってみた
AWS CLI と Python(Boto3)を使用して実際に試してみましょう。
前提条件
API 経由でメール送信を行うには、事前にスケジュールを作成しておく必要があります。API からのメール送信時にメールの宛先や、添付ファイルの有無などの設定の変更はできません。
ダッシュボード ID 確認
メール送信スケジュールを設定したダッシュボード ID を確認します。
export AWS_ACCOUNT_ID=123456789012
aws quicksight list-dashboards --aws-account-id $AWS_ACCOUNT_ID | jq '.DashboardSummaryList[] | {DashboardId, Name}'
{
"DashboardId": "020acbd8-4a51-4300-b67a-6144379a1912",
"Name": "ダッシュボード2"
}
{
"DashboardId": "2271d8af-e9c8-4480-bc27-c7ef88cf35ef",
"Name": "メールテストダッシュボード"
}
{
"DashboardId": "f83a938f-9e7d-4f80-87d4-35d8d17a5520",
"Name": "ダッシュボード1"
}
以下の記事もご参考ください。
スケジュール ID 確認
スケジュール ID は現在 QuickSight のダッシュボードから確認する方法しか提供されていません。
The ID of the schedule that you want to start a snapshot job schedule for. The schedule ID can be found in the Amazon QuickSight console in the Schedules pane of the dashboard that the schedule is configured for.
start-dashboard-snapshot-job-schedule — AWS CLI 1.35.9 Command Reference
ダッシュボードからスケジュールを開き、表示される ID を控えます。
AWS CLI で実行してみる
aws quicksight start-dashboard-snapshot-job-schedule
コマンドを実行します。
export AWS_ACCOUNT_ID="123456789012"
export QS_DASHBOARD_ID="2271d8af-e9c8-4480-bc27-c7ef88cf35ef"
export QS_SCHEDULE_ID="bd782f50-0633-4ade-bbb5-fe0651750882"
aws quicksight start-dashboard-snapshot-job-schedule \
--aws-account-id $AWS_ACCOUNT_ID \
--dashboard-id $QS_DASHBOARD_ID \
--schedule-id $QS_SCHEDULE_ID
{
"Status": 200,
"RequestId": "6c9c5d4e-ed8c-438e-8817-5421d6f85a29"
}
設定されたメールアドレスへメールが届きます。
Boto3 で実行してみる
以下のスクリプトを実行してみました。
import boto3
import os
from botocore.exceptions import ClientError
def start_dashboard_snapshot_job_schedule():
# 事前に確認が必要なパラメータ
dashboard_id = "2271d8af-e9c8-4480-bc27-c7ef88cf35ef"
schedule_id = "bd782f50-0633-4ade-bbb5-fe0651750882"
# 環境変数からAWSアカウントIDを取得
aws_account_id = os.environ.get('AWS_ACCOUNT_ID')
if not aws_account_id:
print("Error: AWS_ACCOUNT_ID environment variable is not set.")
return
# QuickSightクライアントの作成
quicksight = boto3.client('quicksight')
# パラメータ設定
schedule_params = {
'AwsAccountId': aws_account_id,
'DashboardId': dashboard_id,
'ScheduleId': schedule_id
}
try:
# メール送信実行
response = quicksight.start_dashboard_snapshot_job_schedule(**schedule_params)
print(response)
except ClientError as e:
print(f"An error occurred: {e}")
if __name__ == "__main__":
start_dashboard_snapshot_job_schedule()
{'ResponseMetadata': {'RequestId': '307ef729-67c1-47b7-9292-570a75e4b041', 'HTTPStatusCode': 200, 'HTTPHeaders': {'date': 'Sat, 19 Oct 2024 05:57:27 GMT', 'content-type': 'application/json', 'content-length': '52', 'connection': 'keep-alive', 'x-amzn-requestid': '307ef729-67c1-47b7-9292-570a75e4b041'}, 'RetryAttempts': 0}, 'Status': 200, 'RequestId': '307ef729-67c1-47b7-9292-570a75e4b041'}
メールの受信を確認できました。
まとめ
Amazon QuickSight のレポーティング機能が API に対応したことでいろいろと応用できるのではないでしょうか。
- 外部アプリケーションからのメール送信実行
- イベント駆動型のレポート配信
- データ分析結果の柔軟な共有方法など
おわりに
QuickSight の分析結果を別システムで使うなら定期実行の設定を外部でコントロールするのもありかもしれないなと思いました。