AWS Cost ExplorerのデータをRedshiftに統合してLookerで可視化する



## 概要
AWSを利用する上でコストを分析することは、コスト削減のために重要です。
AWS Cost ExplorerはAWSのコストに関する情報を取得することができるサービスであり、コスト分析に対する強力なツールとなります。
例えば、他のサービスの使用状況やコストについての情報と組み合わせて、グラフを作成することは分析に効果的です。
しかし、新しくデータが増える度にデータをダウンロードして最新の状態にし、グラフを作り直すのは手間がかかる作業です。
そこで今回は、[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)という分析基盤向けデータ統合サービスを使い、レポート取得の自動化＋DWHへの統合＋可視化までやってみようと思います。

今回、データの転送手段として採用した[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)は、AWS Cost Explorerの他にも、様々な広告・CRM・DBなどのデータソースに対応しています。
[troccoの使い方まとめ（CRM・広告・データベース他）](https://qiita.com/hiro_koba_jp/items/2b2caa040804e402bda7)
![aws->redshift.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/3b437b7b-0617-3cad-6a0b-1794e9f77cc9.png)

## ゴール
↓画像のようにグラフをまとめたものを30分くらいで作り上げます（作成後は自動で最新値に更新することも可能です）
![完成ボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/34524949-a33a-f679-d7b5-f8bfb214f59c.png)

## こんな人におすすめ
* AWS Cost Explorerを利用しており、分析基盤やデータウェアハウスへのデータ移行を考えている方
* 様々なサービス利用に関する情報をまとめてひとつのサービスで管理したい方
* 管理画面からデータ取得を行う作業に疲れている方

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

* Amazon Redshift
* Google BigQuery
* MySQLやPostgreSQL

今回はAmazon Redshiftを利用することにします。

### 1-2. AWS Cost ExplorerのデータをAmazon Redshiftに転送する4つの方法
Amazon Redshiftにデータを集約することが決まったので、続いては転送するための手段を検討します。
**1.** AWS Cost Explorerのデータを管理画面からダウンロードし、手動でAmazon Redshiftにアップロードする
**2.** AWS Cost ExplorerとAmazon Redshiftの各APIを用いて、プログラムを書いて連携する
**3.** Embulkを利用し、自分で環境を構築する
**4.** [trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)を利用し、画面上で設定する

**1**は単発の実行であれば問題はありませんが、定期的な取り込みを行うことを考えると毎回同じ作業を繰り返すことになり、手間と時間が取られます。
**2**は連携を始める前にAPIのキャッチアップ+プログラムを書く+環境構築の時間がかかり、エラー対応などの運用工数も継続的に発生します。
**3**も**2**と同じくEmbulkはある程度の専門知識が必要になり、自分で環境構築・運用を行うため、手間が発生します。加えてエラーの内容が少し専門的なためエラーの解消に時間が取られる可能性があります。
そこで今回はEmbulkの課題も解決し、プログラムを書かずに画面上の設定のみで作業が完結する、**4**の[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)というSaaSを利用します。

## 2. troccoでAWS Cost Explorer→Redshiftの転送自動化
### 2-0. 事前準備
データの転送のためには[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)のアカウント・AWSのアカウントが必要です。
無料トライアルを実施しているので、事前に申し込み・登録しておいてください！
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)
（申込の際に、この記事を見た旨を記載して頂ければご案内がスムーズに行えます）
### 2-1. 転送元・転送先を決定
[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)にアクセスして、ダッシュボードから「転送設定を作成」のボタンを押します。
<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」を指定し、転送先に「Redshift」を選択して転送設定作成ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/3503b666-6000-1c3e-ba00-0def249ebb3c.png)

すると、設定画面になるので、必要な情報を入力していきます。
### 2-2. AWS Cost Explorerとの連携設定
あとで見たときに自分で分かるように転送設定の名前とメモを入力します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/2e8a670e-1fd5-6227-91f3-483936378cf3.png)
次に「転送元の設定」内の「接続情報を追加」ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/e14c419d-18b3-5d24-5aaf-30fd0fe00da9.png)
別タブで接続情報の新規作成画面が開きますので、必要事項を記入して保存ボタンを押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/d224deff-6136-1fd6-60e4-1100f7c61e9e.png)

再度転送設定画面に戻り、接続情報の「再読込」ボタンを押すと、先ほど作成した接続情報が選択できるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/423febcb-59be-5631-2f37-3ddab7c89cf3.png)
これでAWS Cost Explorerとの連携は完了です。

### 2-3. AWS Cost Explorerからのデータ抽出設定
次に、どのようなデータを取得するかを設定していきます。
ここではUnblededCostのデータを取得してみます。
指標で「UnblededCost」を指定し、データ取得期間を指定します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/82d2d326-623c-5640-41c8-ed68be57ff1b.png)

### 2-4. 転送先Redshiftの設定
転送元と同様に設定していきます。
転送先とするデータベース名、スキーマ、テーブルを設定します。
また、一時的にデータを保存するS3バケットとプレフィックスを指定してください。
最後に転送モードを選択します。insertとすることでテーブルにデータを追加することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/6c8fc3b9-0634-883b-e231-5186386cdd18.png)
これで入力は完了です。「保存して自動データ設定・プレビューへ」をクリックし、確認作業に進みましょう。

