Skip to content
Go back

firebase のプロジェクトを terraform で管理する

hatappo

この記事は旧ブログからの転載です。旧ブログは閉鎖しています。

terraform init

main.tf

resource "google_project" "default" {
  provider   = google-beta
  project_id = "<PROJECT_ID>"
  name       = "<PROJECT_NAME>"
  org_id     = "<ORG_ID>"
}

resource "google_firebase_project" "default" {
  provider = google-beta
  project  = google_project.default.project_id
}

https://console.firebase.google.com/project/<PROJECT_ID>/settings/serviceaccounts/adminsdk から
「新しい秘密鍵を生成」ボタンをクリックして <PROJECT_ID>-firebase-adminsdk-sumcm-<XXXXXXX>.json をどこかに保存し、

export GOOGLE_CLOUD_KEYFILE_JSON="your_path/<PROJECT_ID>-firebase-adminsdk-sumcm-<XXXXXXX>.json"
terraform import terraform import google_project.default xxxx
terraform import terraform import google_firebase_project.default xxxx

GOOGLE_CLOUD_KEYFILE_JSON で adminsdk のサービスアカウントを設定していないと次のエラーになる。

│ Error: Error when reading or editing FirebaseProject "projects/<PROJECT_ID>": googleapi: Error 403: Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the firebase.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/. If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header, please check https://cloud.google.com/apis/docs/system-parameters.
│ Details:
│ [
│   {
│     "@type": "type.googleapis.com/google.rpc.ErrorInfo",
│     "domain": "googleapis.com",
│     "metadata": {
│       "consumer": "projects/XXXXXXXXXXX",
│       "service": "firebase.googleapis.com"
│     },
│     "reason": "SERVICE_DISABLED"
│   }
│ ]

これでマニュアルで作った Firebase Project を Import できた。 terraform.tfstate がカレントディレクトリに作られているはず。

Firebase プロジェクトと Google Cloud の関係

ちなみに、

https://firebase.google.com/docs/projects/learn-more#firebase-cloud-relationship

Firebase コンソールで新しい Firebase プロジェクトを作成した場合、内部で実際に作成されるのは Google Cloud プロジェクトです。Google Cloud プロジェクトは、データ、コード、構成、サービスのための仮想的なコンテナと考えることができます。Firebase プロジェクトは、Google Cloud プロジェクトに Firebase 固有の構成とサービスを加えたものです。はじめに Google Cloud プロジェクトを作成し、その後に Firebase を追加することもできます。

Firebase プロジェクトは Google Cloud プロジェクトであるため、次のような特長があります。

Firebase コンソールに表示されるプロジェクトは、Google Cloud Console と Google API Console にも表示されます。 プロジェクトの課金と権限は、Firebase と Google Cloud 間で共有されます。 プロジェクトの一意の識別子(プロジェクト番号やプロジェクト ID など)は、Firebase と Google Cloud 間で共有されます。 プロジェクトで、Firebase と Google Cloud の両方のプロダクトと API を使えます。 プロジェクトを削除すると、Firebase と Google Cloud の両方で削除されます。


Share this post on:

Previous Post
Slack の「@ メンション & リアクション」を常時表示
Next Post
.terraform.lock.hcl