查看 Apigee Edge 說明文件。
前往
Apigee X說明文件。 資訊
支援哪個版本的 Node.js 版本 是 Apigee Edge?
Edge 目前支援 Node.js 0.10.32。
哪些標準 Node.js 模組 Edge 是否支援?
請參閱下表,判斷哪種標準 Node.js 模組 Edge 物件在某些情況下,只有部分支援所含模組。這些是模組 Node.js 的內建功能模組 | 狀態 | 附註 |
---|---|---|
assert |
有權限 | |
buffer |
有權限 | |
child_process |
受限制 | 如果嘗試產生子程序,將擲回例外狀況。不過 「叉子」即可產生下標。 |
cluster |
已停用 | cluster.isMaster 方法一律會傳回 true,其他方法則不會實作。 每個 Node.js 指令碼都會部署一個副本至每個 Edge 訊息處理器。 |
crypto |
有權限 | |
dns |
支援 | |
domain |
有權限 | |
dgram |
受限制 | Apigee 環境中的 Node.js 應用程式無法存取下列來源的服務: 因此是透過 UDP 傳輸網際網路 |
events |
有權限 | |
fs |
受限制 | 檔案系統的存取權僅限於啟動指令碼的目錄:
/resources/node 目錄內。Node.js 指令碼可能會在以下位置讀取和寫入檔案:
此目錄為例,只是暫時暫存區域,但是無法保證
以及檔案留存的時間 |
http |
有權限 | 傳入要求的虛擬主機和路徑是在 API Proxy 中指定,而非 HTTP 模組請參閱「瞭解 http 和 https 支援 「模組」瞭解詳情 |
https |
有權限 | 建立「https」伺服器的行為與「http」伺服器請參閱「瞭解 http 和 https 模組支援」一文。取得更多 可能不準確或不適當 |
module |
有權限 | |
net |
受限制 | 嘗試監聽傳入的 TCP 連線將會產生例外狀況。 |
path |
有權限 | |
module |
有權限 | |
process |
部分支援 | 操控使用者 ID、群組成員身分和工作目錄的功能 支援。 |
punycode |
有權限 | |
querystring |
有權限 | |
readline |
已停用 | 在 Apigee Edge 上執行指令碼沒有標準輸入。 |
repl |
已停用 | 在 Apigee Edge 上執行指令碼沒有標準輸入。 |
module |
已納入 | |
STDIO |
有權限 |
標準輸出內容和錯誤會轉送至 Apigee Edge 中的記錄檔 基礎架構按一下「Node.js 記錄檔」即可查看這些記錄檔 按鈕,以及您的 API Proxy 的 Apigee Edge 管理 UI。 在 Apigee Edge 上執行指令碼沒有標準輸入。不過,您可以將 使用 TargetEndpoint 的 ScriptTarget 元素。請參閱進階 ScriptTarget 設定,瞭解如何 瞭解詳情 |
stream |
有權限 | |
string_decoder |
有權限 | |
timers |
已納入 | |
tls |
有權限 | 傳輸層安全標準 (TLS) 參數的運作方式基本上與 一般 Node.js請參閱「在 Apigee Edge 上使用 TLS (SSL) Node.js 模組」一文。 。 |
tty |
已停用 | 在 Apigee Edge 上執行指令碼沒有標準輸入。 |
url |
有權限 | |
util |
支援 | |
vm |
支援 | |
zlib |
有權限 |
其他支援的模組
本節列出標準 Node.js 不支援的其他模組, 。Trireme 是您在節點上執行的開放原始碼 Node.js 容器 Apigee Edge。旨在在 Java 虛擬機器 (JVM) 中執行 Node.js 指令碼,所有的運算 這些模組適用於 NPM。
模組 | 說明 |
---|---|
apigee-access | 允許在 Apigee Edge 平台上執行的 Node.js 應用程式存取 Apigee 專屬功能。您可以使用這個模組:存取及修改流程 變數、從安全儲存空間擷取資料,以及使用邊緣快取、配額和 OAuth 免費 Google Cloud 服務另請參閱使用 apigee-access 模組。 |
trireme-support | 讓 Node.js 應用程式使用 Trireme 特有的功能。目前 僅支援一項功能,載入以 Java 建構的 Node.js 模組。注意: Edge Cloud 不支援 loadJars。 |
trireme-xslt | 呈現 XLST 處理作業的抽象化機制。專為 Trireme 打造 ,在執行 Node.js 應用程式時,更有效率地處理 XSLT Java。 |
trireme-jdbc | 可從 Node.js 存取 JDBC。注意:Edge Cloud 不支援這項操作。適用於邊緣不公開 雲端,您可以將 JDPC JAR 檔案放在類別路徑中,然後使用這個模組。 |
支援常用的 Node.js 模組
Node.js 指令碼的限制
不過請注意,Edge 會對 Node.js 指令碼設下特定限制,例如: 包括:
- Apigee Edge 環境中的 Node.js 應用程式無法存取網際網路上的服務 透過 UDP
- 檔案系統存取權僅限於啟動 Node.js 指令碼的目錄: /resources/node 目錄。Node.js 指令碼可讀取及寫入這個目錄中的檔案, 做為暫存區,但是我們無法保證檔案 持續性。
- 嘗試監聽傳入的 TCP 連線會產生例外狀況。
- 操控使用者 ID、群組成員身分和工作目錄的功能 支援。
- 如為標準輸入內容,您只能使用 ScriptTarget 傳遞引數
一個目標端點。詳情請參閱進階內容
ScriptTarget 設定。
- 如要輸出標準輸出內容,只能使用 Edge 中的 Node.js 記錄檔按鈕
Proxy 的管理 UI您也可以使用「apigeetool getlogs」指令如要
詳情請參閱部署
獨立的 Node.js 應用程式
- 不支援依賴原生程式碼的模組。
- 未採用 EcmaScript 6 功能 (例如 Promise 和 Generator) 的模組不適用
支援。
- Node.js 執行階段旗標,例如「harmony-proxies」不支援。
設定 IP 連線限制 on Edge for Private Cloud
Edge for Private Cloud 可以限制 Node.js 程式碼從一開始存取 IP 位址 與「10.」、「192.168」和 localhost。如果您試圖存取這些 IP 位址, 表單中出現錯誤:
{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }
如要修改這些限制,您可以在頁面設定 conf_nodejs_connect.ranges.denied 屬性 message-processors.properties 檔案。根據預設,此屬性具有下列值:
- Edge 4.17.05 以下版本:conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
- Edge 4.17.09 以上版本:conf_nodejs_connect.ranges.denied= (意義) 沒有限制)
如何設定這項屬性:
- 開啟 message-processor.properties
編輯。如果檔案不存在,請建立檔案:
>V 罩杯 /<inst_root>/apigee/customer/application/message-processor.properties - 視需要設定屬性。例如,若要僅拒絕存取 localhost:
conf_nodejs_connect.ranges.denied=127.0.0.1/32 - 儲存變更。
- 請確定屬性檔案的擁有者為「apigee」使用者:
> chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties - 重新啟動訊息處理器:
> /<inst_root>/apigee/apigee-service/bin/apigee-service Edge-message-processor 重新啟動
瞭解 http 和 https 模組支援
在 Apigee Edge 中執行的所有 Node.js 應用程式都必須使用 http
或
https
模組,用於監聽傳入要求。如果您要部署
就不會監聽傳入的要求,只會執行並結束。
http
和 https
模組的 listen
方法
Node.js 使用通訊埠編號做為參數。例如:
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
這個「通訊埠」引數是 Node.js 的必要引數,但 Apigee Edge 會忽略這個參數。 Node.js 指令碼執行的 API Proxy 會指定「虛擬主機」聆聽內容 且 Node.js 應用程式使用相同的虛擬主機,就像其他 Apigee Edge 一樣 Proxy 上。
Apigee 中的每個環境都有至少一個虛擬主機。虛擬主機會定義 HTTP
以及與 Apigee 機構連線的設定環境中的所有 API Proxy 都會共用
相同的虛擬機器根據預設,每個環境可使用兩個虛擬主機:
《default
》和《secure
》。如需詳細資訊,請參閱
取得虛擬主機和 API
開發生命週期。
apigeetool deploynodeapp
指令會產生 Apigee Edge Proxy 包裝函式
Node.js 應用程式的所有常見問題部署後,Node.js 應用程式會監聽預設值
為環境定義的虛擬主機Node.js 應用程式的網址一律為
http://{org_name}-{env_name}.apigee.net
。
處理傳入 要求
和其他 Apigee Edge 應用程式一樣,如果 Proxy 應用程式設為監聽
secure
虛擬主機之後,該主機就會接受使用 HTTPS 的傳入要求。
處理傳出 要求
除了接收傳入流量,Apigee Edge 中的 Node.js 應用程式還可以使用
http
和 https
模組可提出傳出要求,就像其他 Node.js 一樣
應用程式。這些模組的運作方式與在 Node.js 中一樣。
瞭解 Tls 模組
Apigee Edge 支援 Node.js tls 模組。
這個模組會使用 OpenSSL 提供傳輸層安全標準 (TLS) 和/或安全資料傳輸層 (SSL)
(SSL) 加密串流通訊。您可以使用 tls
模組建立安全的
這類連線會從在 Edge 上執行的 Node.js 應用程式啟動後端服務。
如要瞭解 tls
模組在 Apigee Edge 中的運作方式,請務必:
瞭解在 Apigee Edge 上如何使用 virtual hosts
。Apigee 中的所有環境
至少有一個虛擬主機虛擬主機會定義與
Apigee 機構。環境中的所有 API Proxy 都會共用相同的虛擬主機。根據預設
每個環境都有兩種虛擬主機可用:default
和
secure
。如要進一步瞭解虛擬主機,請參閱
取得虛擬主機和 API
開發生命週期。
接著來看看 Apigee Edge 如何處理傳入和傳出的 TLS (SSL) 通訊 Node.js 應用程式的要求:
處理傳入 要求
視貴機構的虛擬主機設定方式而定,Edge 可提供下列服務 選項:
- 如果 API Proxy 設為監聽
default
虛擬主機, 接受透過 HTTP 發出的要求。 - 如果 API Proxy 設為監聽
secure
虛擬主機, 接受 HTTPS 的要求。網址位於apigee.net
網域下,且 將使用*.apigee.net
的萬用字元 SSL 憑證。只要應用程式 向apigee.net
網域發出要求後,SSL 憑證就會驗證 一般問題。
處理傳出 要求
您可以使用 tls
模組發出傳出要求,方法與先前一樣
通常在 Node.js 中運作基本上,您必須新增用戶端金鑰和憑證
(.pem
檔案) 至 resources/node
目錄,並在
指令碼如要瞭解如何使用 tls
模組及其方法,請參閱
Node.js tls 模組說明文件。
進階 ScriptTarget 設定
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>