您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
取消部署 Hosted Targets Proxy
如果 Edge Proxy 包含代管目標應用程式,取消部署時,系統會一併取消部署相關聯的代管目標應用程式,但不會刪除基礎應用程式映像檔。如果重新部署 Proxy,Hosted Targets 應用程式也會重新部署。
刪除代管目標 Proxy
刪除代管目標 Proxy 後,基礎執行階段執行個體會在一段時間內停止執行。但應用程式程式碼會保留。
存取記錄檔
記錄檔有助於偵錯和疑難排解。您可以查看兩種記錄檔,瞭解代管目標的部署情況:
- 建構記錄:顯示與部署及建構代管目標應用程式相關的輸出內容。
- 執行階段記錄:顯示與執行中的代管目標應用程式相關的輸出內容。執行階段記錄會限定於環境,並顯示目前部署的 Proxy 修訂版本記錄資訊。
從 Edge UI 存取記錄
- 前往:apigee.com/edge
- 輸入登入憑證,然後按一下「登入」。
- 在側邊導覽選單中,依序選取「開發」>「API Proxy」。
- 選取要查看記錄的 Proxy。
- 按一下「開發」分頁標籤。
- 如要查看建構記錄,請按一下「建構記錄」。
- 如要查看執行階段記錄,請按一下「執行階段記錄」。
透過 API 存取記錄
您也可以使用 Edge API 擷取代管目標記錄。詳情請參閱「取得快取的 Node.js 記錄」。
使用私人的 npm 存放區
本節說明如何在使用私人 NPM 存放區的開發環境中,將 Node.js Proxy 部署至代管目標。
使用私人存放區的注意事項
將 Node.js 應用程式部署至 Edge 時,系統會在部署程序中自動匯入專案的所有依附元件。基本上,當您部署程式碼時,系統會在程式碼上執行npm install代管目標。
不過,如果您在開發環境中使用私人 NPM 存放區,則無法在雲端解析私人依附元件。在這種情況下,解決方法是在使用部署公用程式 apigeetool 時,使用 --bundled-dependencies 選項。另請參閱
將 Node.js 從系統部署至 Edge。
在 apigeetool 上使用 --bundled-dependencies 標記時,Node.js 應用程式會上傳至託管目標,且 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 UI 存取鍵/值對應設定頁面,請按照下列步驟操作:
- 登入 apigee.com/edge。
- 在左側導覽列中,依序選取「管理」>「環境」>「鍵值對應」。
Classic Edge (Private Cloud)
如要使用傳統 Edge UI 存取「鍵/值對應」設定頁面,請按照下列步驟操作:
- 登入
http://ms-ip:9000,其中 ms-ip 是管理伺服器節點的 IP 位址或 DNS 名稱。 - 在頂端導覽列中,依序選取「APIs」>「Environment Configuration」>「Key Value Maps」。
- 按一下「+ 鍵值對應」。
- 在「New Key Value Map」(新的鍵值對應) 對話方塊中輸入名稱,然後選取「已加密」。
- 按一下 [新增]。
- 在您剛建立的每個 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 文件。 - 上傳或更新 Node.js 代理程式,並一併上傳 .npmrc 檔案和 app.yaml 檔案。
- 確認新版或更新版 Proxy 已部署,且可搭配所需的私有存放區模組運作。
- 如果 Proxy 未部署,請檢查建構記錄,確認是否無法安裝私有 npm 模組。如果是這樣的話:
- 在「開發」分頁下方,確認 .npmrc 是否存在。
- 確認權杖有效 (嘗試在本機安裝模組,並在 kvm 中提供權杖)。
- 如果您使用自訂範圍,請確認已設定該範圍。
env:
- name: NPM_TOKEN
valueRef:
name: npm_store
key: private_token其中:
為已組合的依附元件指定 NPM 版本
根據預設,系統會使用 NPM v4 在 Hosted Targets 環境中安裝已組合的依附元件。
不過,如要使用其他 NPM 版本,可以在 NPM_VERSION 環境變數中指定。您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱「資訊清單檔案元素」。
如果您使用已組合的依附元件,且未指定 NPM_VERSION,則 Hosted Targets 預設會使用 NPM v4。如果您未使用已組合的依附元件,系統會使用指定 Node.js 執行階段中包含的 NPM 版本。
套裝組合依附元件範例
如要查看使用託管目標的套裝依附元件功能範例,請參閱「如何使用自訂模組,透過託管函式建立 Node.js 應用程式」。新增健康狀態檢查端點
您可以為 Node.js 應用程式實作健康狀態檢查端點。當 Node.js 應用程式開始檢查應用程式是否在容器中正常運作時,Apigee 會使用這個端點。
根據預設,Apigee 預期的端點為 /health。您可以透過名為 HOSTED_TARGET_HEALTH_CHECK_PATH 的環境變數指定端點,變更預設端點。您可以在應用程式的資訊清單檔案中設定這個變數。詳情請參閱「資訊清單檔案元素」。
您不一定要實作健康狀態檢查端點,不過,如果您確實要實作健康狀態檢查端點,請注意下列事項:
- 如果 Apigee 執行到端點時應用程式結束,應用程式將無法如預期啟動。
- 如果端點傳回 404 Not Found HTTP 狀態,也沒關係。
/health或HOSTED_TARGET_HEALTH_CHECK_PATH僅用於檢查應用程式是否正在執行。系統會忽略實際回應。
變更 NPM 快取位置
新版 Node.js 使用的 NPM 版本會將 NPM 快取儲存在 /root/.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 執行應用程式
根據預設,Hosted Targets 會使用 npm start 執行 Hosted Target 應用程式。但在上一個工作中,我們討論了使用 NPM 的問題,因為新版會嘗試使用 NPM 快取的 /root/.npm,而這個快取是無法寫入的,因此導致 Hosted Target 無法啟動。雖然先前的作業會解決這個問題,但您也可以選擇不使用 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 只是範例。