使用 Admin API 创建 App Engine 应用

区域 ID

REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

详细了解区域 ID

借助 App Engine Admin API,您能够以程序化方式在新 Google Cloud 项目中创建 App Engine 应用。通过同时使用 Admin API 和 Cloud Resource Manager API,您能够以编程方式管理 Google Cloud 项目和 App Engine 应用。

创建 App Engine 应用会在指定位置为目标 Google Cloud 项目创建 Application 资源

如需在 Google Cloud 项目中手动创建 App Engine 应用,请参阅标准环境柔性环境中您的语言版本的“管理项目、应用和结算”主题。

准备工作

您必须满足下列前提条件,才能使用 Admin API 创建 App Engine 应用:

  • 您必须创建 Google Cloud 项目或已有 Google Cloud 项目。
  • 您必须是目标 Google Cloud 项目的所有者
  • 您必须能够访问 Admin API

Google Cloud 项目所有者必须先创建 Application 资源,然后其他用户账号才能对 App Engine 应用执行任务。例如,您必须先创建 App Engine 应用,然后具有 App Engine Deployer 角色的用户账号才能使用服务账号来部署应用。

要创建 Google Cloud 项目,请执行以下操作:

API

如需以编程方式创建 Google Cloud 项目,您可以使用 Cloud Resource Manager API;如需了解详情,请参阅创建新项目查看简短示例。

控制台

如需使用 Google Cloud 控制台创建 Google Cloud 项目,请执行以下操作:

转到“项目”页面

gcloud

安装 Google Cloud CLI 后,您可运行 gcloud CLI 的以下命令来创建 Google Cloud 项目:

gcloud projects create

如果您选择使用现有 Google Cloud 项目,则必须确保该项目尚未包含 Application 资源,因为一个项目只能有一个 App Engine 应用。如需检查您的 Google Cloud 项目是否已包含 Application 资源,您可以使用 apps.get 方法或运行 gcloud app describe 命令。

创建 App Engine 应用

要使用 Admin API 创建 App Engine 应用,请执行以下操作:

  1. 授权您的 HTTP 请求,例如获取访问令牌。

    您可以使用不同的 OAuth 流程来完成 Admin API 的访问授权,具体取决于 API 应用的需求。如需了解详情,请参阅访问 API

  2. 使用您的访问令牌和 Admin API 发送 HTTP POST 请求,以创建 App Engine 应用。

    您可以通过 HTTP POST 请求定义 Application 资源和目标 Google Cloud 项目,例如:

    POST https://appengine.googleapis.com/v1/apps { "id": "[MY_PROJECT_ID]", "locationId": "[MY_APP_LOCATION]" }
    

    必填 HTTP 请求字段包括:

    如需查看字段选项的完整列表,请参阅 Application 资源

    示例 cURL 命令:

    curl -X POST -d "{ 'id': '[MY_PROJECT_ID]', 'locationId': '[MY_APP_LOCATION]' }" -H "Content-Type: application/json" -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps
    

    其中:

    • [MY_PROJECT_ID] 是您要在其中创建 App Engine 应用的目标项目的 ID。
    • [MY_APP_LOCATION] 是您要创建 App Engine 应用的位置。
    • [MY_ACCESS_TOKEN] 是您为了向 HTTP 请求授权而获取的访问令牌。

    示例响应:

    {
      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
      "metadata": {
        "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
        "method": "google.appengine.v1.Applications.CreateApplication",
        "insertTime": "2016-10-03T20:48:02.099Z",
        "user": "me@example.com",
        "target": "apps/[MY_PROJECT_ID]"
      }
    }
    
  3. 验证您的 App Engine 应用是否已创建:

    1. 查看实际创建操作的状态:

      您在上一步中使用的 HTTP POST 请求在 name 字段中返回了操作名称,您可以在 apps.operations 集合GET 方法中使用该名称来检查创建操作的状态。

      例如,如果响应的 name 字段如下:

      "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f"
      

      您发送以下 HTTP GET 请求:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      示例 cURL 命令:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f
      

      其中 [MY_ACCESS_TOKEN] 是您的访问令牌,而 [MY_PROJECT_ID] 是目标项目的 ID。

      示例响应:

      {
        "name": "apps/[MY_PROJECT_ID]/operations/0a37a032-be3f-4c20-98b4-e3300447450f",
        "metadata": {
          "@type": "type.googleapis.com/google.appengine.v1.OperationMetadataV1",
          "method": "google.appengine.v1.Applications.CreateApplication",
          "insertTime": "2016-10-03T20:48:02.099Z",
          "endTime": "2016-10-03T20:48:18.272Z",
          "user": "me@example.com",
          "target": "apps/[MY_PROJECT_ID]"
        },
        "done": true,
        "response": {
          "@type": "type.googleapis.com/google.appengine.v1.Application",
          "id": "[MY_PROJECT_ID]",
          "locationId": "[MY_APP_LOCATION]"
        }
      }
      
    2. 验证是否已在您的项目中创建 App Engine 应用:

      如需查看版本的详细信息,您可以使用 apps 集合GET 方法。必须指定您在 HTTP GET 请求中部署的项目,例如:

      GET https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]
      

      示例 cURL 命令:

      curl -X GET -H "Authorization: Bearer [MY_ACCESS_TOKEN]" https://appengine.googleapis.com/v1/apps/[MY_PROJECT_ID]/
      

      其中 [MY_ACCESS_TOKEN] 是您的访问令牌,而 [MY_PROJECT_ID] 是目标项目的 ID。

      示例响应:

      {
        "name": "apps/[MY_PROJECT_ID]",
        "id": "[MY_PROJECT_ID]",
        "authDomain": "gmail.com",
        "locationId": "us-central",
        "defaultHostname": "[MY_PROJECT_ID].[REGION_ID].r.appspot.com",
        "defaultBucket": "[MY_PROJECT_ID].[REGION_ID].r.appspot.com"
      }
      

      REGION_ID 是 Google 根据您在创建应用时选择的区域分配的缩写代码。此代码不对应于国家/地区或省,尽管某些区域 ID 可能类似于常用国家/地区代码和省代码。对于 2020 年 2 月以后创建的应用,REGION_ID.r 包含在 App Engine 网址中。对于在此日期之前创建的现有应用,网址中的区域 ID 是可选的。

后续步骤