使用 Admin API 创建 App Engine 应用

地区 ID

REGION_ID 是 Google 根据您在创建应用时选择的地区分配的缩写代码。此代码不对应于国家/地区或省,尽管某些地区 ID 可能类似于常用国家/地区代码和省代码。在 App Engine 网址中包含 REGION_ID.r 对于现有应用是可选项,但在不久后将成为所有新应用的必要项。

为了确保顺利过渡,我们正在逐步更新 App Engine 以使用地区 ID。如果我们尚未更新您的 Google Cloud 项目,则您不会看到应用的区域 ID。由于该 ID 对于现有应用是可选的,因此您在现有应用可以使用区域 ID 后无需更新网址或进行其他更改。

详细了解区域 ID

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

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

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

准备工作

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

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

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

如需创建 Cloud 项目,请执行以下操作:

API

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

控制台

要使用 Cloud Console 创建 Cloud 项目,请执行以下操作:

转到“项目”页面

gcloud

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

gcloud projects create

如果您选择使用现有 Cloud 项目,则必须确保项目尚未包含 Application 资源,因为项目仅支持单个 App Engine 应用。要检查您的 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 资源和目标 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 可能类似于常用国家/地区代码和省代码。在 App Engine 网址中包含 REGION_ID.r 对于现有应用是可选项,但在不久后将成为所有新应用的必要项。

      为了确保顺利过渡,我们正在逐步更新 App Engine 以使用地区 ID。如果我们尚未更新您的 Google Cloud 项目,则您不会看到应用的区域 ID。由于该 ID 对于现有应用是可选的,因此您在现有应用可以使用区域 ID 后无需更新网址或进行其他更改。

后续步骤