AWSの利用料金を自動で取得してDr.Sum EAで集計・レポートしてみる

Avatar
dstn


皆さまこんにちは。アプレッソ開発部の佐々木です。

今回は、DataSpiderを使ってAWSの利用料金のデータを取得して、そのデータをDr.Sum EAで集計、レポートする処理を作ってみたいと思います。

 

Programmatic Access


クラウドサービスを使っていると、今どれだけ利用料金がかかっているか確認したくなりますよね。

AWSでは「Account Activity」の画面から確認できますが、それ以外でも「Billing Alerts」を使って
利用料金の監視を行い閾値を超えたら通知するみたいな便利な機能があります。

弊社でもAWSと連携できるアダプタ(EC2、S3、RDS、SimpleDB)があり、それらを開発・保守するときに接続したり、新サービスの連携検証やデモ、テストでEC2のインスタンスを立てたりで、かなりAWSのお世話になっています。

そんな状況の中、AWSの利用料金データをDataSpiderで取得して管理したいなーと思って探してみたら「Programmatic Access」という機能があったのでちょっと調べてみました。

「Programmatic Access」とは、AWSの利用料金データにプログラムからアクセス可能にするもので、この機能を有効にすると利用料金データがS3に保存されるようになります。

S3に保存されたデータはDataSpiderの「Amazon S3アダプタ」を使って取得することができます。したがって、自分の好きなタイミングでS3にアクセスして利用料金データを取得し、自分の好きな形式でレポートを参照することができるようになります。

今回は、S3に保存されている利用料金データの取得、取得したデータの集計、集計結果のメール送信という一連の処理をDataSpiderでやってみたいと思います。

 

Amazon S3から利用料金データの取得


ということで、早速DataSpiderのAmazon S3アダプタを使って、利用料金データを取得してみます。

まずは、利用料金データが出力されているバケットの中身を見てみます。
以下の通り、2013年4月の利用料金データが出力されていることが確認できます。

aws_s3_1

このデータをDataSpiderで取得してみます。

Amazon S3アダプタの設定は以下の通りになります。[ファイル/フォルダ名]にはバケット内にある取得対象のファイル名を指定します。2013年4月の利用料金データのファイル名は「929191530957-aws-billing-csv-2013-04.csv」ですが、このファイル名を指定すると翌月にはまたファイル名を指定し直すことになりスクリプトの改修が必要になります。そのようなメンテナンスを不要にするため、ここでは「*.csv」というようにワイルドカードを指定して拡張子が「.csv」のファイルを取得するという設定をしています。
amazon_s3_get

この設定で完了してスクリプトの処理フローを引いてスクリプトを実行します。

script_1

スクリプトの処理が成功すれば、以下の通り利用料金のデータがファイルとしてダウンロードされます。

explorer_1

これでAmazon S3から利用料金データが取得できることができました。

 

利用料金データをDr.Sum EAに書き込む


S3から取得した利用料金データはCSV形式になっているのでテキストエディタやExcelで開けば目視可能ですが、今回はよりリッチなレポートにしてみたいので「Dr.Sum EA」を使ってみます。

Dr.Sum EAはウイングアーク社のBIツールで、高速なデータの検索、集計を実現するデータベースエンジンを搭載しています。DataSpiderはDr.Sum EAと連携する「Dr.Sum EAアダプタ」があるので、このアダプタを使ってDr.Sum EAデータベースエンジンにデータを書き込むことが可能です。

利用料金データをDr.Sum EAデータベースエンジンに書き込むまでの処理をDataSpiderのスクリプトで作成します。スクリプトのイメージは以下のようになります。

script_2

上記スクリプトでは、Amazon S3から取得したCSVファイルを読み取ってDr.Sum EAデータベースエンジンにデータを格納する処理を行なっています。その際に、日ごとの利用料金を算出しています。AWSの利用料金データは現在までの合計値になっているので、日ごとにかかった利用料金は前日との差分で算出する必要があります。

これでDr.Sum EAデータベースエンジンにデータを格納することができました。次に、Dr.Sum EA Datalizerを使って利用料金の集計、レポートを行なってみます。

 

利用料金データの集計、レポート


Dr.Sum EA DatalizerはDr.Sum EAデータベースエンジンに蓄積されたデータを分析、集計して、その結果をレポーティングしてくれる機能があり、集計結果はDr.Sum EA Datalizerの画面からExcel形式やPDF形式のファイルとして出力することも可能です。DataSpiderではスクリプト上でDr.Sum EA Datalizerと接続するアダプタがあり、Dr.Sum EA Datalizer上にある定義ファイルを指定して集計実行要求を送信し、その結果をファイルでダウンロードすることができます。これにより、Dr.Sum EA Datalizerからの集計結果をダウンロードして、後続の処理でそのファイルを参照させる(今回のケースではメール送信時に添付させる)という処理の自動化が実現可能です。

今回は以下のような集計レポートを考えています。

●1日ごとの利用料金がわかる
●製品(サービス)ごとに利用料金がわかる
●各日、各サービスごとに利用料金が集計される
●合計の利用料金が集計される

このような集計レポートを得られる定義ファイルをあらかじめDr.Sum EA Datalizerに作成します。定義ファイルを作成して試しにDr.Sum EA Datalizerの画面で集計、レポートしてみると以下のようになります。

sum_datalizer_3

上記のように、1日ごとに各サービスの利用料金が出力され、それらが集計されていることが確認できました。

では、DataSpiderでもこのような集計結果をダウンロードできるように処理を作成します。
以下はDataSpider側の設定画面で、Dr.Sum EA Datalizer側に作成した定義ファイル[appresso_billing]の集計結果をExcelファイルでダウンロードするという設定内容になります。

datalizer_get_data_config

この設定をした処理のアイコンを、以下のように先ほど作成したスクリプトの最後に追加してみます。

script_4

スクリプトを実行すると、以下のようにDr.Sum EA Datalizerから利用料金のデータが集計され、レポートファイルがExcel形式のファイルでダウンロードされます。

datalizer_excel_3

これでDataSpiderでもAWSの利用料金を取得して集計・レポートすることができました!

 

利用料金レポートのメール送信とS3から利用料金データの削除


最後に「レポートファイルをメール送信する処理」と「Amazon S3から利用料金データを削除する処理」を追加してスクリプトは完成です。
スクリプトに2つの処理を追加する箇所は以下になります。

script_3

メール送信後、S3にあるデータを削除することでストレージ自体の利用量を管理することが可能です。

このスクリプトをDataSpiderのスケジュールトリガーを使って、日次、週次、月次で実行すれば、AWSの利用料金のレポートが指定したスケジュールでメール通知されるようになります。

 

最後に


今回は一つのAWSアカウントのみ考慮したスクリプトを作成しましたが、社内で部署単位、組織単位などで複数アカウントを持っているところも多いと思います。その場合でもこのスクリプトを拡張して各アカウントごとに利用料金を集計することが可能だと思います。

また、今回はDr.Sum EAを使ったデータの格納、集計、レポートを行なってみましたが、このようなツールをお持ちでない方はまずはお手元にあるデータベースやExcel等で試してみてはいかがでしょうか。

今回のような煩雑になりがちな作業の効率化、自動化にはぜひDataSpiderをご活用ください。

コメント

ログインしてコメントを残してください。

Powered by Zendesk