アルパカログ

カスタマーサポート (CS) とエンジニアリングを掛け算したい CRE (Customer Reliability Engineer) が気になる技術や思ったことなど。

Google Cloud Functions (GCF) から Datastore を使う

Google Cloud Functions (GCF) で永続データを扱いたいと思ったらまず思い浮かぶのが、いつまでも無料枠に含まれている Datastore ですよね。

Datastore は GAE (Google App Engine) からしか使えないのかな?と思いきや、実は GCF からもとっても簡単に使えるんです。

このエントリでは GCF から Datastore を使う方法を紹介します。

準備

Datastore のクイックスタートがまだお済みでない方は先に済ませてください。

Datastore エンティティは、クイックスタートと同じように種類を Task にして、プロパティは下記のように作っておきましょう。

種類: Task

f:id:otoyo0122:20180210205859p:plain

GCF のコード

コンソールで GCF に移動し関数を作成します。

ここでは関数の名前は helloWorld としましょう。その他の項目は下の表をご覧ください。

項目
関数の名前 helloWorld
割り当てられるメモリ 256 MB (任意)
トリガー HTTP トリガー
ソースコード インライン エディタ
index.js 下図
package.json 下図
実行する関数 helloWorld

index.js

exports.helloWorld = (req, res) => {
  datastore = require('@google-cloud/datastore')({
    projectId: 'oval-tuner-191403'
  });
  
  datastore.createQuery('Task').run(function(err, entities, info){
    if (err) {
      console.log(err);
      res.status(400).send('Datastore Error!');
    } else {
      console.log(entities);
      res.status(200).send(entities[0].description);
    }
  });
};

package.json

{
  "name": "http-trigger-datastore-sample",
  "version": "0.0.1",
  "dependencies": {
    "@google-cloud/datastore": "^1.3.3"
  }
}

入力ができたら「作成」を押して関数をデプロイします。

デプロイが完了したら「トリガー」タブの URL (下図) にアクセスしてみましょう。

f:id:otoyo0122:20180211131149p:plain

Datastore に作成した Task エンティティの description "Hello World!" が表示されれば完成です!

こちらもあわせてどうぞ

alpacat.hatenablog.com

参考リンク