คุณกำลังดูเอกสารประกอบของ Apigee Edge
ไปที่เอกสารประกอบของ Apigee X ข้อมูล
Apigee Edge รองรับ Node.js เวอร์ชันใด
ปัจจุบัน Edge รองรับ Node.js 0.10.32
Edge รองรับโมดูล Node.js มาตรฐานใดบ้าง
ใช้ตารางต่อไปนี้เพื่อระบุโมดูล Node.js มาตรฐานที่รวมอยู่ใน Edge ในบางกรณี โมดูลที่รวมอยู่จะได้รับการสนับสนุนเพียงบางส่วนเท่านั้น ซึ่งเป็นโมดูลที่มีในตัวของ Node.jsโมดูล | สถานะ | Notes |
---|---|---|
assert |
รองรับ | |
buffer |
รองรับ | |
child_process |
ถูกจำกัด | จะมีการส่งข้อยกเว้นหากมีความพยายามที่จะสร้างกระบวนการย่อย อย่างไรก็ตาม ระบบรองรับ "fork" ในการวางสคริปต์ตัวห้อย |
cluster |
ปิดใช้ | Method cloud.isMaster จะแสดงผล true เสมอ ส่วนเมธอดอื่นๆ จะไม่มีการนำไปใช้ ระบบนำสคริปต์ 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-access |
Trireme-support | ช่วยให้แอปพลิเคชัน Node.js ใช้ประโยชน์จากคุณลักษณะเฉพาะสำหรับ Trireme ปัจจุบันรองรับเฉพาะฟีเจอร์เดียว นั่นคือการโหลดโมดูล Node.js ที่สร้างขึ้นใน Java หมายเหตุ: Edge Cloud ไม่รองรับloadJars |
Trireme-XSlt | แสดง Abstraction ของการประมวลผล XLST โดยออกแบบมาโดยเฉพาะสำหรับแพลตฟอร์ม Trireme เพื่อให้การประมวลผล XSLT มีประสิทธิภาพเมื่อแอปพลิเคชัน Node.js ทำงานบน Java |
trireme-jdbc | ให้สิทธิ์เข้าถึง JDBC จาก Node.js หมายเหตุ: ไม่รองรับใน Edge Cloud สำหรับ Edge Private Cloud คุณจะใส่ไฟล์ 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 ใน UI การจัดการ Edge สำหรับพร็อกซี คุณสามารถใช้คำสั่ง "apigeetool getlogs" ได้เช่นกัน ดูข้อมูลเพิ่มเติมได้ที่การทำให้แอป Node.js แบบสแตนด์อโลนใช้งานได้
- ระบบไม่รองรับโมดูลที่ต้องใช้โค้ดแบบเนทีฟ
- ไม่รองรับโมดูลที่ขึ้นอยู่กับฟีเจอร์ EcmaScript 6 เช่น Promises และ Generator
- ระบบไม่รองรับการแฟล็กรันไทม์ของ Node.js เช่น "พร็อกซีระหว่าง Harony"
การตั้งค่าข้อจำกัดการเชื่อมต่อ 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 ในตัวประมวลผลข้อความแต่ละเครื่อง โดยค่าเริ่มต้น พร็อพเพอร์ตี้นี้จะมีค่าดังนี้
- 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 - รีสตาร์ทตัวประมวลผลข้อความ
> /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor begin
ทำความเข้าใจเกี่ยวกับการรองรับโมดูล 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 ได้
คุณต้องทำความเข้าใจวิธีใช้ virtual hosts
ใน Apigee Edge เพื่อทำความเข้าใจวิธีการทำงานของโมดูล tls
ใน 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
และวิธีการได้ที่เอกสารโมดูล 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>