Goolge Cloud Function フルマネージド化されたことでBigQueryへのセンサーデータの送信用のモジュールを書きました。エラー処理とかされていない素の状態です。
nodeのバージョンはFunctions側とそろえておく必要がありますので、npmもfunctions側と同じバージョンを利用。
まず、gcloudモジュールの導入。
gcloud client libraryについては、こちらを参照してください。
../node-v0.12.7-linux-x64/bin/npm install gcloud --save
次に、コード本体。プロジェクトIDの記載は必要ですが、credentialsなどは不要です。functions側で自動認証されていると思われます。
var gcloud = require('gcloud')({ projectId: 'XXXXXXXX' }); exports.bigquerytest = function (context, data){ var bigquery = gcloud.bigquery(); var dataset = bigquery.dataset('iot_data'); var table = dataset.table('sensor_data'); table.insert({ TIMESTAMP: data.timestamp, temp: data.temp }, insertHandler); context.success(); }; function insertHandler( err, insertErrors, apiResponse) { }
gcloud alpha functions deploy bigquerytest --bucket gs://XXXXXXXX --trigger-http
実際データを投入します。
curl -X POST https://us-central1.XXXXXXXXXX.cloudfunctions.net/bigquerytest -d '{"timestamp":"2016-05-08 18:06:00","temp":20}'