AWS Cost ExplorerのデータをBigQueryに自動同期し、Googleデータポータル(旧Data Studio)で可視化する

## 概要
AWS Cost Explorerを使うことでどんなサービスにコストがかかっているとか、誰がたくさん使っているかをチェックすることができます。しかし、絶えず集められるデータをその都度データマートに統合し、最新の状態に保つのには多くの工数を要します。そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)という分析基盤向けデータ統合サービスを使い、AWS Cost Explorerデータの抽出自動化＋DWH（データウェアハウス）への統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)は、AWS Cost Explorerの他にも、様々な広告・CRM・DBなどのデータソースにも対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![AWSCostExplorer→bigQuery.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/7adae69c-a6d6-2e84-9f47-3ef64cd6a029.png)




## ゴール
↓画像の赤枠のデータから
![AWS Cost Explorer testデータ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d139d8c8-2e9c-1976-0237-04ba957172cf.png)



↓画像のようなグラフをを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
![テータ可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/e48b4a41-78c2-e023-06d8-d51213fbed15.png)




## こんな人におすすめ
・AWS Cost Explorerに備わっている機能以外の分析をしたい
・AWSにかかるコストを自動的に分析できるようにしたい
・AWS Cost Explorerをデータ元として利用したい

## 1. DWHと同期する手段の選定
### 1-1. DWHの選定
まずはデータを集約する場所である、DWH（データウェアハウス）を選定します。

* Amazon Redshift
* Google BigQuery
* MySQLやPostgreSQL

今回はGoogle BigQueryを利用することにします。

### 1-2. AWS Cost ExplorerのデータをGoogle BigQueryに転送する４つの方法
Google BigQueryにデータを集約することが決まったので、続いては転送するための手段を検討します。

1. CSV形式でエクスポートしたAWS Cost Explorerのデータを直接Google BigQueryにインポートする
1. BigQuery データコネクタであるコネクテッド シートを使用する（ただしGsuiteのプランがEnterprise以上である必要がある）
1.  [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)を利用し、画面上の設定のみで転送する。

１は単発の分析でしたら可能ですが、集めたデータをその都度更新し続けるのは手間がかかります。
２の方法ではGoogle BigQueryを操作するGoogleアカウントがデータ元となるスプレッドシートに対して閲覧以上の権限を有する必要があります。

今回は自動での更新が可能で、一度Googleアカウントとの連携を行えば設定を保存して異なる分析にも使い回せる３の[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)を利用してみたいと思います。

## 2. troccoでAWS Cost Explorer→Google BigQueryの転送自動化
### 2-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)のアカウント・Googleアカウントが必要です。

無料トライアルを実施しているので、事前に申し込み・登録しておいてください！
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)
（申込の際に、この記事を見た旨を記載して頂ければご案内がスムーズに行えます）

Googleアカウントに関しては、Google BigQueryとGoogleデータポータルは同じアカウントで運用したほうが接続が簡単だと思います。

### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<img width="1792" alt="qiita_20200827_2.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/098f74e5-a834-6b9f-0ea2-2b9c592a6169.png">



転送元に「AWS Cost Explorer」を指定し、転送先に「Google BigQuery」を選択して転送設定作成ボタンを押します。
![転送設定の新規作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4ca5fb7b-5379-d7db-01ca-f525b0dda5b1.png)


すると、設定画面になるので、必要な情報を入力していきます。
### 2-2. AWS Cost Explorerとの連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![転送設定の新規作成　.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/1efa7310-9a00-acb1-f54e-f71b4e0cf025.png)

次に「転送元AWS Cost Explorerの設定」内の「接続情報を追加」ボタンを押します。
![接続情報を追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/be2285cb-1bc5-7e45-c7fe-19c1b53bed93.png)




別のタブでAWS Cost Explorerの接続情報の新規作成画面が開きます。
接続情報を作成するためにAWSアクセスキーIDとAWSシークレットアクセスキーが必要になります。

![AWS 接続情報作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/834ab3fe-52bb-8dad-9e1b-efe4cfaea1d4.png)


接続確認を行って問題がなければ保存します。再度転送設定画面に戻り、接続情報の「接続情報を読み込む」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。

