Amazon QuickSightを使用してCost and Usage Report(CUR)を可視化してみた

Amazon QuickSightを使用してCost and Usage Report(CUR)を可視化してみました。データソースとしてAthenaのビューを作成しています。
2019.10.23

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

こんにちは。サービスグループの武田です。

先日のエントリでAWS Cost and Usage Report(CUR)をAthenaでクエリできるようにしてみました。

Cost and Usage Report(CUR)のマニフェストファイルを使用してAmazon Athenaのテーブルを作成する

ところで、AWSにはAmazon QuickSightというマネージドなBIサービスがあります。これを使えばCURの可視化も簡単なのでは?ということで実際にやってみました。

QuickSightを使用するのは今回がはじめてだったので、料金体系についても調べました。結論からいえば、「一人で」「1GB以下のデータ」であれば無料で使えるようです。詳しくはirbbbのエントリを参照ください。

Amazon QuickSightの試用期間・無料枠はどこまで適用される?

QuickSightにインポートする準備

QuickSightを使い始める前に、少し下準備が必要です。QuickSightにデータをインポートする方法はいくつか選択肢があります。今回はAthenaをデータソースにしてみました。

出力されたCURからAthenaのテーブルを作成するには、前述したエントリと同様スクリプトを使用します。

TAKEDA-Takashi/athena-create-table-cur: S3に保存されているCURマニフェストファイルからAthenaテーブル作成用のDDLを出力する。

ただ、このスクリプトで作成したテーブルをデータソースにすると少し問題があります。それは料金情報など数値データであってもすべて文字列型となっているため、QuickSightにインポートした後うまく集計ができません。そのため型変換を済ませたAthenaのビューを使用します。具体的にはスクリプトを実行する際に-vのオプションを付与してください。これでテーブルおよびビューが作成されます。

$ pipenv run python main.py -m s3://cm-cur-123456789012/CUR/Hourly/cur_hourly/20191001-20191101/cur_hourly-Manifest.json athena -o s3://aws-athena-query-results-123456789012-ap-northeast-1 -v

QuickSightを使ってみた

それでは実際にQuickSightを使用していきます。私のアカウントではサインアップをしたことがなかったため、マネジメントコンソールからQuickSightにアクセスするとサインアップを求められました。[Sign up for QuickSight]を押下します。

次にプランを選択します。前述したように「一人で」「1GB以下のデータ」であればどちらのプランでも無料で試せます。好きなプランを選択してください。

QuickSight リージョンを東京にしたところ、UIも日本語に変わりました。アカウント名やメールアドレスは自分の環境に合わせて設定してください。

同じ画面の下部にパーミッションの設定があります。とりあえずチェックを全部抜いてしまいましたが、初期設定のまま で大丈夫でした。また後からでも変更はできますので、自由に選んで問題ありません(私は後でAthenaを許可しました)。

入力値に問題がなければサインアップ完了です。[Amazon QuickSight に移動する]を押下すると移動します。

QuickSightの画面に遷移したら、CURのデータをインポートしましょう。左上の[新しい分析]を押下します。

左上の[新しいデータセット]を押下します。

新規データソースの一覧から Athena を選択します。

データソース名の入力が求められます。好きな名前で結構ですが、今回はcurとしてみました。

Athenaのテーブル(とビュー)一覧が表示されます。前述したようにここでテーブルを選んでしまうとデータが文字列型となってしまい、数値の集計がうまくできません(やりようはあるかもですが)。そのため、型変換ができているビューを選択します。ここではv_cur_20191001_20191101を選択しました。

インポートの確認画面です。[Visualize]を押下します。

しばらく待っているとインポートが完了します。今回は36318行でスキップは0件でした。

インポートが終われば後は好きに可視化してください。たとえばサービスごとに利用費の合計を出すなんてことも簡単にできます。

まとめ

実は最初、文字列のまま集計しようとして、なぜか合計値がQuickSightで出せないといった初歩的なところでつまずいていました。回り道はありましたが、最終的にはきちんとグラフが出せてよかったです。ぜひみなさんもCURを可視化して費用最適化などに利用してみてください。