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}'
