託管目標參考資料

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

環境變數限制

代管目標對環境變數的大小和數量設有限制 可以在 Hosted Targets 執行階段環境中設定。

  • 1000:單一環境變數的長度上限。
  • 100:可設定的環境變數數量上限。

如要瞭解如何設定環境變數,請參閱 資訊清單檔案

在應用程式執行階段中設定的環境變數

部署託管目標應用程式時,系統會設定下列環境變數, 你的應用程式可以使用:

  • APIGEE_ENVIRONMENT:部署託管目標 Proxy 的環境。
  • APIGEE_ORGANIZATION:部署代管目標 Proxy 的機構。
  • PORT - 代管目標應用程式必須監聽的通訊埠。

系統資源分配

每個託管目標執行個體都會收到下列資源:

  • 256 MB 記憶體
  • 1.2 GHz CPU

資源調度

本節說明代管目標應用程式如何根據邊緣帳戶類型調度資源 。
  • Apigee Edge 試用版本限制為每個 Proxy 一個託管目標執行個體。
  • 付費的 Apigee Edge 帳戶會自動按照要求比率、回應延遲時間調度資源 以及每個 Proxy 的其他應用程式指標
  • 如果應用程式部署至 Apigee Edge 付費和試用版本,託管目標應用程式會在閒置期間將資源調度降至零。 因此,你可能會在短時間內發現回應速度較慢。其他參考資訊 已知問題

資訊清單檔案

為了收集用來建構及部署託管應用程式的執行階段資訊,Edge 會尋找 resources/managed 目錄中名為 app.yaml 的資訊清單檔案 此檔案包含建構及部署代管目標應用程式所需的資訊。

資訊清單檔案語法

runtime: node
runtimeVersion: version_number
command: command_name
args: argument_array
env:
  - name: variable_name
    value: literal_value
  - name: variable_name
    valueRef:
      name: kvm_name
      key: kvm_value

資訊清單檔案元素

