為部署作業建立 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 檔案的目錄路徑。

    app.yaml 檔案的 JSON 版本 (app.json) 會在 [DIRECTORY_PATH] 目錄中建立。

  4. 請確認版本 ID 已在 app.json 設定檔中定義。

    如果 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,
}

後續步驟