Cloud Functionsで、GCSにアップロードしたCSVデータをBigQueryに読み込む

GCP
Nishipy
AWSしか触ったことのない私が、最近GCP(Google Cloud Platform)を使う機会があったのでメモします。Cloud Functionsのチュートリアルとしてご覧ください。

1. やりたいこと

  • Cloud Storageにデータをアップロード
  • データアップロードをトリガーとしてCloud Functions起動
  • Cloud Functionsにより、データをBigQueryにインポート

2. 予備知識の復習

一般的なクラウドサービスについては、↓の記事にも書いています。

知っていて当然?XaaSで打線を組んでみた
NishipyXaaSで打線組んでみた。異議は、Twitter(@iamnishipy)までどうぞ!!1. はじめに巷にあふれるXaaS。X as a Serviceの略です。ここで言うXは、たぶん数学とかによく出てくるあの...

Cloud Storage

オブジェクトストレージのクラウドサービスであり、AWSで言う所のS3です。
詳細は、下記リンクを参照ください。

Cloud Storage - Online Data Storage  |  Cloud Storage  |  Google Cloud
Google Cloud Storage is unified object storage for developers and enterprises, from live applications data to cloud archival.

Cloud Functions

GCPの提供するFaaSであり、AWSで言う所のLambdaです。
イベントドリブンのサーバーレスアーキテクチャを実現できます。
詳細は、下記リンクを参照ください。

Cloud Functions - イベント駆動型のサーバーレス コンピューティング  |  Cloud Functions  |  Google Cloud
Google Cloud Functions により、デベロッパーはクラウド内でのコードの実行とスケーリングや、イベント駆動型サーバーレス アプリケーションのビルドを容易に行うことができます。

BigQuery

データウェアハウスのクラウドサービスであり、AWSで言う所のAthenaだと思います。

BigQuery - アナリティクス データ ウェアハウス  |  BigQuery  |  Google Cloud
BigQuery は、標準 SQL 操作による大規模な分析に対応した、高速かつ高スケーラビリティでコスト効率に優れたエンタープライズ向けフルマネージド データ ウェアハウスです。

3. やってみる

Cloud Storageバケットの用意

Cloud Storageでは、S3と同様にバケットと呼ばれるデータの入れ物を作成します。
データへのアクセス権限の設定を省略するために、今回はバケットをインターネット上に公開することにします。

  • バケットの作成

RegionalまたはMulti-Regionalを選択して、作成します。


  • バケットの公開
    下記の手順で、バケットをインターネットに公開します。

    • 権限タブからユーザの追加を選択

    • 「allUser」に対して、ストレージ閲覧ロールを付与

    • 公開と表示されていることを確認

Cloud Functionsの設定

Cloud Functionsに関数をデプロイします。トリガーには、Cloud Storageのイベントを選択します。

  • 各種設定項目を埋める

以下のように、値を入れます。

# 設定項目
1 名前 任意
2 割り当てられるメモリ 任意(最大2GB)
3 トリガー Cloud Storage
4 イベントタイプ ファイナライズ/作成
5 バケット [前章で作成したバケット]
  • requirements.txtを書く

関数の実行に必要なパッケージとバージョンをrequirements.txtに書いておきます。

  • main.pyを書く

あとは、main.pyにデプロイする関数を書くだけです。今回はランタイムとして、Python3.7を利用します。
[YOUR PROJECT ID]および[YOUR DATASET ID]は既存のものを指定します。

関数の入力データとなるdatacontextの説明は、下記リンクにあります。

Objects  |  Cloud Storage  |  Google Cloud

また、Google Cloud Client Library for Pythonのリファレンスはこちらです。

Google Cloud Client Library for Python — google-cloud 6a06a5f documentation

BigQueryの設定

main.pyの変数に定義した名前のデータセットを作っておきます。
他は特にやることはありません。

4. 最後に

今回書いた関数は、GitHubにあげています。あわせてご覧ください。

nishipy/CloudFunctions
Contribute to nishipy/CloudFunctions development by creating an account on GitHub.

今後は、BigQueryに読み込んだデータを、GCPの他のサービスと連携させていきたいと思います。
追記:続きはこちら。

BigQueryに読み込んだTwitterデータを、Datalabで分析・可視化する
NishipyAWSしか触ったことのない私が、BigQueryに読み込んだデータを、Google Datalabを用いて可視化してみます。1. やりたいことBigQueryにデータを読み込み(前回やった)BIgQuery上...


以上.

コメント