คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ
Apigee X info
Apigee Edge รองรับ Node.js เวอร์ชันใด
ปัจจุบัน Edge รองรับ Node.js 0.10.32
โมดูล Node.js มาตรฐานใดบ้างที่ รองรับใน Edge
ใช้ตารางต่อไปนี้เพื่อพิจารณาว่าโมดูล Node.js มาตรฐานใด รวมอยู่ใน Edge ในบางกรณี ระบบอาจรองรับโมดูลที่รวมไว้เพียงบางส่วน ซึ่งเป็นโมดูล ที่สร้างขึ้นใน Node.js| โมดูล | สถานะ | หมายเหตุ |
|---|---|---|
assert |
รองรับ | |
buffer |
รองรับ | |
child_process |
จำกัด | ระบบจะแสดงข้อยกเว้นหากมีการพยายามสร้างกระบวนการย่อย อย่างไรก็ตาม "fork" รองรับการแยกสคริปต์ย่อย |
cluster |
ปิดใช้ | เมธอด cluster.isMaster จะแสดงผลเป็น "จริง" เสมอ และไม่ได้ใช้เมธอดอื่นๆ ระบบจะติดตั้งใช้งานสำเนาของสคริปต์ Node.js แต่ละรายการไปยังโปรแกรมประมวลผลข้อความที่ Edge แต่ละรายการ |
crypto |
รองรับ | |
dns |
รองรับ | |
domain |
รองรับ | |
dgram |
จำกัด | แอปพลิเคชัน Node.js ในสภาพแวดล้อม Apigee จะเข้าถึงบริการบนอินเทอร์เน็ตผ่าน UDP ไม่ได้เนื่องจากสถาปัตยกรรมเครือข่ายของเรา |
events |
รองรับ | |
fs |
จำกัด | การเข้าถึงระบบไฟล์จะจำกัดไว้ที่ไดเรกทอรีที่เปิดใช้สคริปต์ ซึ่งก็คือไดเรกทอรี /resources/node สคริปต์ Node.js อาจอ่านและเขียนไฟล์ภายใน
ไดเรกทอรีนี้ เช่น เป็นพื้นที่ชั่วคราว แต่ไม่มีการรับประกันว่า
ไฟล์จะคงอยู่ได้นานเท่าใด |
http |
รองรับ | โฮสต์เสมือนและเส้นทางสำหรับคำขอขาเข้าจะระบุไว้ใน API Proxy ไม่ใช่ใน โมดูล 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 ปกติ ดูรายละเอียดได้ที่การใช้โมดูล TLS (SSL) Node.js ใน Apigee Edge |
tty |
ปิดใช้ | ไม่มีอินพุตมาตรฐานสำหรับสคริปต์ที่ทำงานใน Apigee Edge |
url |
รองรับ | |
util |
รองรับ | |
vm |
รองรับ | |
zlib |
รองรับ |
โมดูลอื่นๆ ที่รองรับ
ส่วนนี้แสดงโมดูลเพิ่มเติมที่ไม่รองรับใน Node.js มาตรฐาน แต่ Trireme และ Trireme ที่ทำงานใน Apigee Edge รองรับ Trireme คือคอนเทนเนอร์ Node.js แบบโอเพนซอร์สที่ทำงานบน Apigee Edge โดยออกแบบมาเพื่อเรียกใช้สคริปต์ Node.js ภายในเครื่องเสมือน Java (JVM) โมดูลทั้งหมดนี้มีให้บริการใน NPM
| โมดูล | คำอธิบาย |
|---|---|
| apigee-access | ช่วยให้แอปพลิเคชัน Node.js ที่ทำงานบนแพลตฟอร์ม Apigee Edge เข้าถึงฟังก์ชันการทำงานเฉพาะของ Apigee ได้ คุณสามารถใช้โมดูลนี้เพื่อเข้าถึงและแก้ไขตัวแปรโฟลว์ ดึงข้อมูลจากที่เก็บข้อมูลที่ปลอดภัย และใช้บริการแคช โควต้า และ OAuth ของ Edge โปรดดูหัวข้อการใช้โมดูล apigee-access ด้วย |
| 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 Cloud คุณสามารถใส่ไฟล์ JAR ของ JDPC ในเส้นทางคลาสและใช้โมดูลนี้ได้ |
การรองรับโมดูล 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 ใน UI การจัดการ Edge
สำหรับพร็อกซี นอกจากนี้ คุณยังใช้คำสั่ง "apigeetool getlogs" ได้ด้วย ดูข้อมูลเพิ่มเติมได้ที่การทำให้แอป Node.js แบบสแตนด์อโลนใช้งานได้
- ระบบไม่รองรับโมดูลที่ขึ้นอยู่กับโค้ดแบบเนทีฟ
- ระบบไม่รองรับโมดูลที่ขึ้นอยู่กับฟีเจอร์ EcmaScript 6 เช่น Promises และ Generators
- ไม่รองรับแฟล็กของรันไทม์ Node.js เช่น "harmony-proxies"
การตั้งค่าข้อจำกัดการเชื่อมต่อ IP ใน Edge สำหรับ Private Cloud
Edge สำหรับ 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 สำหรับ Message Processor แต่ละรายการ โดยค่าเริ่มต้น พร็อพเพอร์ตี้นี้จะมีค่าดังนี้
- 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 ใน
โปรแกรมแก้ไข หากไม่มีไฟล์ดังกล่าว ให้สร้างไฟล์โดยใช้คำสั่งต่อไปนี้
> 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 - รีสตาร์ท Message Processor
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart
ทำความเข้าใจการรองรับโมดูล 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.'); });
ต้องระบุอาร์กิวเมนต์ "port" นี้ใน 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>