查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
取消部署託管目標 Proxy
當您取消部署包含 託管目標應用程式的 Edge Proxy 時, Hosted Targets 應用程式已取消部署,但基礎應用程式映像檔不會遭到刪除。如果發生以下情況: 重新部署 Proxy,即可重新部署 Hosted Targets 應用程式。
刪除託管目標 Proxy
刪除託管目標 Proxy 之後,基礎執行階段執行個體就會停止執行 某些變化不過,應用程式程式碼會保留下來。
存取記錄檔
記錄檔在偵錯和疑難排解時相當實用,您可以查看兩種類型的記錄檔 託管目標部署:
- 版本記錄 - 顯示與部署及建構代管目標應用程式相關的輸出內容。
- 執行階段記錄 - 顯示與執行中的 Hosted Targets 應用程式相關的輸出內容。執行階段記錄檔 範圍限定於環境,並顯示目前部署的 Proxy 修訂版本記錄資訊。
從 Edge UI 存取記錄
- 前往:apigee.com/edge
- 輸入您的登入憑證,然後按一下「Sign In」。
- 依序選取「開發」>「開發」API Proxy。
- 選取要查看記錄檔的 Proxy。
- 按一下「開發」分頁標籤。
- 如要查看建構記錄,請按一下「Build Logs」。 ,瞭解如何調查及移除這項存取權。
- 如要查看執行階段記錄,請按一下「執行階段記錄」。
使用 API 存取記錄檔
您也可以使用 Edge API 擷取代管目標的記錄。詳情請參閱 取得快取的 Node.js 記錄檔。
使用私人 npm 存放區
本節說明如何在下列情況中,將 Node.js Proxy 部署至代管目標 請在以下位置使用私人 NPM 存放區: 您的開發環境。
使用私人存放區的須知事項
將 Node.js 應用程式部署至 Edge 時,系統會自動匯入專案的所有依附元件
可用來執行部署程序
基本上,託管目標會在部署完成後在您的程式碼上執行 npm install
。
不過,如果您在開發環境中使用私人 NPM 存放區,則私人的
無法在 Cloud 中解析依附元件。於
在此情況下,解決方案就是在使用 --bundled-dependencies
時
部署公用程式 apigeetool。其他參考資訊
將 Node.js 從系統部署至 Edge。
在 apigeetool
上使用 --bundled-dependencies
旗標時,
Node.js 應用程式將上傳至 Hosted Targets 和任何列出的本機/私人檔案
bundledDependencies 陣列中的
package.json
中的檔案會經過壓縮,並與軟體包一起上傳。
請注意,雖然不是常見的情況,但請注意,如果您在內部建立公開 NPM 存放區的鏡像,部署作業就會失敗
前提是部署套件包含指向目標的 .npmrc
或 package-lock.json
檔案
就能切換至私人鏡子在本例中,請務必省略 .npmrc
或 package-lock.json
使用私人 NPM 存放區部署
如要使用私人 NPM 存放區提供的模組,請按照下列步驟操作:
- 登入 npm:
npm login
- 取得 npm 驗證權杖:
- 找出 .npmrc (應該位於 ~/.npmrc)。
- 在 .npmrc 中,您會發現該行結尾的權杖如下所示:
//registry.npmjs.org/:_authToken=****
- 或使用
npm token <list | create | revoke>
指令列出 建立或撤銷驗證權杖。請參閱 npm-token 說明文件。 - 存取「鍵/值對應」設定頁面,詳情請見下文。
Edge
如何使用 Edge UI 存取鍵/值對應設定頁面:
- 登入 apigee.com/edge。
- 依序選取「管理員」>環境 >鍵/值對應。
傳統版 Edge (Private Cloud)
如何使用傳統版 Edge UI 存取鍵/值對應設定頁面:
- 登入「
http://ms-ip:9000
」(ms-ip 為以下應用程式) Management Server 節點的 IP 位址或 DNS 名稱。 - 選取「API」>環境設定 >鍵/值對應。
- 按一下「+ 鍵/值對應」。
- 在「New Key Value Map」對話方塊中輸入名稱,然後選取「Encrypted」。
- 按一下 [新增]。
- 將您先前找到或建立的驗證權杖,在每個 KVM 中新增為新項目 每個 Cloud Storage 值區
- 在您的 app.yaml 檔案中,新增參照 KVM 和金鑰的項目 與 npm 驗證權杖相關聯如下所示:
- 頂層 name 屬性與環境名稱相對應 這個變數即可。
- valueRef 下方的 name 會對應至您的 KVM
- key 屬性會對應至與您 npm 權杖相對應的鍵 已新增至 KVM。
- 在與 package.json 相同的目錄中建立 .npmrc 檔案。這個
檔案看起來會像這樣:
敬上 如果您並未使用//registry.npmjs.org/:_authToken=${NPM_TOKEN}
registry.npmjs.org
,則可設定範圍 .npmrc 檔案 新增一行程式碼,像這樣@myscope:registry=https://mycustomregistry.example.org
另請參閱 npmrc 說明文件。 - 上傳或更新包含 .npmrc 檔案和 app.yaml 檔案的 Node.js Proxy。
- 確認新的或更新的 Proxy 已部署完畢,並與所需的私人存放區搭配運作 後續課程我們將逐一介紹 預先訓練的 API、AutoML 和自訂訓練
- 如果 Proxy 無法部署,請查看建構記錄檔,確認 Proxy 無法部署 私人 npm 模組。如果是:
- 確認「開發」分頁下方有 .npmrc。
- 請確認權杖有效 (嘗試在本機安裝具有該權杖的模組) kvm)。
- 如果您使用的是自訂範圍,請務必加以設定。
env:
- name: NPM_TOKEN
valueRef:
name: npm_store
key: private_token
在此情況下:
指定套裝依附元件的 NPM 版本
根據預設,NPM v4 會用來在代管目標環境中安裝封裝依附元件。
不過,如果您想要使用其他 NPM 版本,可以在 NPM_VERSION
中指定。
環境變數您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱資訊清單檔案元素。
如果您使用封裝的依附元件,且未指定 NPM_VERSION
,則代管目標
預設會使用 NPM v4。如未使用隨附依附元件,則內含的 NPM 版本
都會使用指定的 Node.js 執行階段。
隨附依附元件範例
如需關於代管目標封裝依附元件功能的範例,請參閱 如何使用自訂模組,透過代管函式建立 Node.js 應用程式。新增健康狀態檢查端點
您可以選擇為 Node.js 應用程式實作健康狀態檢查端點。Apigee 會在 Node.js 應用程式會開始檢查應用程式是否已在容器中啟動及執行。
根據預設,Apigee 預期的端點為 /health
。如要變更預設設定
方法是在名為「端點」的環境變數中指定端點
HOSTED_TARGET_HEALTH_CHECK_PATH
。您可以在應用程式資訊清單中設定這個變數
檔案。詳情請參閱資訊清單檔案元素。
不需要實作健康狀態檢查端點。不過,若您實作健康狀態檢查 端點,請注意下列項目:
- 如果您的應用程式在 Apigee 到達端點時結束,應用程式將不會如預期啟動。
- 如果您的端點傳回 404 找不到 HTTP 狀態也沒關係。
/health
或HOSTED_TARGET_HEALTH_CHECK_PATH
僅用於檢查應用程式是否正在執行。 系統會忽略實際回應。
變更 NPM 快取位置
較新版本的 Node.js 採用的 NPM 版本使用 /root/.npm
做為 NPM 快取。
這個位置顯示代管目標的問題,因為該目錄位置是唯讀狀態
由於 Hosted Target 執行階段使用 tmpfs 檔案系統,其中僅可寫入 /tmp
。
如要解決這個問題,您可以在以下位置設定 npm_config_cache
環境變數:
應用程式的
app.yaml
檔案 (資訊清單檔案)
移至 /tmp
中的目錄。例如:
runtime: node application: my-express-app env: - name: npm_config_cache value: /tmp/.npm - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
在不使用 NPM 的情況下執行應用程式
根據預設,代管目標會使用 npm start
執行您的代管目標應用程式。但
我們在前一項工作中討論了使用 NPM 的問題,因為新版本會嘗試使用
/root/.npm
用於 NPM 快取,無法寫入,因而會導致代管目標發生
無法啟動上一個工作可以緩解這個問題,而另一個選項則是
不用 NPM 也能執行應用程式方法是使用 command
和
應用程式中的 args
個值
app.yaml
檔案 (資訊清單檔案)
以便直接使用 node index.js
執行代管目標。例如:
runtime: node application: my-express-app command: node args: - index.js env: - name: NODE_ENV value: production - name: LOG_LEVEL value: 3
node index.js
只是
範例。