app.yaml 資訊清單檔案包含下列元素:

  • runtime - (必要) 指定您要部署的應用程式類型。 您必須指定 node
  • runtimeVersion - (選填) 用於測試的執行階段版本。 應用程式所使用的容器預設:Node.js LTS (v10.x)。參閱適用於節點的 Docker 官方存放區 一文。
  • command - (選用):可讓您指定要執行的指令,而不是執行 用於啟動應用程式的預設指令預設:Node.js=npm
  • args - (選填) 要傳遞至該函式的指令列引數陣列 應用程式 (以標準 YAML 陣列語法指定)。通常,這些指令會新增至預設指令。 預設值為 start。舉例來說,Node.js 應用程式預設會將 npm start
  • env - (選用) 環境變數陣列 (名稱/值組合) 要在代管目標執行階段環境中設定。這些變數可用於 託管的 Hosted Targets 應用程式
    • name - 變數名稱。
    • 值 |valueRef - 共有兩種選項。您可以設定常值 或參照儲存在鍵/值對應中的值。「鍵/值對應」必須 必須已存在於 Edge 環境中請參閱「使用鍵/值對應」一文。
      • 如果您使用「value」,則必須 請指定變數 name 和常值 value。例如:
        runtime: node
        env:
         - name: NODE_ENV
           value: production
      • 如果您使用的是 valueRef, 接著,您必須提供先前在 Edge 中建立的鍵/值對應 (KVM) 名稱。 例如:
        runtime: node
        env:
          - name: DB_ENV
            value: production
          - name: DB_PASSWORD
            valueRef:
              name: hosted-kvm
              key: db-password
        敬上

    資訊清單檔案範例

    本節包含 Node.js 的資訊清單檔案範例 應用程式。必須提供資訊清單檔案才能部署代管目標應用程式,且必須位於 位於 apiproxy/resources/hosted 目錄中,而且檔案名稱必須為 app.yaml

    以下是 Node.js 應用程式的 app.yaml (資訊清單) 檔案範例。

    指定常值環境變數的範例:

     runtime: node
     env:
       - name: NODE_ENV
         value: production

    其中包含啟動指令、指令列引數和環境變數的範例。

     runtime: node
     command: ./node_modules/pm2/bin/pm2
     env:
       - name: NODE_ENV
         value: production
     args:
       - app.js


    指定鍵/值對應 (KVM) 參照的範例:

    如要進一步瞭解 KVM 存取權,請參閱資訊清單檔案

    runtime: node
    env:
      - name: DB_ENV
        value: production
      - name: DB_PASSWORD
        valueRef:
          name: hosted-kvm
          key: db-password

    GitHub 上的託管目標應用程式範例

    Apigee 提供 GitHub 上的 Proxy 範例,其中有以 Hosted Targets 編寫的應用程式 。您可以複製這個存放區,並按照 README 操作說明進行以下操作: 部署任何 Proxy

    必要條件

    若要部署範例,您必須在系統上安裝兩個工具:

    • apigeetool:指令列 來部署 Edge Proxy
    • get_token - 用來取得 apigeetool 所需授權權杖的指令列工具。

    若要在本機測試範例,您也必須安裝 Node.js。

    取得範例存放區

    1. 透過瀏覽器前往 https://github.com/apigee/api-platform-samples
    2. 按一下「Clone or download」(複製或下載),然後使用 您偏好的方法。
    3. cd 變更為 <your install dir>/api-platform-samples/doc-samples/Hosted-targets
    4. 存放區下載完畢後,便可執行 cd 至任何範例目錄,並遵循以下指示: README 操作說明,將範例 Proxy 部署至 Edge。部署指令如下所示。Simply 將指定的參數替換成您的 Apigee 帳戶參數:
    5. get_token && apigeetool deployproxy \
        -o YOUR_ORGANIZATION \
        -e YOUR_ENVIRONMENT \
        --json \
        --token "$(< ~/.sso-cli/valid_token.dat)"\
        --api NAME_OF_THE_PROXY \
        --directory .

    範例:執行範例應用程式

    複製範例存放區

    cd ~/myhome
    git clone https://github.com/apigee/api-platform-samples.git
    cd ~/myhome/api-platform-samples/doc-samples/hosted-targets
    cd node-hosted-hello

    在本機測試應用程式

    您必須先安裝 Node.js,才能執行這項本機測試。

     PORT=8081 node apiproxy/resources/hosted/index.js
     curl http://localhost:8081
    

    輸出內容範例:

    {"date":"2018-03-12T21:45:22.161Z","msg":"Hello, World!"}

    部署 Proxy

     get_token && apigeetool deployproxy \
       -o myorg \
       -e test \
       --json \
       --token "$(< ~/.sso-cli/valid_token.dat)"\
       --api node-hosted-hello \
       --directory .

    測試部署作業

    部署會在幾分鐘內完成。如果您收到部署錯誤,請執行 執行 Deployment 指令

    curl http://myorg-test.apigee.net/node-hosted-hello

    輸出內容範例:

    {"date":"2018-03-23T18:59:18.668Z","msg":"Hello, World!"

    已知問題

    • 網路延遲 - Node.js 應用程式現在已停止執行 ,現在 MP 和部署作業之間都有網路躍點。當然 這麼做將會耗費成本,但初始基準測試結果顯示,在合理的範圍內
    • API 回應速度緩慢:執行應用程式的基礎架構 來視需求自動調度資源這表示應用程式可以實際縮減資源 如果是這種情況,下一個 API 要求的時間可能會超過 一般 API 要求,因為基礎架構正在啟動執行個體,以便處理 請求。
    • 部署作業錯誤 - 如果您在部署 託管目標 Proxy,請嘗試重新部署 Proxy。在某些情況下,部署作業可能會逾時 如果您重新部署,問題本身就會解決。