[アップデート] Amazon EventBridge で Amazon QuickSight でのアセット操作関係のイベントが拾えるようになり、QuickSight でもイベントドリブンな自動処理を実装しやすくなりました

[アップデート] Amazon EventBridge で Amazon QuickSight でのアセット操作関係のイベントが拾えるようになり、QuickSight でもイベントドリブンな自動処理を実装しやすくなりました

Clock Icon2023.11.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

いわさです。

先日のアップデートで Amazon QuickSight が EventBridge 経由でのアセットイベントをサポートしたとアナウンスされました。

QuickSight は色々とまだ AWS の基本的な部分に統合されきっていない部分があるのですが、EventBridge もサポートされていなかったのですね。
従来から CloudTrail イベントは少し出力されていたはずなので、EventBridge で拾えなくもなかったと思いますが、今回専用のイベントが発行されるようになったのでより統合しやすくなるのではないでしょうか。

本記事ではイベント発生の様子を見ながらユースケースを少し考えてみましたので紹介したいと思います。

サポートされているイベント

Amazon EventBridge のサンプルイベントを確認してみたところ、既に QuickSight 関係のイベントが実装済みでした。

注意したい点として、本日時点では以下のイベントのみがサポートされています。データソース・データセットやユーザー・グループなどは含まれていないので認識しておきましょう。
個人的にはユーザーが自動プロビジョニングされたら特定グループに追加、みたいなのを自動化したいので EventBridge でもサポートされるとやりやすいかもしれません。でも、CloudTrail イベントを拾えばどうにかなりそうな気もしています。

  • Dashboard
    • Create
    • Update
    • Publish
    • Delete
  • Analysis
    • Create
    • Delete
  • VPC connection
    • Create
    • Update
    • Delete
  • Folder
    • Create
    • Update
    • Delete
    • Membership update

イベントを発生させてみる

ここでは次のようなイベントパターンを設定してみました。
QuickSight で分析の作成に成功したときのイベントです。

アクションは Lambda でも SNS でも何でも良いので、ペイロードをログ出力させるようにしておきましょう。
今回は Lambda でconsole.log()しました。

イベントルールが作成出来たら、QuickSight で適当な分析を新規作成してみます。

作成後に、Lambda 関数のログを確認してみると、対象イベントによって Lambda 関数がトリガーされており、次のようなイベント情報を受信していることが確認出来ました。

{
  version: '0',
  id: 'b65c2cb5-89fe-581a-49f8-de2254df137e',
  'detail-type': 'QuickSight Analysis Creation Successful',
  source: 'aws.quicksight',
  account: '123456789012',
  time: '2023-11-25T21:26:16Z',
  region: 'ap-northeast-1',
  resources: [
    'arn:aws:quicksight:ap-northeast-1:123456789012:analysis/7f3facb6-3e99-4946-a794-4f9a3d2c90ff'
  ],
  detail: { analysisId: '7f3facb6-3e99-4946-a794-4f9a3d2c90ff' }
}

受信出来る情報としては前述の対象イベント一覧ごとに少し違うので詳細はドキュメントを確認する必要がありますが、だいたいはアセットの ID が取得出来るくらいのものです。

そのため、ここから更に詳細な情報が必要であれば QuickSight API 経由でアセット ID からアセット定義などにアクセスする必要があります。QuickSight で API の自動処理を構築するのであれば、アセット ID があれば十分な気もしますけども。

ユースケースを考える

バックアップ&レプリケーション

ユースケースについては公式ブログでもレプリケーションとバックアップについて言及されています。

背景として、QuickSight は少し前に次のエクスポート API が実装され、アセットを S3 バケットにエクスポートすることが出来るようになりました。

これによって、従来は難しかったアセットのバックアップや、マルチリージョンでのダッシュボード提供がしやすくなりました。
実際は関連アセットをどこまで展開するかや権限の問題などいくつかの課題を解決しなければいけないので、API 一発でポン!みたいな感じではないのですが、「技術的には可能です」という状態となりました。

ただし、イベントトリガーでこのエクスポート API を使うというよりも、ワンショットや定期的な実行という使い方が多く、RPO を考慮する必要があったり、あるいは更新がないのに冗長なスナップショットをストレージに作成し続けていることもありました。

今回実装された EventBridge を使うことで必要なタイミングで無駄なくバックアップやレプリケーションがしやすくなります。

アセット間連携の自動処理

バックアップとレプリケーション以外で思いついたところだと、一部タスクの自動化を実装出来るかなと思いました。

例えば分析を削除した時に関連するダッシュボードも自動削除するとか、あとはダッシュボードが作成されたタイミングで何かしらのルールに従って特定フォルダにリソースを展開する、などでしょうか。

普段分析やダッシュボードなどを作成したタイミングでお決まりのように実行している手順があれば自動化したいところです。
私の場合だと分析を更新したタイミングでダッシュボード共有も毎回行うので自動化したいところなのですが、どうやら分析は Update イベントがないようです。

共有フォルダを使わずに、作成したアセットをグループやユーザーに共有するような自動化は出来そうですね。

さいごに

本日は Amazon EventBridge で Amazon QuickSight でのアセット操作関係のイベントが拾えるようになり、イベントベースの自動化処理が実装出来るようになったので実際にルールを構成してペイロード内容を確認したり、ユースケースを少し考えてみました。

全てのアセットイベントがサポートされているわけではないのですが、特にコンテンツのレプリケーションやバックアップに関しては実施タイミングを最適化出来そうです。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.