[小ネタ]Cloud FunctionsでCloud Vision APIを呼ぶ際に関数がcrashする場合の対処

2020.05.12

はじめに

CX事業本部東京オフィスの佐藤智樹です。

今回は以前行ったGCPのCloud FunctionsのチュートリアルでCloud Visions APIを呼ぶ際に関数が実行時にcrashしたので対処方法を記載します。自分が実施した時はエラー文からどう対処してよいのか推測が難しかったので、同じように悩んでいる人がすぐに解決できるようにと自分の備忘録のために記事にします。

発生するエラー

Cloud Functionsを実行する際にエラーが出るので画面からログを確認します。以下の画面のように対象の関数の「操作」欄から「ログを表示」で確認できます。

本記事と同じような失敗をした場合、以下のようなエラーログが出ます。Permission Errorなどの表記は出ないのでなぜ動かないのか若干分かり辛いです。(idなどは適当な値にマスクしています)

{
  "textPayload": "Function execution took 422 ms, finished with status: 'crash'",
  "insertId": "000000-0000000-9999-448a-a4b8-5639c2a2f3c7",
  "resource": {
    "type": "cloud_function",
    "labels": {
      "project_id": "cloudfunctions-ocr",
      "function_name": "ocr-extract",
      "region": "us-central1"
    }
  },
  "timestamp": "2020-05-06T15:31:51.112345667Z",
  "severity": "DEBUG",
  "labels": {
    "execution_id": "xxxxxxxxxxxx"
  },
  "logName": "projects/cloudfunctions-ocr/logs/cloudfunctions.googleapis.com%2Fcloud-functions",
  "trace": "projects/cloudfunctions-ocr/traces/hogehogefugafuga",
  "receiveTimestamp": "2020-05-06T15:31:51.48299999Z"
}

原因

Cloud Vision APIやCloud Translation APIなどいくつかのAPIはプロジェクトごとに有効化しなければ使用できませんでした。有効化されていない場合はCloud Functionsなど別のサービスから使用できず関数の実行時にcrashします。

対処方法

対象となるAPIを有効化します。WebコンソールからCloud Vision APIなど使用するAPI名を検索します。

Cloud Vision APIが有効化されていることを確認してください。有効化されていなければ画面中央の「有効にする」でAPIを有効化してください。

有効化すればインポートが成功するので正常に動作させることができます。APIの有効化はプロジェクトごとに必要となるので新規のプロジェクトを作成する場合は毎回有効化してください。