Help us understand the problem. What is going on with this article?

AWS Lambda から Cloud Firestore を使ってみる

FirestoreのデータをAlexaSkillから呼び出したかったのでLambdaに接続してみました。
そのときの手順を残しておきます。
勉強中の身ですので温かい心で読んで頂けると嬉しいです。

1.環境

Windows 10
Node v11.13.0

2.Firebaseのプロジェクト作る

Firebaseのコンソールからプロジェクトを作成します。
プロジェクトを作るとDatabaseがサイドバーから選べるのでそこから新しいデータベースを作成します。

3.ローカルフォルダにNode.jsのプロジェクトを作る

コマンドラインから任意のディレクトリに移動して
npm initで新しくプロジェクトを作成
package.json がフォルダ内に作成されます

4.Firebase Admin SDK をダウンロード

Firebaseのドキュメントに従ってSDKをインストールしましょう
npm install firebase-admin --save
node-modules と package-lock.json が作成されたことを確認してください

5.プロジェクトの秘密鍵をダウンロード

Firebaseコンソールの「プロジェクトの設定」から「サービスアカウント」のタブ選択
Node.jsが選択された状態で「新しい秘密鍵の生成」をします。

プロジェクト情報をJSONでダウンロードできますので "serviceAccount.json" にリネームして先ほどのディレクトリ内に保存します。

6.index.jsを作成

Firestoreを操作する処理を書いていきます。
詳細は公式ドキュメントに載ってますのでそちらを参照してください。
以下はデータ保存する時のサンプルです。
Lambdaで実行するのでhandlerの中に処理を書きます

index.js
const admin = require('firebase-admin');
const serviceAccount = require('serviceAccount.json');

admin.initializeApp({
  credential: admin.credential.cert(serviceAccount)
});

const db = admin.firestore();

exports.handler = (event, context, callback) => {
  // Write a simple document with two fields
  const data = {
    field1: "aaa",
    field2: new Date()
  };

  db.collection('lambda-docs').add(data).then((ref) => {
    // On a successful write, return an object
    // containing the new doc id.
    callback(null, {
      id: ref.id
    });
  }).catch((err) => {
    // Forward errors if the write fails
    callback(err);
  });
}

7.zipファイルにまとめる

ファイルがすべて揃っていることを確認してzipファイルに圧縮していきます
新しいビットマップ イメージ (4).jpg
名前はなんでもok

8.Lambdaファンクションを作成してzipをアップロード

AWSコンソールからファンクションを作成します。
Nodeのバージョンが11系を選べなかったので最新の12にしときました。
まあ大丈夫だろう、、、笑
できればここはローカル環境と合わせた方がいいかもしれませんね

普通にコンソール画面からアップロードしていきましょう。
新しいビットマップ イメージ (3).jpg

8.実行してFirestoreに書き込み

テストでもいいので実行してみます。
ログが成功となればFirestoreに書き込まれているはずです。
新しいビットマップ イメージ (2).jpg

9.参考にしたサイト

公式のドキュメントの手順に沿ってやってみました。
Cloud Firestore を使ってみる
Lambda部分はこちらの記事がわかりやすかったです。Google翻訳にぶち込みましょう
How to use Cloud Firestore on AWS Lambda

以上、誰かのお役に立てれば嬉しいです(^^)

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした