この記事は旧ブログからの転載です。旧ブログは閉鎖しています。
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 の両方で削除されます。