託管目標教學課程

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件
info

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

教學課程會逐步說明下列工作:

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

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

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

登入

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

建立新的 Proxy

  1. 在側邊導覽選單中,依序選取「開發」>「API Proxy」
  2. 按一下「+ Proxy」
  3. 在「建立 Proxy」頁面中,選取「代管目標」
  4. 點選 [下一步]。
  5. 在「Proxy Name」欄位中輸入 hello-hosted-targets
  6. 請務必選取「Hello World」範例。
  7. 點選 [下一步]。
  8. 在「安全性」頁面中,選取「授權」的「Pass through (none)」
  9. 點選 [下一步]。
  10. 點選 [下一步]。
  11. 在「Build」頁面中,請務必選取「test」環境。請注意,Proxy Type 為「Hosted Targets」
  12. 按一下「Build and Deploy」(建構及部署)。Proxy 部署作業可能需要一些時間才能完成。
  13. 成功部署 Proxy 後,請按一下頁面底部的「View hello-hosted-targets proxy」(查看 hello-hosted-targets Proxy)
  14. 呼叫 API Proxy。最簡單的方法是前往「Trace」 分頁,啟動「Trace」 工作階段,然後按一下「Send」您應該會收到 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 應用程式檔案會列在「hosted」標籤下方。

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

查看記錄檔

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

  1. 在 Edge UI 中,按一下「開發」分頁標籤。
  2. 如要查看建構記錄,請按一下「建構記錄」
  3. 如要查看部署記錄,請按一下「執行階段記錄」

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

摘要

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

將 Node.js 從系統部署至 Edge

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

安裝 apigeetool

建議開發人員使用 apigeetool 將 Proxy 程式碼部署至 Edge。如要安裝 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. 使用 deployhostedtarget 指令執行 apigeetool
  3. apigeetool deployhostedtarget -o org -e env -n proxy-name -b /node-hosted-express -u username

    其中 -n 是您要為新 Proxy 命名的新名稱。機構中的每個使用者名稱不得重複。名稱只能使用下列字元: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 指令、Postman 等 REST 用戶端,或 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 使用者介面的「API Proxies」部分查看及編輯 Proxy。

將現有 Node.js Proxy 遷移至 Hosted Targets Proxy

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

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

步驟 1:調整 Proxy 檔案結構

如要調整檔案結構,API Proxy 必須位於本機檔案系統。如果 Proxy 部署在 Edge 上,請先下載,再繼續操作。在傳統設定中,包含 Node.js 程式碼的 Edge 代理伺服器「套件」會遵循這個檔案結構。 Node.js 應用程式程式碼會放在 resources/node 目錄中:

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


如果是代管目標,您必須將 Node.js 應用程式的根目錄放在名為 resources/hosted 的目錄下。只要建立名為 resources/hosted 的新目錄,然後將 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


以下範例顯示 Node.js 專案結構,該結構位於 Hosted Targets 部署作業的 Proxy 中正確的位置:

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

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

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

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

傳統 Node.js 代理伺服器需要在目標端點檔案 (通常是 /apiproxy/targets/default.xml) 中加入名為 <ScriptTarget> 的代碼。如果是代管目標,則需要加入名為 <HostedTarget/> 的空白代碼。如果檔案中有 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 指令、Postman 等 REST 用戶端,或 Edge UI 的「追蹤」工具測試 Proxy。以下是 cURL 指令範例:

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