託管目標教學課程

您目前查看的是 Apigee Edge 說明文件。
參閱 Apigee X說明文件
資訊

以下教學課程說明如何使用代管目標 (由 Apigee 代管的原生 Node.js 執行階段環境),將 Node.js 應用程式部署至 Edge。

教學課程會逐步執行下列工作:

  • 使用 Edge UI 將 Node.js 應用程式部署至代管目標。
  • 從本機開發機器將 Node.js 應用程式部署至代管目標。
  • 將使用傳統 Edge Node.js 目標實作的現有 Proxy 遷移至代管目標。

使用 Edge UI 將 Node.js 應用程式部署至託管目標

在本教學課程中,您將使用 Edge UI 將簡單的 Node.js 應用程式部署至代管目標。完成教學課程後,您將瞭解代管目標 Proxy 的基本結構和內容,以及如何存取部署和建構記錄檔案。

登入

  1. 前往:apigee.com/edge
  2. 輸入 Apigee 登入憑證即可登入。

建立新的 Proxy

  1. 在側邊導覽選單中,依序選取「Develop」(開發) >「API Proxy」(API Proxy)
  2. 按一下「+ Proxy」
  3. 在「Create Proxy」(建立 Proxy) 頁面中,選取「Hosted Target」(代管目標)
  4. 點選「下一步」
  5. 在「Proxy Name」(Proxy 名稱) 欄位中輸入 hello-hosted-targets
  6. 確認已選取「Hello World」範例
  7. 點選「下一步」
  8. 在「安全性」頁面中,選取授權的「通過 (無)」
  9. 點選「下一步」
  10. 點選「下一步」
  11. 在「Build」頁面中,確認已選取 [test] 環境。請注意,Proxy 類型為「Hosted Targets」
  12. 按一下「Build and Deploy」。代理程式部署作業可能需要幾分鐘的時間才能完成。
  13. 成功部署 Proxy 後,按一下頁面底部的「View hello-Hosted-targets Proxy」
  14. 呼叫 API Proxy。執行這項操作最簡單的方法就是前往「Trace」分頁,啟動 Trace 工作階段,然後按一下 [傳送]。您應該會收到 200 狀態,並包含下列回應:
    {"date":"2018-09-26T14:23:04.550Z","msg":"Hello, World!"}

檢查 Proxy

  1. 在 Edge UI 中,按一下「Develop」(開發) 分頁標籤。
  2. 在「Navigator」中,選取「Target Endpoints」(目標端點) 下方的「default」(預設)。
  3. 請注意,在程式碼編輯器中,<TargetEndpoint> 元素下有一個空白的 <HostedTarget/> 子元素。必須提供這個空白標記。這會告訴 Edge,Proxy 的目標是部署至代管目標環境的應用程式。

  4. 在「Navigator」中,留意「Scripts」部分下方的內容。Node.js 應用程式檔案會列在「代管」標籤下方。

  5. 在 Edge UI 中,查看「Scripts」的「hosted」下方列出的檔案:
    • app.yaml 檔案包含設定資訊。舉例來說,您可以新增環境變數,以供在執行階段的 Node.js 應用程式使用。您不需要修改這個檔案來執行本例。
    • index.js 檔案是 Node.js 應用程式的主要檔案。
    • 如果您的應用程式有任何模組依附元件,必須列在 package.json 中。

查看記錄檔

應用程式記錄檔可用於偵錯在建構階段和執行階段發生的問題。

  1. 在 Edge 使用者介面中,按一下「Develop」分頁標籤。
  2. 如要查看建構記錄,請按一下「Build Logs」
  3. 如要查看部署記錄,請按一下 [Runtime Logs] (執行階段記錄)。

    另請參閱「存取記錄檔」。

摘要

  • 您已將簡易的 Node.js 應用程式部署至 Hosted Targets 環境,並在 Edge UI 中進行測試。
  • 您瞭解到託管目標 Proxy 需要在名為 <HostedTarget/> 的目標端點中有一個特殊的空白標記。
  • 您已瞭解 Edge 會自動為您載入模組依附元件,且依附元件必須列在 package.json 檔案中。
  • 此外,您也學會如何檢查建構和執行階段記錄檔。

