Firebase FunctionsにPubSubイベントを追加したらデプロイが通らなくなった

2021/04/11に公開

Cloud Functions for Firebase で、今までHTTPイベントをデプロイできていたのにPubSubイベントを追加した途端 Functions did not deploy properly. と言われるようになってしまった

TL; DR

Cloud Scheduler にアクセスして手動でPubSubジョブを作ると直る、以降のデプロイも落ちなくなる

調査

PubSubイベントを含め一見すべて成功していて、何度リトライしてもエラーになる

Functions deploy had errors with the following functions:
	<PubSub関数名>(us-central1)

とあるのでPubSubになにか問題がありそう

よくわからないので verbose した

$ firebase deploy --only "functions:<PubSub関数名>" --debug

ログを error で検索すると、

{
  "error": {
    "code": 404,
    "message": "The project <firebase-project> does not contain an App Engine application. Please visit https://console.developers.google.com/appengine?project=<firebase-project> to to add an App Engine application.",
    "status": "NOT_FOUND",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [
          {
            "description": "Create App Engine application",
            "url": "https://console.developers.google.com/appengine?project=<firebase-project>"
          }
        ]
      }
    ]
  }
}

こんなレスポンスが見つかった
過去に同じような構成で作ったプロジェクトがあったが、そっちにも App Engine インスタンスは作られていないし firebase-tools のバグかな?と思ったが、たしかに指定した時刻になっても関数が動かない
そこで試しに Cloud Functions から実行すると動いた

💡

Cloud Scheduler から手動でPubSubジョブを作ってみる

指定時刻に動くようになり、以降のデプロイもエラーを吐かなくなった

たぶん

Cloud Scheduler は App Engine の管轄 (APIとサービス 的な意味で) なので、そのへんのアレで App Engine のエラーが出てたんだろう
以前はこんなことしなくても初回からデプロイできてたと思うんだが、たまにGCPが勘違いしちゃうのかもしれない

GitHubで編集を提案

Discussion