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のドキュメントに従ってnode-moduleをインストールしましょうnpm install firebase-admin --save
node-modules と package-lock.json が作成されたことを確認してください
5.プロジェクトの秘密鍵をダウンロード
Firebaseコンソールの「プロジェクトの設定」から「サービスアカウント」のタブ選択
Node.jsが選択された状態で「新しい秘密鍵の生成」をします。
プロジェクト情報をJSONでダウンロードできますので "serviceAccount.json" にリネームして先ほどのディレクトリ内に保存します。
6.index.jsを作成
Firestoreを操作する処理を書いていきます。
詳細は公式ドキュメントに載ってますのでそちらを参照してください。
以下はデータ保存する時のサンプルです。
Lambdaで実行するのでhandlerの中に処理を書きます
constadmin=require('firebase-admin');constserviceAccount=require('serviceAccount.json');admin.initializeApp({credential:admin.credential.cert(serviceAccount)});constdb=admin.firestore();exports.handler=(event,context,callback)=>{// Write a simple document with two fieldsconstdata={field1:"aaa",field2:newDate()};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 failscallback(err);});}7.zipファイルにまとめる
ファイルがすべて揃っていることを確認してzipファイルに圧縮していきます
名前はなんでもok
8.Lambdaファンクションを作成してzipをアップロード
AWSコンソールからファンクションを作成します。
Nodeのバージョンが11系を選べなかったので最新の12にしときました。
まあ大丈夫だろう、、、笑
できればここはローカル環境と合わせた方がいいかもしれませんね
8.実行してFirestoreに書き込み
テストでもいいので実行してみます。
ログが成功となればFirestoreに書き込まれているはずです。
9.参考にしたサイト
公式のドキュメントの手順に沿ってやってみました。
Cloud Firestore を使ってみる
Lambda部分はこちらの記事がわかりやすかったです。Google翻訳にぶち込みましょう
How to use Cloud Firestore on AWS Lambda
以上、誰かのお役に立てれば嬉しいです(^^)
