为部署创建 JSON 配置文件

要使用 Admin API 部署应用的某个版本,可以通过 JSON 格式的文件定义该版本的配置详细信息。您可以手动创建配置文件,也可以转换现有的 app.yaml 文件。

创建 JSON 格式的配置文件时,需要执行两个环节的操作:

  1. 定义要部署的版本的配置信息。
  2. 定义 deployment 部分,以指定要部署的所有应用文件和资源。

准备工作

您必须先将应用的所有文件和资源上传到 Cloud Storage 存储分区,然后才能创建 app.json 配置文件。

手动创建 JSON 配置文件

如果您需要手动创建配置文件(例如,应用不包含 app.yaml 或者现有 Java 应用使用 appengine-web.xml 文件),请按以下步骤操作。

要手动创建 app.json 配置文件以使用 Admin API 部署应用,请执行以下操作:

  1. 创建名为 app.json 的文件。
  2. 使用 apps.services.versions 集合中提供的配置信息来定义和配置要部署的版本。
  3. 使用定义 deployment 部分中的模板来指定要从 Cloud Storage 存储分区部署的所有文件和资源。

另请参阅下面的示例部分,按照相关说明创建 app.json 配置文件。

app.yaml 文件转换为 JSON 格式

您可以使用 convert_yaml.py 工具从现有的 app.yaml 文件转换和生成 app.json 版本。

如果存在通常用于手动部署应用版本app.yaml 文件,可以通过将这些配置设置转换为 JSON 格式来保留相应信息。

前提条件

下载并安装 convert_yaml.py 工具,包括指定要求。

使用 convert_yaml.py 工具转换 YAML 文件

要使用 convert_yaml.py 工具转换 app.yaml 文件,请执行以下操作:

  1. 找到并记下 app.yaml 的目录路径。

    例如:

    cd root/apps-container/my-application/
    

    其中,example-python-app.py 应用的 app.yaml 可能如下所示:

    service: default
    version: v1
    runtime: python27
    threadsafe: true
    
    handlers:
    - url: /.*
      script: example-python-app.py
    
  2. 导航到下载 convert_yaml.py 工具的本地目录,例如:

    cd root/tools/appengine-config-transformer
    
  3. 通过运行 convert_yaml.py 工具从 app.yaml 文件创建 app.json 文件:

    python ./convert_yaml.py [DIRECTORY_PATH]/app.yaml > [DIRECTORY_PATH]/app.json
    

    其中 [DIRECTORY_PATH]app.yaml 文件的路径。

    [DIRECTORY_PATH] 目录中创建了 app.yaml 文件的 JSON 版本 (app.json)。

  4. 确保在 app.json 配置文件中定义版本 ID。

    如果 app.yaml 文件不包含 version: [VERSION_NAME] 元素,转换后的 app.json 文件将不包含 "id": [VERSION_NAME] 元素。例如,如果要将版本 ID 设置为 v1,则必须将下面这行内容手动添加到 app.json 文件中:

    "id": "v1",
    
  5. 使用定义 deployment 部分中的模板来指定要部署的应用的所有文件和资源。

另请参阅下面的示例部分,按照相关说明创建 app.json 配置文件。

定义 deployment 部分

要在 app.json 配置文件中创建 deployment 部分并手动定义位于 Cloud Storage 存储分区中的所有资源,可以使用 apps.services.versions 集合的 deployment 部分中的参考信息。如果要定义单独的文件,可以使用以下模板:

"deployment": {
  "files": {
    "my-resource-file1": {
      "sourceUrl": "https://storage.googleapis.com/[MY_BUCKET_ID]/my-application/my-resource-file1"
    },
  }
},

其中,my-resource-file1 定义文件名以及要在 App Engine 中部署该文件的相对目录路径。

app.json 文件示例

您可以在创建配置文件时参考下面的示例 app.json

以下 app.json 示例中定义了 v1 版本 ID 以及 deployment 部分,其中包含位于 [MY_BUCKET_ID] Cloud Storage 存储分区的两个示例源文件。

{
  "deployment": {
    "files": {
      "example-resource-file1": {
        "sourceUrl": "https://storage.googleapis.com/[MY_BUCKET_ID]/example-application/example-resource-file1"
      },
      "images/example-resource-file2": {
        "sourceUrl": "https://storage.googleapis.com/[MY_BUCKET_ID]/example-application/images/example-resource-file2"
      },
    }
  },
  "id": "v1",
  "handlers": [
    {
      "urlRegex": "/.*",
      "script": {
        "scriptPath": "example-python-app.py"
      }
    },
  ],
  "runtime": "python27",
  "threadsafe": true,
}

后续步骤