こんにちは。hacknoteのr.katoです。
以前、aws cliでCloudWatchからグラフを取得でaws cliを使ったcloud watchのメトリクスのグラフ画像保存を紹介していました。
今回はboto3とpythonを使って再現してみたので紹介していきます。
コード
次のコードを実行すればカレントディレクトリに指定したグラフのPNGファイルが保存されます。
widget
でどのグラフをどのように保存するか指定し、boto3のclientのcloudwatchにあるget_metric_widget_image
を使って、
グラフ画像のバイナリデータを取得しています。
そして、io.BytesIO
とImage.open
とsave
を使って、バイナリデータをPNGとして保存しています。
widget
はawsコンソールのCloudWatchのメトリクスにアクセスし、
プロットしたいグラフをプロットし、表示期間など設定後に
ソースを表示し、イメージAPIをクリックした後、そのままコピーした物を使えばOKです。
今回は、プログラム実行時の31日前からのEC2のNetworkOutのグラフ画像が欲しかったのでwidgetのmetricsがこのようになっています。
また、timezoneで日本時間を指定することでグラフの横軸を日本時間にしています。
実際に取得したグラフ画像
このような形で取得することができました!