將 Node.js 從系統部署至 Edge

本節說明如何使用 apigeetool 將獨立的 Node.js 應用程式從本機系統部署至代管目標。apigeetool 公用程式會將 Node.js 應用程式封裝至新的託管目標 Proxy,並部署至 Edge。

安裝 apigeetool

開發人員要將 Proxy 程式碼部署至 Edge 時,建議採用 apigeetool。如要安裝 apigeetool,請執行下列 NPM 指令:

npm install -g apigeetool

建立 Node.js 應用程式

為了讓您更輕鬆地完成這項操作,我們提供簡單 Node.js 應用程式的程式碼。

  1. 為 Node.js 應用程式建立目錄。請呼叫 node-hosted-express 目錄。
  2. cd 至新目錄。
  3. 建立名為 index.js 的檔案,並將這段程式碼複製到檔案中。
  4. var express = require('express')
    var app = express()
    
    app.get('/', function(req, res) {
        res.json({
            hello: "Hello World!"
        })
    })
    
    app.get('/hello/:name', function(req, res) {
        var name = req.params.name
        res.json({
            hello: "hello " + name
        })
    })
    
    var server = app.listen(process.env.PORT || 9000, function() {
        console.log('Listening on port %d', server.address().port)
    })
    
  5. 建立名為 package.json 的檔案,然後將這段程式碼複製到該檔案中。請注意,快速模組會列為依附元件。
  6. {
        "name": "hello-world",
        "version": "1.0.0",
        "main": "index.js",
        "scripts": {
            "start": "node index.js --use_strict"
        },
        "author": "",
        "license": "",
        "dependencies": {
            "express": "^4.16.0"
        }
    }
    
  7. 建立名為 app.yaml 的檔案,並將下列程式碼複製到該檔案中:
  8. runtime: node
    runtimeVersion: 8
    application: my-express-app
    env:
      - name: NODE_ENV
        value: production
      - name: LOG_LEVEL
        value: 3
    
  9. 確認目錄如下所示:
    ls
    app.yaml index.js package.json
    

審查應用程式程式碼所需的目錄結構

Node.js 應用程式的結構必須與標準 Node.js 應用程式相同。不過,請務必先遵循下列規定,再使用 apigeetool 將應用程式部署至 Edge:

  • app.yaml 是必要的資訊清單檔案,而且必須存在於應用程式的根目錄中。如要進一步瞭解這個檔案,請參閱資訊清單檔案
  • 您必須提供 package.json 檔案。必須列出應用程式所需的所有依附元件。
  • node_modules 資料夾不是必要。 部署 Node.js 應用程式時,Edge 會為您執行 npm install。它會從 package.json 取得依附元件。只有在您有無法透過 npm 取得的自訂模組時,才需要明確提供 node_modules

部署 Proxy

  1. 在終端機中,cd 至 Node.js 應用程式的根目錄。
  2. 使用 deploymanagedtarget 指令執行 apigeetool
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    其中 -n 是您要為新 Proxy 指定的名稱。機構中的 ID 不得重複。您在名稱中使用的字元限制如下:a-z0-9._\-$%

    例如:

    apigeetool deployhostedtarget -o myorg -e test -n node-hosted-express -b /node-hosted-express -u jdoe@apigee.com

    如要進一步瞭解如何使用 apigeetool,請參閱 https://github.com/apigee/apigeetool-node

測試 Proxy

您可以透過 cURL 指令、REST 用戶端 (例如 Postman),或是 Trace 工具中的 Edge UI 來測試 Proxy。以下是 cURL 指令範例。

curl http://myorg-test.apigee.net/node-hosted-express
     {"date":1506992197427,"msg":"hello-world"}

取得建構記錄

建構記錄會顯示與部署及建構 Node.js 應用程式相關的輸出內容。請參閱「記錄檔」一節。

apigeetool getlogs -u username -o org -e env --hosted-build -n proxy-name

例如:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-build -n node-hosted-express

取得執行階段記錄

執行階段記錄會顯示與執行中應用程式相關的輸出內容。執行階段記錄的範圍為環境,並會傳回目前部署的 Proxy 修訂版本的記錄。另請參閱記錄檔

