将现有Firebase项目导入Terraform State收到403错误



在将我们现有的基础设施迁移到;基础设施即代码";在安装程序中,我们还需要导入一个现有的Firebase项目。

遵循GCP beta Terraform提供商的说明。以下代码段已添加到相应的地形模块中。

resource "google_firebase_project" "default" {
provider = google-beta
project = "my-project-id"
}

现有Firebase项目的导入是通过运行命令启动的

terraform import google_firebase_project.default my-project-id

这导致了以下输出:

google_firebase_project.default: Importing from ID "my-project-id"...
google_firebase_project.default: Import prepared!
Prepared google_firebase_project for import
google_firebase_project.default: Refreshing state... [id=projects/my-project-id]
Error: Error when reading or editing FirebaseProject "projects/my-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/.

使用服务帐户运行Terraform或使用最终用户帐户模拟服务帐户时出现错误。所有身份都具有相应GCP项目的所有者权限。

您的错误消息与您对firebase地形资源的使用没有直接关系,而是与您不能与人类用户对话firebase API这一事实有关。相反,您应该创建一个服务帐户,例如terraform,授予它创建firebase资源所需的权限,并授予用户模拟服务帐户的权限。

然后你需要像一样配置你的GCP提供商

provider "google" {
impersonate_service_account = "terraform@my-gcp-project.iam.gserviceaccount.com"
}
provider "google-beta" {
impersonate_service_account = "terraform@my-gcp-project.iam.gserviceaccount.com"
}

建议在共享项目中创建一个地形服务帐户,并使用它通过地形创建所有其他资源。另请参阅https://github.com/terraform-google-modules/terraform-google-bootstrap对于这种模式。

相关内容

  • 没有找到相关文章

最新更新