我们一直试图将我们的 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
我们这边做错了什么?我们在新区域的新项目中尝试了最简单的 nodejs flex 示例,但问题依然存在。我们尝试了 app.yaml 的多种变体,但都无济于事。
答案1
我曾尝试在 asia-east2 的 GAE Flex 中创建一个应用程序,但每次尝试这个位置时都会失败,但这是由于我的组织限制。我已经创建了应用程序并成功部署在该地区asia-northeast1
。
让我们开始缩小问题范围:根据GAE 位置文档:
- 一旦您选择了应用程序的位置,就无法更改。
- 应该
asia-east2
是一个正确的位置。
只要您的应用已正确创建,我们就可以放弃该位置。(创建应用不同于部署应用)。
我想提一下,Flex 环境中的 GAE 不使用instance_class: F1
中的标签app.yaml
。相反,根据app.yaml 文档,你必须使用,resources
表示cpu
,,memory_gb
。disk_size_gb
确保您的组件是最新版本是十分必要的。为确保这一点,请运行‘gcloud 组件更新’。
我还检查了GCP 仪表板状态检查 GAE 是否发生中断,但一切正常。
您的权限似乎没问题。您拥有的所有者角色足以在 GAE 中部署应用程序,并且您的配额也还不错
为了消除代码问题,我建议:
- 跑过快速入门 NodeJS GAE Flex在一个新的项目中。
- 在步骤 1 中需要使用命令创建一个应用程序
gcloud app create --project=[YOUR_PROJECT_ID]
。请确保此步骤顺利完成。 - 部署您的应用程序。
我最后想补充一点建议。您是否有机会在没有组织的情况下进行测试?只是为了消除问题的存在?
如果你遇到同样的问题,可以创建一个私人问题公共问题追踪在 GAE 部分。鉴于它是私密的,您可以在那里分享更多信息,以便他们能够提供进一步的帮助。