apigeetool getlogs -u username -o org -e env --hosted-runtime -n proxy-name

例如:

apigeetool getlogs -u jdoe@apigee.com -o myorg -e test --hosted-runtime -n node-hosted-express

在 Edge UI 中查看 Proxy

成功部署後,您可以在 Edge UI 的 API Proxy 中查看及編輯 Proxy。

將現有 Node.js Proxy 遷移至代管目標 Proxy

本節說明如何手動將採用傳統 Node.js 目標實作的現有 Edge API Proxy 遷移至代管目標。另外,本指南也會說明如何在執行遷移步驟後部署 Proxy。

遷移步驟會保留 API Proxy 結構、政策、流程和其他設定元素。您可以按照下列的四個步驟執行遷移作業,然後使用 apigeetool 部署已遷移的 Proxy。

步驟 1:調整 Proxy 檔案結構

如要調整檔案結構,API Proxy 必須位於本機檔案系統中。如果 Proxy 已部署在 Edge 上,您必須先下載 Proxy,才能繼續操作。在傳統設定中,包含 Node.js 程式碼的 Edge Proxy「bundle」遵循這個檔案結構。 Node.js 應用程式程式碼位於 resources/node 目錄中:

apiproxy/
    policies/
    proxies/
    targets/
    resources/
      node/
        Your application code


就代管目標而言,您必須將 Node.js 應用程式的根目錄放在 resources/hosted 目錄下。只要建立名為 resources/託管 的新目錄,並將 resources/node 的內容移到該目錄即可。接著,您可以刪除 resources/node 目錄。

apiproxy/
     policies/
     proxies/
     targets/
     resources/
       hosted/
         Your application code

步驟 2:新增資訊清單檔案

建立名為 app.yaml 的資訊清單檔案,並放入 apiproxy/resources/hosted 目錄。

以下是 app.yaml 檔案範例。它會指定執行階段為 Node.js (必要)。它也會在執行環境中建立環境變數 (可由 Node.js 應用程式存取的變數)。環境變數為選用項目,僅在此處顯示做為範例。如需詳細資訊和範例,請參閱資訊清單檔案

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


下列範例顯示了位於 Proxy 部署代管目標的正確位置的 Node.js 專案結構:

apiproxy/
   resources/
      hosted/
        index.js
        node_modules/
        app.yaml
        package.json

步驟 3:確認有 package.json 檔案

在傳統 Edge Node.js Proxy 中,package.json 為選用項目。不過,如果是代管目標,您必須在 apiproxy/resources/hosted 目錄中提供一個。請務必在這個檔案中指定應用程式的所有必要依附元件。

步驟 4:修改 Proxy 的目標端點

使用傳統 Node.js Proxy 時,目標端點檔案必須包含名為 <ScriptTarget> 的標記 (通常是 /apiproxy/targets/default.xml)。針對代管目標,您必須新增名為 &lt;HostedTarget/&gt; 的空白標記。如果檔案中有 ScriptTarget 標記,只需將其移除即可。 例如:

    <?xml version="1.0" encoding="UTF-8"?>
    <TargetEndpoint name="default">
       <Description />
       <FaultRules />
       <PreFlow name="PreFlow">
          <Request />
          <Response />
       </PreFlow>
       <PostFlow name="PostFlow">
          <Request />
          <Response />
       </PostFlow>
       <Flows />
       <HostedTarget />
    </TargetEndpoint>
    

部署 Proxy

您現在可以使用 apigeetool deployproxy 指令部署 Proxy。

  1. cd 至 Proxy 的根目錄:/apiproxy
  2. 請使用以下指令部署 Proxy:
  3. apigeetool deployproxy -u username -o org -e env -n proxy-name -d .

    例如:

    apigeetool deployproxy -u jdoe -o docs -e test -n hello-world -d .

如要進一步瞭解如何使用 apigeetool,請參閱:https://github.com/apigee/apigeetool-node/blob/master/README.md

測試 Proxy

您可以透過 cURL 指令、REST 用戶端 (例如 Postman),或是 Trace 工具中的 Edge UI 來測試 Proxy。以下是 cURL 指令範例:

curl http://myorg-test.apigee.net/hello-world
Hello,World!