![接続情報選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/a5586706-7dab-aeb2-3d32-86e3bb53ecfb.png)


### 2-3. AWS Cost Explorerからのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。
今回は以下のようなシートから合計コストと日付に関するデータを取得してみます。
![AWS Cost Explorer testデータ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/321d7fe4-0681-5668-b41b-93b8267bfb86.png)

必要なデータを入力していきます。
今回指標は「AmortizedCost:リザーブインスタンスの料金を、課金した日に一気に支払ったとして計算するのではなく、日割り計算で算出した金額」を選択します。
![転送元の設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9447017d-dff8-bd30-6797-51f45fcd2eff.png)


### 2-4. 転送先Google BigQueryの設定
転送元と同様に設定していきます。Google BigQueryに関してはGoogleアカウントとの連携が必要です。（事前に転送先となるデータセットとテーブルを作成しておいてください。）
![Googleアカウント連携.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/0bb3d4f1-188c-f9b4-1e2d-023684ce65d3.png)
![BigQuery接続情報作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/683df5ea-e4df-008b-b4c7-6b2d1c6364c1.png)





転送先とするデータセット名、テーブルを設定します。

![転送先BigQuery.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/29c4bb4d-9217-badd-b338-a2c95c9825f6.png)


これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。

### 2-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではAWS Cost Explorerから取り込んだデータが表示されています。
![データプレビュー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/6c25e238-2fc6-c677-a3a3-51b5dc4c25ad.png)




転送したいデータが取れているので、設定を完了します。
転送設定の一覧から作成した設定を選び「スケジュール・通知設定」に進みます。

### 2-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。

![転送設定概要.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/cd9730a3-2113-45e9-035a-2c3b15ec2efa.png)


「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![新規スケジュール.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/9878a2a4-e05f-6b79-b7c6-a33c05afa8b7.png)



### 2-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Google BigQueryにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/dbae95bb-af86-d4de-dace-c3b7daa56ca3.png)



これで転送は完了です！

## 3. Google BigQueryの設定
特に設定することはありません。設定で選択したテーブルにデータが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかをプレビューで確認してみます。
![BigQuery転送確認.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/664aad58-7ac6-317c-6bb4-30b128dcf411.png)


転送されていることが確認できました！
## 4. Googleデータポータルで可視化
それでは、これらのデータをGoogleデータポータルで可視化していきます。  
まずはGoogle BigQueryとGoogleデータポータルの接続設定を行います。
Googleデータポータルを開いて、新規のレポートを作成します。
![Qiitaテスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d5dcbc10-c011-9904-aeeb-e9a2081beae2.png)

「データを追加」のボタンを押し、データ元の選択肢からGoogle BigQueryを選択します。
![BigQuery選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/854d5b3a-1ff5-a6cb-c9ce-41064f9ee0d8.png)


転送に使用したプロジェクト、データセット、表（テーブル）を選択し、追加します。
![データのレポートへの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/4ef5f2c7-2cf7-3080-dc2b-feeb1f19e6d4.png)



データベースに接続できたら、右側の設定を変更し、必要な情報を表示させます。
後で作成する棒グラフにおいて、「ディメンション」が横軸、「指標」が縦軸に対応します。


![データポータル反映.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/80c497cc-2b36-8e09-942c-87a0e4292ad8.png)


最後に右上のグラフ一覧から目的に合ったグラフの形を選択します。
今回は閲覧数の比較をするため、棒グラフを選択します。


![テータ可視化.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1121252/d79fb5a5-8138-7922-1d53-2b231f0cd6b4.png)






## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)を使うと、絶えず更新されるAWS Cost Explorerのデータでも自動でGoogle BigQueryにまとめていくことができるほか、100万規模の大きなデータからそうではない小さなデータまで複雑なコーディングをせず[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)の画面上の設定のみでデータの転送が可能になります。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)

実際に試してみたい場合は、[無料トライアル](https://trocco.io/inquiry_trial/new?utm_medium=social&utm_source=qiita&utm_campaign=costexplorer_to_bigquery)を実施しているので、この機会にぜひ一度お試しください。（申込時に、この記事を見た旨を記載して頂ければスムーズにご案内することができます）

その他にも広告やデータベースなど、様々な分析データをETL・転送した事例をまとめました。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)