2
1

Amazon Managed Grafanaでデータソースの設定の自動化はCFnでは難しいけどAPIならできる

Last updated at Posted at 2023-12-10

こんにちは。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では細かいところまでフォローされてないので、エクスポート・インポートを活用した方がよさそうです。

ダッシュボードのエクスポート・インポートは、別記事で書いたのでこちらをご覧ください。

2
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1