要使用 Admin API 部署应用的某个版本,可以通过 JSON 格式的文件定义该版本的配置详细信息。您可以手动创建配置文件,也可以转换现有的 app.yaml
文件。
创建 JSON 格式的配置文件时,需要执行两个环节的操作:
- 定义要部署的版本的配置信息。
- 定义
deployment
部分,以指定要部署的所有应用文件和资源。
准备工作
您必须先将应用的所有文件和资源上传到 Cloud Storage 存储桶,然后才能创建 app.json
配置文件。
手动创建 JSON 配置文件
如果您需要手动创建配置文件(例如,应用不包含 app.yaml
或者现有 Java 应用使用 appengine-web.xml
文件),请按以下步骤操作。
要手动创建 app.json
配置文件以使用 Admin API 部署应用,请执行以下操作:
- 创建名为
app.json
的文件。 - 使用 apps.services.versions 集合中提供的配置信息来定义和配置要部署的版本。
- 使用定义
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
文件,请执行以下操作:
找到并记下
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
导航到下载
convert_yaml.py
工具的本地目录,例如:cd root/tools/appengine-config-transformer
通过运行
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
)。确保在
app.json
配置文件中定义版本 ID。如果
app.yaml
文件不包含version: [VERSION_NAME]
元素,转换后的app.json
文件将不包含"id": [VERSION_NAME]
元素。例如,如果要将版本 ID 设置为v1
,则必须将下面这行内容手动添加到app.json
文件中:"id": "v1",
使用定义
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,
}