troccoを使ってAWS Cost ExploreからBigQueryへデータ連携する

今回troccoというSaaSを使って、AWS Cost Exploreの情報をBigQueryへ連携する方法について紹介します。

フリーランスでの案件獲得のため、下記の記事を元に実施して見ました。
これらの記事ではtroccoとAWS,GCPを接続する際のAWS,GCP側の設定についての記載が少なかったので、ここではそれらに焦点を当てて説明いたします。
https://blog.trocco.io/case-study/aws-cost-explorer_to_bigquery_to_dataportal
https://qiita.com/hiro_koba_jp/items/a7620585cd7e53ed42d5


### AWS Cost Explore　→　trocco　→　BigQuery

というようにデータの連携を行いますが、そのために必要な手順は以下の通りです。

[手順]
１、AWSにおいてCost Exploreの権限を持つユーザーを作成し、アクセスキーを設定
２、GCPにおいてBigQueryへのデータ転送を行うAPIキーを発行
３、troccoにおいて１・２の接続情報を元にデータ連携フローを作成
４、作成したデータ連携フローを実行

[事前準備] ※詳細省略
・awsのアカウントを作成
・GCPのアカウントを作成
・troccoの無料プランを申込み(https://trocco.io/lp/index.html)

なおawsとgcpのアカウント作成にはクレジットカードが必要となります。
ただしtroccoの無料プランはクレジットカード不要で、申請後1日以内で利用可能となりました！

### １、AWSにおいてCost Exploreの権限を持つユーザーを作成し、アクセスキーを設定
AWSにおいてCost Exploreの権限を持つユーザーを作成し、アクセスキーを設定しました。
今回はaccess-cost-exploreというユーザーを作成し、ViewBillingというカスタムポリシーを作成・アタッチしました。

![Screenshot from 2024-01-25 12-46-19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/9b2d835c-a6a3-2f97-747c-1925bf9625f9.png)

ViewBillingは下記の内容で、Cost Explore関連の情報を参照できる権限を設定しております。
```json:ViewBilling
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ce:Get*",
                "ce:Describe*",
                "ce:List*",
                "ce:GetCostAndUsage",
                "account:GetAccountInformation",
                "billing:Get*",
                "payments:List*",
                "payments:Get*",
                "tax:List*",
                "tax:```Get*",
                "consolidatedbilling:Get*",
                "consolidatedbilling:List*",
                "invoicing:List*",
                "invoicing:Get*",
                "cur:Get*",
                "cur:Validate*",
                "freetier:Get*"
            ],
            "Resource": "*"
        }
    ]
}
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/232d65f6-68ff-2a4d-0b15-0a4a618e94e3.png)



### ２、GCPにおいてBigQueryへのデータ転送を行うAPIキーを発行

GCPにて、適当なプロジェクトを作成後、APIキーを発行します。
APIキーではAPI制限をして「BigQuery API」「BigQuery Data Transfer API」の２つを許可しています。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/27c5e409-ed01-1f99-5d50-c845b6d8be88.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/79336608-ed66-299b-169e-8a26fa63bf06.png)


### ３、troccoにおいて１・２の接続情報を元にデータ連携フローを作成
データ連携フローの作成については、冒頭で紹介したリンクの記事に詳しい記載があります。
ここでは詳細は省略しますが、簡単な流れとしては、左のメニューから「接続情報」で1と2で作成した情報を使用して接続定義を作成し、次にメニューの「データ転送」で簡単にデータ統合フローが作成できます。

![Screenshot from 2024-01-25 14-44-39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/6beb9269-2e88-5381-c0e4-bccf63d51446.png)

### ４、作成したデータ連携フローを実行

データ転送のフロー作成が完了すると、このようにフローの詳細が表示されます。
右上の「実行」押下すると処理が実行され、BigQuery側にテーブルが作成されました。

![Screenshot from 2024-01-25 13-13-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/40901ae1-7050-9713-cd47-eb26ae89ccf2.png)

処理後に「costexplore_trocco1」テーブルが作成されていることを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3328060/33e43bde-cfe3-6ac2-43b7-735af86387ad.png)


今回の記事は以上です。次回は取得したデータをGCPのサービスと組み合わせてグラフ化などを行う予定です。