如要使用 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檔案的目錄路徑。app.yaml檔案的 JSON 版本 (app.json) 會在[DIRECTORY_PATH]目錄中建立。請確認版本 ID 已在
app.json設定檔中定義。如果
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,
}