我可以在不完全重新部署的情况下更新 App Engine Flexible 上的扩展配置吗?

Can I update the scaling config on App Engine Flexible without a full redeploy?

我刚刚开始使用 App Engine Flexible,似乎更新任何配置(包括 automatic_scalingmanual_scaling 设置的唯一方法是更新 app.yaml,然后通过 gcloud app deploy 进行重新部署。假设我有一个相对保守的配置以确保成本不会失控,但突然获得 100 倍的流量并且需要更改配置以允许更积极的扩展。问题是,完全部署大约需要 10 分钟。

有什么方法可以更快地更改缩放设置,而无需完全重新部署(使用相同的现有应用程序代码)?

是的,可以使用 App Engine Admin API sending a Patch REST request to apps.services.versions.patch 根据您的 use case,您可以使用 REST、RPC,甚至客户端库本身来执行此操作。

您可以使用像这样的 Python 代码段,它使用 App Engine 管理员 API 就像在其他答案中一样:

from googleapiclient import discovery
import os

service = discovery.build('appengine', 'v1')
projectId = os.getenv('GOOGLE_CLOUD_PROJECT')
serviceId = 'default'
versionsId='20190130t220207'

body = {
  "automaticScaling": {
    "minTotalInstances": 3
  },
  "env": "flex"
}

minInstancesRequest = service.apps().services().versions().patch(appsId=projectId, servicesId=serviceId, versionsId=versionsId, body=body, updateMask='automaticScaling.minTotalInstances')
minInstancesRequest.execute()