您正在查看 Apigee Edge 說明文件。
前往 Apigee X 說明文件。info
取消部署託管目標 Proxy
當您取消部署包含 Hosted Targets 應用程式的 Edge Proxy 時,系統會取消部署相關聯的 Hosted Targets 應用程式,但不會刪除基礎應用程式映像檔。如果您重新部署 Proxy,系統會重新部署 Hosted Targets 應用程式。
刪除託管目標 Proxy
刪除託管目標 Proxy 之後,基礎執行階段執行個體會在一段時間內停止執行。不過,應用程式程式碼會保留下來。
存取記錄檔
記錄檔在偵錯和疑難排解時相當實用,您可以查看兩種類型的代管目標部署記錄檔:
- 版本記錄 - 顯示與部署及建構代管目標應用程式相關的輸出內容。
- 執行階段記錄:顯示與執行中的代管目標應用程式相關的輸出內容。執行階段記錄的範圍為環境,並顯示目前部署的 Proxy 修訂版本的記錄資訊。
透過 Edge UI 存取記錄
- 前往:apigee.com/edge
- 輸入登入憑證,然後按一下「登入」。
- 在側邊導覽選單中,依序選取「Develop」>「API Proxies」。
- 選取要查看記錄的 Proxy。
- 按一下「開發」分頁。
- 如要查看建構作業記錄,請按一下「Build Logs」。
- 如要查看執行階段記錄,請按一下「執行階段記錄」。
使用 API 存取記錄
您也可以使用 Edge API 擷取代管目標記錄。詳情請參閱「取得快取的 Node.js 記錄檔」一文。
使用私人 npm 存放區
本節說明如何在開發環境中使用私人 NPM 存放區時,將 Node.js 代理程式部署至代管目標。
使用私人存放區的須知事項
將 Node.js 應用程式部署至 Edge 時,系統會在部署程序中自動匯入專案的所有依附元件。基本上,託管目標會在部署完成後在您的程式碼上執行 npm install
。但是,如果您在開發環境中使用私人 NPM 存放區,就無法在 Cloud 中解析私人依附元件。在這種情況下,解決方法是使用部署公用程式 apigeetool 時使用 --bundled-dependencies
選項。另請參閱「從系統部署 Node.js 至 Edge」。
在 apigeetool
上使用 --bundled-dependencies
標記時,Node.js 應用程式會上傳至 Hosted Targets,且 package.json
的 bundledDependencies 陣列 中列出的所有本機/私人檔案都會經過壓縮並以套件上傳。
雖然這種情況不常見,但請注意,如果您在內部建立公開 NPM 存放區的鏡像,當部署套件包含指向私人鏡像的 .npmrc
或 package-lock.json
檔案時,部署作業就會失敗。在這種情況下,請務必在要部署的 Proxy 組合中省略 .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。
- 在左側導覽列中依序選取「Admin」>「Environments」>「Key Value Map」。
傳統版 Edge (Private Cloud)
如要使用傳統 Edge UI 存取「鍵/值對應」設定頁面,請按照下列步驟操作:
- 登入
http://ms-ip:9000
,其中 ms-ip 是管理伺服器節點的 IP 位址或 DNS 名稱。 - 在頂端導覽列中,依序選取「API」>「環境設定」>「鍵值對應」。
- 按一下「+ 鍵值對應」。
- 在「New Key Value Map」對話方塊中輸入名稱,然後選取「Encrypted」。
- 按一下 [新增]。
- 在您剛建立的每個 KVM 中,新增先前找到或建立的授權權杖。
- 在您的 app.yaml 檔案中新增項目,以參照 KVM 以及與 npm 驗證權杖相關聯的金鑰。如下所示:
- 頂層的 name 屬性會對應至即將建立的環境變數名稱。
- valueRef 底下的 name 會對應至您先前建立的 KVM。
- key 屬性會對應至您新增至 KVM 的 npm 權杖的鍵。
- 在 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 未部署,請查看建構記錄檔,確認是否能安裝私人 npm 模組失敗。如果是:
- 在「develop」分頁下方,確認是否有 .npmrc。
- 確認您的權杖有效 (嘗試在 kvm 中顯示權杖,在本機安裝模組)。
- 如果您使用的是自訂範圍,請務必加以設定。
env: - name: NPM_TOKEN valueRef: name: npm_store key: private_token
在此情況下:
指定套件內建依附元件的 NPM 版本
根據預設,系統會使用 NPM 4 在代管目標環境中安裝內含的依附元件。不過,如果您想使用其他 NPM 版本,可以在 NPM_VERSION
環境變數中指定。您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱「資訊清單檔案元素」。
如果您使用內含的依附元件,且未指定 NPM_VERSION
,則代管目標預設會使用 NPM 4。如果您不使用內含的依附元件,系統會使用您指定 Node.js 執行階段所包含的 NPM 版本。
隨附依附元件範例
如需搭配代管目標示範套件依附元件功能的範例,請參閱「如何使用自訂模組建立代管函式的 Node.js 應用程式」。新增健康狀態檢查端點
您可以選擇為 Node.js 應用程式實作健康狀態檢查端點。當 Node.js 應用程式開始檢查應用程式是否已啟動並在容器中執行時,Apigee 會使用這個端點。
根據預設,Apigee 預期的端點為 /health
。您可以在名為 HOSTED_TARGET_HEALTH_CHECK_PATH
的環境變數中指定端點,藉此變更預設端點。您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱「資訊清單檔案元素」。
不需要實作健康狀態檢查端點。不過,如果您確實實作健康狀態檢查端點,請注意下列事項:
- 如果您的應用程式在 Apigee 到達端點時結束,應用程式將不會如預期啟動。
- 端點傳回 404 找不到 HTTP 狀態碼也沒關係。
/health
或HOSTED_TARGET_HEALTH_CHECK_PATH
僅用於檢查應用程式是否正在執行。系統會略過實際回應。
變更 NPM 快取位置
較新版本的 Node.js 採用的 NPM 版本使用 /root/.npm
做為 NPM 快取。這個位置會對代管目標造成問題,因為代管目標執行階段使用 tmpfs 檔案系統,而該檔案系統中只有 /tmp
可寫入。如要解決這個問題,您可以在應用程式 app.yaml
檔案 (資訊清單檔案) 中,將 npm_config_cache
環境變數設為 /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 執行應用程式。如要執行這項操作,您可以使用應用程式 app.yaml
檔案 (資訊清單檔案) 中的 command
和 args
值,直接使用 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
只是示例。