คุณกำลังดูเอกสารประกอบ 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 จะแสดงค่า "จริง" เสมอ และจะไม่นำวิธีการอื่นๆ มาใช้ ระบบปรับใช้สคริปต์ Node.js แต่ละสคริปต์ให้กับโปรแกรมประมวลผลข้อความ Edge แต่ละตัว |
crypto |
รองรับ | |
dns |
รองรับ | |
domain |
รองรับ | |
dgram |
จำกัด | แอปพลิเคชัน Node.js ในสภาพแวดล้อม Apigee จะเข้าถึงบริการบนไม่ได้ อินเทอร์เน็ตผ่าน UDP เนื่องจากสถาปัตยกรรมเครือข่ายของเรา |
events |
รองรับ | |
fs |
จำกัด | การเข้าถึงระบบไฟล์จะจำกัดไว้เฉพาะไดเรกทอรีที่เรียกใช้สคริปต์เท่านั้น:
ไดเรกทอรี /resources/node สคริปต์ Node.js อาจอ่านและเขียนไฟล์ภายใน
ไดเรกทอรีนี้ เช่น เป็นพื้นที่สำหรับรอยขีดข่วนชั่วคราว แต่ไม่มีการรับประกัน
ไฟล์จะคงอยู่นานแค่ไหน |
http |
รองรับ | มีการระบุโฮสต์เสมือนและเส้นทางสำหรับคำขอขาเข้าในพร็อกซี API ไม่ใช่ตาม โมดูล HTTP โปรดดู "การทำความเข้าใจการสนับสนุนสำหรับ http และ https โมดูล" เพื่อดูข้อมูลเพิ่มเติม |
https |
รองรับ | การสร้าง "https" เซิร์ฟเวอร์ทำงานเหมือนกับ "http" เซิร์ฟเวอร์ ดู "การทำความเข้าใจการรองรับโมดูล HTTP และ https" สำหรับข้อมูลเพิ่มเติม |
module |
รองรับ | |
net |
จำกัด | การพยายามฟังการเชื่อมต่อ TCP ขาเข้าจะสร้างข้อยกเว้น |
path |
รองรับ | |
module |
รองรับ | |
process |
การสนับสนุนบางส่วน | ไม่สามารถปรับฟังก์ชันการทํางานของรหัสผู้ใช้ การเป็นสมาชิกกลุ่ม และไดเรกทอรีที่ใช้งานอยู่ได้ ที่รองรับ |
punycode |
รองรับ | |
querystring |
รองรับ | |
readline |
ปิดใช้ | ไม่มีอินพุตมาตรฐานสำหรับสคริปต์ที่ทำงานบน Apigee Edge |
repl |
ปิดใช้ | ไม่มีอินพุตมาตรฐานสำหรับสคริปต์ที่ทำงานบน Apigee Edge |
module |
รวม | |
STDIO |
รองรับ |
ระบบจะกำหนดเส้นทางเอาต์พุตมาตรฐานและข้อผิดพลาดไปยังไฟล์บันทึกภายใน Apigee Edge โครงสร้างพื้นฐาน คุณสามารถดูบันทึกเหล่านี้โดยคลิกบันทึก Node.js และ UI การจัดการ Apigee Edge สำหรับพร็อกซี API ไม่มีอินพุตมาตรฐานสำหรับสคริปต์ที่ทำงานบน Apigee Edge อย่างไรก็ตาม คุณสามารถข้าม อาร์กิวเมนต์ที่ใช้องค์ประกอบ ScriptTarget ของ TargetEndpoint โปรดดูการกำหนดค่า ScriptTarget ขั้นสูงสำหรับ ข้อมูลเพิ่มเติม |
stream |
รองรับ | |
string_decoder |
รองรับ | |
timers |
รวม | |
tls |
รองรับ | พารามิเตอร์ Transport Layer Security (TLS) โดยทั่วไปแล้วจะทำงานในลักษณะเดียวกัน Node.js ปกติ โปรดดูการใช้โมดูล Node.js TLS (SSL) ใน Apigee Edge เพื่อดูรายละเอียด |
tty |
ปิดใช้ | ไม่มีอินพุตมาตรฐานสำหรับสคริปต์ที่ทำงานบน Apigee Edge |
url |
รองรับ | |
util |
รองรับ | |
vm |
รองรับ | |
zlib |
รองรับ |
โมดูลที่รองรับเพิ่มเติม
ส่วนนี้จะแสดงโมดูลเพิ่มเติมที่ไม่ได้รับการสนับสนุนใน Node.js มาตรฐาน แต่ รองรับโดย Trireme และ Trireme ที่ทำงานใน Apigee Edge Trireme คือคอนเทนเนอร์ Node.js แบบโอเพนซอร์สที่ทำงานบน Apigee Edge โดยได้รับการออกแบบมาให้เรียกใช้สคริปต์ Node.js ภายใน Java Virtual Machine (JVM) ทั้งหมด โมดูลเหล่านี้มีให้ใช้งานใน NPM
โมดูล | คำอธิบาย |
---|---|
apigee-access | อนุญาตให้แอปพลิเคชัน Node.js ที่ทำงานบนแพลตฟอร์ม Apigee Edge มีสิทธิ์เข้าถึง ฟังก์ชันเฉพาะสำหรับ Apigee คุณสามารถใช้โมดูลนี้เพื่อเข้าถึงและแก้ไขขั้นตอน ตัวแปรต่างๆ ให้ดึงข้อมูลจากที่จัดเก็บที่ปลอดภัยและใช้แคช Edge, โควต้า และ OAuth บริการต่างๆ โปรดดูเพิ่มเติมที่การใช้ โมดูลการเข้าถึง Apigee |
trireme-support | ช่วยให้แอปพลิเคชัน Node.js ใช้ประโยชน์จากฟีเจอร์ที่มีใน Trireme โดยเฉพาะ ปัจจุบัน รองรับเฉพาะฟีเจอร์เดียว นั่นคือการโหลดโมดูล Node.js ที่สร้างขึ้นใน Java หมายเหตุ: Edge Cloud ไม่รองรับloadJars |
trireme-xslt | แสดงนามธรรมของการประมวลผล XLST ผลิตภัณฑ์นี้ออกแบบมาเพื่อรุ่น Trireme โดยเฉพาะ แพลตฟอร์มเพื่อให้สามารถประมวลผล XSLT อย่างมีประสิทธิภาพเมื่อแอปพลิเคชัน Node.js ทำงาน Java |
trireme-jdbc | ให้การเข้าถึง JDBC จาก Node.js หมายเหตุ: ไม่รองรับใน Edge Cloud สำหรับ Edge Private คุณสามารถวางไฟล์ JDPC JAR ในเส้นทางชั้นเรียนและใช้โมดูลนี้ได้ในระบบคลาวด์ |
การรองรับโมดูล Node.js ที่ใช้กันโดยทั่วไป
ข้อจำกัดเกี่ยวกับสคริปต์ Node.js
อย่างไรก็ตาม โปรดทราบว่า Edge กำหนดข้อจำกัดบางประการในสคริปต์ Node.js เช่น ดังต่อไปนี้:
- แอปพลิเคชัน Node.js ในสภาพแวดล้อม Apigee Edge จะเข้าถึงบริการบนอินเทอร์เน็ตไม่ได้ ผ่าน UDP เนื่องจากสถาปัตยกรรมเครือข่าย Edge
- การเข้าถึงระบบไฟล์จะจำกัดไว้เฉพาะไดเรกทอรีที่เปิดตัวสคริปต์ Node.js: ไดเรกทอรี /resources/node สคริปต์ Node.js สามารถอ่านและเขียนไฟล์ภายในไดเรกทอรีนี้ได้สำหรับ เป็นเพียงพื้นที่สำหรับรอยขีดข่วนชั่วคราว แต่ยังไม่สามารถรับประกันได้ว่าไฟล์จะ คงอยู่
- การพยายามฟังการเชื่อมต่อ TCP ขาเข้าจะสร้างข้อยกเว้น
- ไม่สามารถปรับฟังก์ชันการทํางานของรหัสผู้ใช้ การเป็นสมาชิกกลุ่ม และไดเรกทอรีที่ใช้งานอยู่ได้ ที่รองรับ
- สำหรับอินพุตมาตรฐาน ระบบจะจำกัดให้ส่งอาร์กิวเมนต์โดยใช้ ScriptTarget เท่านั้น
ของ TargetEndpoint ดูส่วนขั้นสูง
การกำหนดค่า ScriptTarget สําหรับข้อมูลเพิ่มเติม
- สำหรับเอาต์พุตมาตรฐาน คุณจะใช้ปุ่มบันทึกของ Node.js ใน Edge ได้จำกัด
UI การจัดการสำหรับพร็อกซี คุณยังใช้ "getlogs ของ apigeetool" ได้ คำสั่ง สำหรับข้อมูลเพิ่มเติม
โปรดดูข้อมูลที่หัวข้อการติดตั้งใช้งาน
แอป Node.js แบบสแตนด์อโลน
- ระบบไม่รองรับโมดูลที่ใช้โค้ดแบบเนทีฟ
- โมดูลที่ขึ้นอยู่กับฟีเจอร์ EcmaScript 6 เช่น Promises and Generators ไม่ได้
ที่รองรับ
- แฟล็กรันไทม์ของ Node.js เช่น "harmony-proxies" ไม่ได้รับการสนับสนุน
การตั้งค่าข้อจำกัดการเชื่อมต่อ IP บน Edge สำหรับ 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 ใน
Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
> Vi /<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
แอปพลิเคชัน Node.js ทั้งหมดที่ทำงานใน Apigee Edge ต้องใช้ http
หรือ
https
โมดูลเพื่อฟังคำขอที่เข้ามาใหม่ หากคุณต้องทำให้สคริปต์ใช้งานได้
จะไม่คอยฟังคำขอที่เข้ามาใหม่ แต่จะเรียกใช้และออกเท่านั้น
เมธอด listen
ของโมดูล http
และ https
ใน
Node.js จะใช้หมายเลขพอร์ตเป็นพารามิเตอร์ เช่น
svr.listen(process.env.PORT || 9000, function() { console.log('The server is running.'); });
"พอร์ต" นี้ ต้องมีอาร์กิวเมนต์ใน Node.js แต่ Apigee Edge ไม่สนใจพารามิเตอร์นี้ แต่ พร็อกซี API ที่สคริปต์ Node.js เรียกใช้ จะระบุ "โฮสต์เสมือน" ที่มันฟังอยู่ และแอปพลิเคชัน Node.js จะใช้โฮสต์เสมือนเดียวกัน เช่นเดียวกับ Apigee Edge อื่นๆ พร็อกซี
ทุกสภาพแวดล้อมใน Apigee มีโฮสต์เสมือนอย่างน้อย 1 โฮสต์ โฮสต์เสมือนจะกำหนด HTTP
การตั้งค่าสำหรับการเชื่อมต่อกับองค์กร Apigee พร็อกซี API ทั้งหมดในสภาพแวดล้อมแชร์
โฮสต์เสมือนเดียวกัน โดยค่าเริ่มต้น แต่ละสภาพแวดล้อมจะมีโฮสต์เสมือน 2 รายการ ดังนี้
default
และ secure
สำหรับข้อมูลเพิ่มเติม โปรดดู
รับโฮสต์เสมือนและ API
ในวงจรการพัฒนา
คำสั่ง apigeetool deploynodeapp
จะสร้าง Wrapper ของพร็อกซี Apigee Edge
กับแอปพลิเคชัน Node.js เมื่อทำให้ใช้งานได้ แอปพลิเคชัน Node.js จะรอฟังค่าเริ่มต้น
โฮสต์เสมือนที่กำหนดไว้สำหรับสภาพแวดล้อม URL สำหรับแอปพลิเคชัน Node.js จะเป็น
http://{org_name}-{env_name}.apigee.net
การจัดการสายเรียกเข้า คำขอ
เช่นเดียวกับแอปพลิเคชัน Apigee Edge อื่นๆ หากมีการตั้งค่าแอปพลิเคชันพร็อกซีให้รับฟังใน
โฮสต์เสมือน secure
จากนั้นจะยอมรับคำขอที่เข้ามาโดยใช้ HTTPS
กำลังจัดการสายโทรออก คำขอ
นอกเหนือจากการรับการจราจรของข้อมูลขาเข้าแล้ว แอปพลิเคชัน Node.js ภายใน Apigee Edge อาจใช้เมธอด
http
และ https
โมดูลสำหรับส่งคำขอขาออก เช่นเดียวกับ Node.js อื่นๆ
แอปพลิเคชัน โมดูลเหล่านี้จะทำงานเช่นเคยใน Node.js
ทำความเข้าใจการสนับสนุนสำหรับ โมดูล Tls
Apigee Edge รองรับโมดูล tls ของ Node.js
โมดูลนี้ใช้ OpenSSL เพื่อให้บริการ Transport Layer Security (TLS) และ/หรือ Secure Socket Layer
(SSL) การสื่อสารสตรีมที่เข้ารหัส คุณใช้โมดูล tls
เพื่อสร้างการรักษาความปลอดภัยได้
การเชื่อมต่อกับบริการแบ็กเอนด์จากแอปพลิเคชัน Node.js ที่ทำงานบน Edge
หากต้องการทำความเข้าใจวิธีการทำงานของโมดูล tls
บน Apigee Edge คุณจะต้องทำดังนี้
ทำความเข้าใจวิธีใช้ virtual hosts
ใน Apigee Edge ทุกสภาพแวดล้อมใน Apigee
มีโฮสต์เสมือนอย่างน้อย 1 รายการ โฮสต์เสมือนจะกำหนดการตั้งค่า HTTP สำหรับการเชื่อมต่อกับ
องค์กร Apigee พร็อกซี API ทั้งหมดในสภาพแวดล้อมใช้โฮสต์เสมือนเดียวกัน โดยค่าเริ่มต้น
แต่ละสภาพแวดล้อมมีโฮสต์เสมือน 2 รายการ: default
และ
secure
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับโฮสต์เสมือน โปรดดู
รับโฮสต์เสมือนและ API
ในวงจรการพัฒนา
ตอนนี้เรามาดูวิธีที่ Apigee Edge จัดการการสื่อสารด้วย TLS (SSL) สำหรับขาเข้าและขาออก คำขอในแอปพลิเคชัน Node.js
การจัดการสายเรียกเข้า คำขอ
Edge จะให้ข้อมูลต่อไปนี้ ทั้งนี้ขึ้นอยู่กับการกำหนดค่าโฮสต์เสมือนขององค์กร ตัวเลือก:
- หากมีการกำหนดค่าพร็อกซี API ให้รับคำสั่งบนโฮสต์เสมือน
default
ระบบจะดำเนินการ ยอมรับคำขอผ่าน HTTP - หากมีการกำหนดค่าพร็อกซี API ให้รับคำสั่งบนโฮสต์เสมือน
secure
ระบบจะดำเนินการ ยอมรับคำขอผ่าน HTTPS URL จะอยู่ภายใต้โดเมนapigee.net
และ จะมีการใช้ใบรับรอง SSL ที่ใช้ไวลด์การ์ดสำหรับ*.apigee.net
ตราบใดที่แอปสร้าง คำขอไปยังโดเมนapigee.net
จากนั้นใบรับรอง SSL จะตรวจสอบ ตามปกติ
กำลังจัดการสายโทรออก คำขอ
คุณจะส่งคำขอขาออกด้วยโมดูล tls
ได้ด้วยวิธีเดียวกับที่ใช้ส่ง
ตามปกติใน Node.js โดยทั่วไป คุณต้องเพิ่มคีย์และใบรับรองฝั่งไคลเอ็นต์
(.pem
ไฟล์) ไปยังไดเรกทอรี resources/node
และโหลดภายใน
สคริปต์ สำหรับข้อมูลเกี่ยวกับการใช้โมดูล tls
และวิธีการของโมดูล โปรดดูที่
เอกสารโมดูล Tls ของ Node.js
การกำหนดค่า ScriptTarget ขั้นสูง
<TargetEndpoint name="default"> <ScriptTarget> <ResourceURL>node://hello.js</ResourceURL> <EnvironmentVariables> <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> </EnvironmentVariables> <Arguments> <Argument>ARG</Argument> </Arguments> </ScriptTarget> </TargetEndpoint>