7. その他補足情報

7.1. 外部ライブラリの使用 (Node.js)

Node.js カスタムコードでは、外部のライブラリを使用することができます。

npm で配布されている外部ライブラリを使用する場合は、 "npm install [パッケージ名] --save-dev" としてパッケージを package.json に 保存したうえで、"bundledDependencies" にパッケージ名を指定してください。

注意

外部ライブラリが依存するライブラリも含めすべて指定する必要があります。

注意

サーバ側ではカスタムコード実行前に "npm install" は実行「しません」。 したがって、必要なファイルはすべてコード内にパッケージングしておく必要があります。

7.2. 外部ライブラリの使用 (Java)

Java カスタムコードでは、外部のライブラリを使用することができます。

注意

Cloud Functions にアップロードする JAR ファイルには、外部ライブラリも含めておく必要があります。

なお、以下のライブラリは Cloud Functions サーバ側に含まれますので、JARに含める必要はありません。

  • Cloud Functions SDK ライブラリ
  • Nebula クライアントライブラリ
  • slf4j-api
  • jackson-databind

7.3. Docker コンテナの起動単位

Docker コンテナは、ファンクションの単位で起動されます。

  • ファンクション定義が異なるリクエストは場合は、必ず異なる Docker コンテナで処理されます。
  • ファンクション定義が同一のリクエストは、同一の Docker コンテナで処理される場合があります。
    • Cloud Functionsサーバが1台のみの場合は必ず同一のコンテナになります。複数台のサーバに負荷分散されている場合は、異なるサーバに分散されたリクエストはもちろん異なるコンテナで動作することになります。

注意

Node.js では、同一コンテナ上でリクエストを処理する場合は1つのプロセス上で複数のリクエストが同時に実行されます。 このためグローバルオブジェクトを使用すると他のリクエストにも影響が及びますのでご注意ください。

なお、モバイルバックエンド基盤 JavaScript SDK のハンドラはリクエスト毎に空間を分離していますので、 問題はありません。

7.4. タイムアウト

各ハンドラは、ファンクション定義で指定されたタイムアウト時間(env.timeout) 以内に応答を返却しなければなりません。

この時間が経過しても応答がなかった場合、動作中のファンクションは強制停止され、 クライアントには 504 Gateway Timeout エラーを返却します。