こんにちは。Kaneyasuです。
本記事はAmazon Managed GrafanaのAPIによる操作を書いています。
本記事のゴールは、ユーザー認証にAWS IAM Identity Centerを用いたAmazon Managed Grafanaに対し、Amazon Timestreamを指定したデータソースを設定するのを自動化するところまでです。
なお、本記事ではCloudFormationテンプレートのことをCFnと略しています。
データソースの設定の自動化はCFnでは難しい
Amazon Managed GrafanaはAmazon Timestreamなど、さまざまなDBをデータソースとして、可視化が可能です。
Amazon Managed Grafanaの起動=ワークスペースの作成まではCloudFormationテンプレートで行えます。
ですが、できるのはワークスペースの作成までで、データソースの設定はまではできないようです。
よくよく見るとDataSources
というプロパティがありますが、サンプルの記述がとても少ないので、正解がわかりません。
CFnでできるのはワークスペースの作成までと考えた方がよさそうです。
Grafanaは、ワークスペースを作った後、本格的な利用までに、データソースやダッシュボードの作成をしなければなりません。
これらを全て手動で行うのは少々手間なので、自動化を目指して別の手段を考えます。
Grafana HTTP APIならできる!
Amazon Managed Grafanaというより、GrafanaそのものにHTTP API機能があります。
データソースに関するAPIもあるので、このAPIに対してPOSTリクエストを発生させれば、一発でデータソースを作成することができます。
試したところ、これがAmazon Managed Grafanaでも使えることがわかりました。
Amazon Managed Grafanaも、ワークスペースを作成するとURLが発行されます。
このURLをベースにして、Grafana HTTP APIを叩けば、APIの利用が可能です。
ワークスペースの作成まではCFnでできるので、その後の作業をGrafana HTTP APIでやればよいと考えることができます。
APIを利用するには認証を通す必要があります。
認証をそのまま突破するのではなくて、APIトークンを利用する方が楽です。
APIトークンはGrafanaにログイン後、画面から取得することができます。
Grafana コンソールのサイドメニューで、設定 (歯車) アイコンを一時停止し、API キーを選択します。
問題はこれはGrafanaのAPIなので、このAPIドキュメントには、データソースにTimestreamを指定する方法が見当たらないことです。
Timestreamをデータソースに指定するシェル
当然ですが、Grafana HTTP APIにはGETもあります。
データソースであれば、GETでAPIを叩けば、その設定内容がJSONで返ってきます。
これを利用して、一度手動でTimestreamを指定したデータソースを作り、その内容をGETで取得。
それをベースに、データソースのPOSTリクエスト用のJSONを作れば、自動化を実現することができます。
完成させたシェルがこちらです。
ワークスペースのURLとAPIトークンはハードコーディングを避けるため外だしファイルにしています。
他の設定にも応用はできるか?
手動で作ってからGETのAPIを叩いてJSONを得て、それをベースに新規作成目的のPOST用JSONを作るやり方は他にも転用が効くと思います。
しかし、ダッシュボードに限っては、HTTP APIでは細かいところまでフォローされてないので、エクスポート・インポートを活用した方がよさそうです。
ダッシュボードのエクスポート・インポートは、別記事で書いたのでこちらをご覧ください。