无法从 Terraform 创建 App Engine 应用程序:调用者没有权限,被禁止

Posted

技术标签:

【中文标题】无法从 Terraform 创建 App Engine 应用程序:调用者没有权限,被禁止【英文标题】:Unable to create App Engine App from Terraform: The caller does not have permission, forbidden 【发布时间】:2022-01-15 11:05:19 【问题描述】:

我有以下 Terraform:

data "google_client_config" "current" 


resource "google_app_engine_application" "app" 
  project     = data.google_client_config.current.project
  location_id = "us-central"

当我运行它时,我收到以下错误:

Error creating App Engine application: googleapi: Error 403: The caller does not have permission, forbidden

我已经在项目中为运行 Terraform 的服务帐户分配了Owner 角色。

我不确定我还能尝试什么。我发现的所有内容都与将此角色授予执行该操作的帐户有关。

【问题讨论】:

试试这个方法cloud.google.com/docs/authentication/… 如何将具有 Owner 角色的服务帐户分配给 Terraform?一个常见的问题是您没有使用您认为的身份。 或者他可能无法访问正确的项目 ID,请在此处使用示例进行测试:registry.terraform.io/providers/hashicorp/google/latest/docs/… 凭据正在通过 GOOGLE_APPLICATION_CREDENTIALS 传入。我将尝试查看是否可以以某种方式验证该帐户是否是我认为的帐户。这个 terraform 是另一个模块的一部分,除了那个之外,所有其他资源都正常工作。 对此的部分限制是我无法修改 Terraform。此 Terraform 已在其他环境中运行并在过去工作过。我正在尝试在新环境中运行它,而设置它的人不再使用它。我正在尝试查看我可能缺少哪些权限或可能配置错误的权限,从而导致此操作失败。 【参考方案1】:

发生这种情况的原因是我误解了提供程序配置的工作原理。

在我们的提供程序中,正在设置 access_token 字段。我认为GOOGLE_APPLICATION_CREDENTIALS 变量会覆盖 Terraform 代码中提供程序上设置的任何内容,但事实证明access_token 并非如此。 GOOGLE_APPLICATION_CREDENTIALS 实际上什么也没做。

【讨论】:

以上是关于无法从 Terraform 创建 App Engine 应用程序:调用者没有权限,被禁止的主要内容,如果未能解决你的问题,请参考以下文章

使用 Terraform 模块创建资源,其中一些资源由模块共享

Terraform aws - 无法使用 terraform 脚本创建 AWS SFTP 服务器

在 Terraform 中为 azurerm_app_service_plan 创建 azurerm_sql_firewall_rule

无法使用 Terraform 创建谷歌项目

通过 terraform 创建 Azure App 服务时抛出错误此处不应出现名为“zone_redundant”的参数

Terraform 无法将创建的集成附加到 API 网关的路由中