FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

AWS LambdaとNCMBを組み合わせて使う際に注意して欲しいこと

f:id:mbaasdevrel:20200722222444p:plain

AWS LambdaはいわゆるFaaS(Function as a Service)と呼ばれるサービスで、PythonやNode.jsなどのコードを必要な時だけ実行できる環境です。サーバを立ち上げることなく、サーバサイドでプログラミングコードを実行できるので便利です。

そんなAWS Lambdaですが、LambdaからNCMBを呼び出す際にはちょっとした注意が必要です。

利用するSDKについて

Lambdaでは幾つかのプログラミング言語がサポートされていますが、現時点ではNCMBが使えるのはNode.jsのみになるでしょう。Rubyは非公式ライブラリであれば利用可能です。

発生するエラーについて

ではNode.js用のNCMB SDKをインストールした状態で実行すると、以下のようなログが確認できるはずです。

Error: EROFS: read-only file system, mkdir './scratch'

このエラーはLambda上ではファイルの書き込みができないために発生します。scratchはNode.js上でlocalStorage風な機能を提供し、認証情報などを保存するためのフォルダになります。このディレクトリの作成に失敗してエラーになります。

回避策について

回避策としては、元々scratchというフォルダを作成した状態でLambdaにデプロイすれば大丈夫です。なお、この場合でも認証を行うとファイルの書き込みが発生してしまうのでエラーになります。scratchフォルダを作成しておけば、関数を実行できるはずです。

もう一つの回避策としては NCMBMania/ncmb_js_light: 軽量版JavaScript SDKです を利用する方法もあります。こちらはデータストアの特化しているので利用用途が限られますので注意してください。

サイズについて

NCMB SDKは依存ライブラリが多いので、インストールしたプロジェクトをLambdaにデプロイするとインライン編集できなくなります。

まとめ

AWS Lambdaはとても便利なサービスですが、機能的に通常の環境とは異なり、いくつかの制限があります。NCMB SDKと組み合わせた場合にもそうした問題に直面するかも知れません。何かあればコミュニティにてご質問ください。

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。