App Engine 灵活部署问题:403 资源错误

App Engine 灵活部署问题:403 资源错误

我们一直试图将我们的 nodejs 代码部署到 app engine Flexible,但无法成功,因为它显示资源错误。我们有 GSuite 组织帐户,并正在使用它进行部署。

这是错误:

Updating service [default] (this may take several minutes)...failed.           
ERROR: (gcloud.app.deploy) Error Response: [13] Flex operation projects/ae-test-3-280019/regions/asia-east2/operations/d727f9f7-3ee6-4b14-a7a4-9f04ef0aec68 error [INTERNAL]: An internal error occurred while processing task /appengine-flex-v1/insert_flex_deployment/flex_create_resources>2020-06-22T17:10:19.801Z36182.jc.6: Deployment Manager operation ae-test-3-280019/operation-1592845820141-5a8af514a9dd2-70733111-e1927105 errors: [code: "RESOURCE_ERROR"
location: "/deployments/aef-default-20200622t223948/resources/aef-default-20200622t223948"
message: "{\"ResourceType\":\"compute.beta.regionAutoscaler\",\"ResourceErrorCode\":\"403\",\"ResourceErrorMessage\":{\"code\":403,\"message\":\"The caller does not have permission\",\"status\":\"PERMISSION_DENIED\",\"statusMessage\":\"Forbidden\",\"requestPath\":\"https://compute.googleapis.com/compute/beta/projects/ae-test-3-280019/regions/asia-east2/autoscalers\",\"httpMethod\":\"POST\"}}"]

关键点:

  • 我们最初遇到了计费问题并联系了支持人员,他们找不到解决办法,因此我们创建了一个新的计费帐户并尝试了一下。
  • 错误发生在我们所有的项目
  • 我们拥有所有必要的权限,甚至组织管理员以及所有者访问权限。

应用程序.yaml

runtime: nodejs
env: flex
instance_class: F1
automatic_scaling:
  min_num_instances: 1
  max_num_instances: 15
  cool_down_period_sec: 180
  cpu_utilization:
    target_utilization: 0.6
  target_concurrent_requests: 100

控制台中的 app.yaml -> App Engine -> 版本 -> 配置

runtime: nodejs
api_version: '1.0'
env: flexible
threadsafe: true
instance_class: F1
automatic_scaling:
  cool_down_period: 180s
  min_num_instances: 1
  max_num_instances: 15
  cpu_utilization:
    target_utilization: 0.6
  target_concurrent_requests: 100
network: {}
liveness_check:
  initial_delay_sec: 300
  check_interval_sec: 30
  timeout_sec: 4
  failure_threshold: 4
  success_threshold: 2
readiness_check:
  check_interval_sec: 5
  timeout_sec: 4
  failure_threshold: 2
  success_threshold: 2
  app_start_timeout_sec: 300

配额使用情况图片

IAM 权限

我们这边做错了什么?我们在新区域的新项目中尝试了最简单的 nodejs flex 示例,但问题依然存在。我们尝试了 app.yaml 的多种变体,但都无济于事。

答案1

我曾尝试在 asia-east2 的 GAE Flex 中创建一个应用程序,但每次尝试这个位置时都会失败,但这是由于我的组织限制。我已经创建了应用程序并成功部署在该地区asia-northeast1

让我们开始缩小问题范围:根据GAE 位置文档

  1. 一旦您选择了应用程序的位置,就无法更改。
  2. 应该asia-east2是一个正确的位置。

只要您的应用已正确创建,我们就可以放弃该位置。(创建应用不同于部署应用)。

我想提一下,Flex 环境中的 GAE 不使用instance_class: F1中的标签app.yaml。相反,根据app.yaml 文档,你必须使用,resources表示cpu,,memory_gbdisk_size_gb

确保您的组件是最新版本是十分必要的。为确保这一点,请运行‘gcloud 组件更新’

我还检查了GCP 仪表板状态检查 GAE 是否发生中断,但一切正常。

您的权限似乎没问题。您拥有的所有者角色足以在 GAE 中部署应用程序,并且您的配额也还不错

为了消除代码问题,我建议:

  1. 跑过快速入门 NodeJS GAE Flex在一个新的项目中。
  2. 在步骤 1 中需要使用命令创建一个应用程序gcloud app create --project=[YOUR_PROJECT_ID]。请确保此步骤顺利完成。
  3. 部署您的应用程序。

我最后想补充一点建议。您是否有机会在没有组织的情况下进行测试?只是为了消除问题的存在?

如果你遇到同样的问题,可以创建一个私人问题公共问题追踪在 GAE 部分。鉴于它是私密的,您可以在那里分享更多信息,以便他们能够提供进一步的帮助。

相关内容