ทำความเข้าใจการรองรับ Edge สำหรับโมดูล Node.js

คุณกำลังดูเอกสารประกอบ 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= (หมายถึง ไม่มีข้อจำกัด)

วิธีตั้งค่าพร็อพเพอร์ตี้นี้

  1. เปิดไฟล์ message-processor.properties ใน Editor หากไม่มีไฟล์ ให้สร้างขึ้นมา:
    > Vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. ตั้งค่าพร็อพเพอร์ตี้ตามต้องการ ตัวอย่างเช่น หากต้องการปฏิเสธการเข้าถึงเฉพาะ localhost ให้ทำดังนี้
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. บันทึกการเปลี่ยนแปลง
  4. ตรวจสอบว่าไฟล์พร็อพเพอร์ตี้เป็นของ "apigee" ผู้ใช้:
    &gt; chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. รีสตาร์ทโปรแกรมประมวลผลข้อความ โดยทำดังนี้
    &gt; /<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> <ScriptTarget> เอลิเมนต์ใช้เวลาเพิ่มเติม พารามิเตอร์ที่ไม่บังคับนอกเหนือจาก <ResourceURL> นอกจากนี้คุณยังส่งผ่านอาร์กิวเมนต์บรรทัดคำสั่งและ ตัวแปรสภาพแวดล้อมไปยังสคริปต์ Node.js โดยใช้ <EnvironmentVariable> และ &lt;Arguments&gt; ได้แก่
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>