### 2-5. データのプレビュー
少し待つと、転送元のデータがプレビューされます。ここではAWS Cost Explorerから取り込んだデータが表示されています。
![プレビュー画面.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/2b92ea0f-3bef-d053-36b4-611c7947e4d1.png)
転送したいデータが取れているので、このまま「確認画面へ」で次に進みます。
次の画面では転送設定の内容確認を行うので、設定の確認が終了したら右下の「適用」のボタンを押します。

### 2-6. スケジュール・通知設定
「スケジュール・トリガー設定」タブを開きます。
![転送設定_スケジュールトリガー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/73a87a39-d6b7-7cac-5d26-bbfa969e46a3.png)
「スケジュールを追加」ボタンを押すと、以下の画像のような入力欄が出てきます。ここで実行スケジュールを設定することで、転送を定期的に実行し自動化することが出来ます。
![転送設定詳細_スケジュール登録.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/6797b464-f5f8-d9ff-5fc5-cae8bbca58aa.png)

### 2-7. データ転送ジョブの実行
設定は以上です。最後に、手動で転送ジョブを実行し、Redshiftにデータを送ります。
手動で実行する場合はジョブ詳細画面の「実行」ボタンを押します。
![転送設定_転送実行.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/17f68c41-17af-d8bc-dc9b-68df9cb076ad.png)
これで転送は完了です！

## 3. Redshiftの設定
特に設定することありません。データが転送されているので、今すぐに分析・可視化を行うことが出来ます。
データがきちんと送られているかをプレビューで確認してみます。
![Redshift_preview.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/ee3b2df9-16f4-f898-7df5-1f300a50d32f.png)
転送されていることが確認できました！
## 4. Lookerで可視化
それでは、これらのデータをLookerで可視化していきます。  
まずはRedshiftとLookerを接続の設定を行います。
管理タブを開いて「Database」の「Connections」を開きます。
![貼り付けた画像_2020_11_02_16_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/1c49b7cb-6134-5b40-b443-6c6eb80301a4.png)

接続しているデータベース一覧が表示されています。ここで「Add Connection」→「Database Connection」から接続するデータベース情報を入力します。
![貼り付けた画像_2020_11_02_16_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/758e541a-32d6-3c71-1f25-39a8083f46bb.png)

![貼り付けた画像_2020_11_02_16_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/820f9990-216b-52d5-b436-51de296832f4.png)

Redshiftのデータベースに接続できたら、次はデータを可視化するために必要なLookMLプロジェクトを作成していきます。

開発タブを開いて「LookMLプロジェクトの管理」に移動します。
![貼り付けた画像_2020_11_02_16_09.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/53220d80-d1c7-34a2-64d3-6a503c9e0726.png)

「New LookML Project」から新しいLookMLプロジェクトを作成します。
![貼り付けた画像_2020_11_02_15_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/0c186535-04b5-4578-aa37-148ae49f3a7d.png)
![looker_New_Project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/082f560e-4e54-0738-33f5-0f3fe364de66.png)

「Create Project」を押したら、エディタでmodelとviewを定義します。
後々必要になるので、modelの中ではexploreを設定しておきましょう。
(書き方が分からない場合はLookerの[公式ドキュメント](https://docs.looker.com/ja/data-modeling/getting-started/model-development#adding_a_new_view_from_an_existing_database_table)を参照してください)
![looker_model.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/e891c6dc-c553-f59b-dbf2-31b859238763.png)

![looker_view.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/8a55611d-72f0-d1cb-6cad-8c0597787aab.png)


これでグラフを作る準備が整いました。
トップページに戻って「New」からDashboardを作成します。
![貼り付けた画像_2020_11_02_16_18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/673168/cf8f2f71-b374-ba31-0d65-7cad45ce2068.png)

白紙のダッシュボードができました。ここに各種グラフを追加していきます。まず「Dashboardの編集」を押します。
![dashboardの編集.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/97704d36-4bb9-456c-5be4-5384337856eb.png)
続いて、「タイルの追加」を押して、新しいグラフを作成していきます。
![タイルの追加.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/a1f198eb-deec-ff09-ca88-80cb7a4df094.png)



先ほどのmodel内で定義したExploreを選択します。
![explorerを選択.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/9ed06e2d-bf9b-fc40-07aa-9f1421430585.png)

DIMENSIONSにグラフの横軸に表示したいデータ、MEASURESにグラフの縦軸に表示したいデータを設定し、Tileに表示したいデータをプロットします。ここでは日毎のコストをまとめてみます。
![tileを作成.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/5daf0cb2-5179-f8d1-32bf-21128201c842.png)


これで一つTileが完成しました。この調子で他のTileも作成すると、今回のゴールであるAWS Cost Explorerのデータダッシュボードが出来上がります。
![tile完成2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/3df6b258-a8e2-38a9-b4af-27901294b373.png)
![完成ボード.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/697569/ff53709f-b55f-9d12-4e58-5672158187a3.png)

## まとめ
いかがでしたでしょうか。[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)を使うとAWS Cost Explorerの管理画面を触ることなく、簡単にデータを取得し、DWH(Redshift)に貯めることが出来ます。
Redshiftにデータを貯めると、Lookerと連携することでデータを使ってグラフを作り、可視化できます。
実際に弊社サービスの[trocco](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)においても、マーケティングKPI等をこのような流れで収集・分析しています。
ぜひ広告データ分析の際にはご活用ください。
[https://trocco.io/lp/index.html](https://trocco.io/lp/index.html?utm_medium=social&utm_source=qiita&utm_campaign=aws_cost_explorer_to_redshift)

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

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