Memahami dukungan Edge untuk modul Node.js

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

Versi Node.js apa yang didukung di Apigee Edge?

Edge saat ini mendukung Node.js 0.10.32.

Modul Node.js standar mana yang didukung di Edge?

Gunakan tabel berikut untuk menentukan modul Node.js standar mana yang disertakan di Edge. Dalam beberapa kasus, modul yang disertakan hanya didukung sebagian. Ini adalah modul yang sudah ada di Node.js.

Modul Status Catatan
assert Didukung
buffer Didukung
child_process Dibatasi Pengecualian akan muncul jika ada upaya untuk membuat subproses. Namun, "fork" didukung untuk memunculkan sub-skrip.
cluster Nonaktif Metode cluster.isMaster selalu menampilkan nilai benar, dan metode lainnya tidak diimplementasikan. Satu salinan setiap skrip Node.js di-deploy ke setiap pemroses pesan Edge.
crypto Didukung
dns Didukung
domain Didukung
dgram Dibatasi Aplikasi Node.js di lingkungan Apigee tidak akan dapat mengakses layanan di Internet melalui UDP karena arsitektur jaringan kami.
events Didukung
fs Dibatasi Akses sistem file dibatasi ke direktori tempat skrip diluncurkan: direktori /resources/node. Skrip Node.js dapat membaca dan menulis file dalam direktori ini, misalnya sebagai area sementara, tetapi tidak ada jaminan berapa lama file akan tetap ada.
http Didukung Host virtual dan jalur untuk permintaan masuk ditentukan dalam Proxy API, bukan oleh modul HTTP. Lihat "Memahami dukungan untuk modul http dan https" untuk mengetahui informasi selengkapnya.
https Didukung Membuat server "https" berperilaku sama dengan server "http". Lihat "Memahami dukungan untuk modul http dan https" untuk mengetahui informasi selengkapnya.
module Didukung
net Dibatasi Upaya untuk memproses koneksi TCP yang masuk akan menghasilkan pengecualian.
path Didukung
module Didukung
process Dukungan sebagian Fungsi untuk memanipulasi ID pengguna, keanggotaan grup, dan direktori kerja tidak didukung.
punycode Didukung
querystring Didukung
readline Nonaktif Tidak ada input standar untuk skrip yang berjalan di Apigee Edge.
repl Nonaktif Tidak ada input standar untuk skrip yang berjalan di Apigee Edge.
module Disertakan
STDIO Didukung

Output dan error standar dirutekan ke file log dalam infrastruktur Apigee Edge. Anda dapat melihat log ini dengan mengklik tombol Node.js Logs di UI pengelolaan Apigee Edge untuk proxy API Anda.

Tidak ada input standar untuk skrip yang berjalan di Apigee Edge. Namun, Anda dapat meneruskan argumen menggunakan elemen ScriptTarget dari TargetEndpoint. Lihat Konfigurasi ScriptTarget lanjutan untuk informasi selengkapnya.

stream Didukung
string_decoder Didukung
timers Disertakan
tls Didukung Parameter Transport Layer Security (TLS) pada dasarnya berfungsi dengan cara yang sama seperti pada Node.js biasa. Lihat Menggunakan modul Node.js TLS (SSL) di Apigee Edge untuk mengetahui detailnya.
tty Nonaktif Tidak ada input standar untuk skrip yang berjalan di Apigee Edge.
url Didukung
util Didukung
vm Didukung
zlib Didukung

Modul tambahan yang didukung

Bagian ini mencantumkan modul tambahan yang tidak didukung di Node.js standar, tetapi didukung oleh Trireme dan Trireme yang berjalan di Apigee Edge. Trireme adalah container Node.js open source yang berjalan di Apigee Edge. Dirancang untuk menjalankan skrip Node.js di dalam Java Virtual Machine (JVM). Semua modul ini tersedia di NPM.

Modul Deskripsi
apigee-access Memungkinkan aplikasi Node.js yang berjalan di platform Apigee Edge mengakses fungsi khusus Apigee. Anda dapat menggunakan modul ini untuk: mengakses dan mengubah variabel alur, mengambil data dari penyimpanan aman, serta menggunakan layanan cache, kuota, dan OAuth Edge. Lihat juga Menggunakan modul apigee-access.
trireme-support Memungkinkan aplikasi Node.js memanfaatkan fitur khusus Trireme. Saat ini hanya ada satu fitur yang didukung -- memuat modul Node.js yang dibuat di Java. Catatan: loadJars tidak didukung di Edge Cloud.
trireme-xslt Menampilkan abstraksi pemrosesan XLST. Dirancang khusus untuk platform Trireme agar memungkinkan pemrosesan XSLT yang efisien saat aplikasi Node.js dijalankan di Java.
trireme-jdbc Menyediakan akses ke JDBC dari Node.js. Catatan: Tidak didukung di Edge Cloud. Untuk Edge Private Cloud, Anda dapat menempatkan file JAR JDPC di jalur class dan menggunakan modul ini.

Dukungan untuk modul Node.js yang umum digunakan

Batasan pada skrip Node.js

Namun, perhatikan bahwa Edge memberlakukan batasan tertentu pada skrip Node.js, seperti berikut:

  • Aplikasi Node.js di lingkungan Apigee Edge tidak dapat mengakses layanan di Internet melalui UDP karena arsitektur jaringan Edge.
  • Akses sistem file dibatasi ke direktori tempat skrip Node.js diluncurkan: direktori /resources/node. Skrip Node.js dapat membaca dan menulis file dalam direktori ini, misalnya sebagai area sementara, tetapi tidak ada jaminan berapa lama file akan tetap ada.
  • Upaya untuk memproses koneksi TCP masuk akan menghasilkan pengecualian.
  • Fungsi untuk memanipulasi ID pengguna, keanggotaan grup, dan direktori kerja tidak didukung.
  • Untuk input standar, Anda hanya dapat meneruskan argumen menggunakan elemen ScriptTarget dari TargetEndpoint. Lihat Konfigurasi ScriptTarget lanjutan untuk mengetahui informasi selengkapnya.
  • Untuk output standar, Anda hanya dapat menggunakan tombol Log Node.js di UI pengelolaan Edge untuk proxy Anda. Anda juga dapat menggunakan perintah "apigeetool getlogs". Untuk mengetahui informasi selengkapnya, lihat Men-deploy aplikasi Node.js mandiri.
  • Modul yang bergantung pada kode native tidak didukung.
  • Modul yang bergantung pada fitur EcmaScript 6, seperti Promises dan Generators, tidak didukung.
  • Flag runtime Node.js seperti "harmony-proxies" tidak didukung.

Menetapkan batasan koneksi IP di Edge untuk Private Cloud

Edge untuk Private Cloud dapat membatasi kode Node.js agar tidak mengakses alamat IP yang diawali dengan “10.", "192.168", dan localhost. Jika mencoba mengakses alamat IP ini, Anda akan melihat error dalam bentuk:

{ [Error: connect EINVAL] message: 'connect EINVAL', code: 'EINVAL', errno: 'EINVAL', syscall: 'connect' }

Anda dapat mengubah batasan ini dengan menyetel properti conf_nodejs_connect.ranges.denied di file message-processors.properties untuk setiap Pemroses Pesan. Secara default, properti ini memiliki nilai:

  • Edge 4.17.05 dan yang lebih lama: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 dan yang lebih baru: conf_nodejs_connect.ranges.denied= (artinya tidak ada batasan)

Untuk menyetel properti ini:

  1. Buka file message-processor.properties di editor. Jika file tidak ada, buat file:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. Tetapkan properti sesuai keinginan. Misalnya, untuk menolak akses hanya ke localhost:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Simpan perubahan.
  4. Pastikan file properti dimiliki oleh pengguna 'apigee':
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. Mulai ulang Message Processor:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Memahami dukungan untuk modul http dan https

Semua aplikasi Node.js yang berjalan di Apigee Edge harus menggunakan modul http atau https untuk memproses permintaan masuk. Jika Anda men-deploy skrip yang tidak memproses permintaan masuk, skrip tersebut hanya akan dieksekusi dan keluar.

Metode listen dari modul http dan https di Node.js menggunakan nomor port sebagai parameter. Contoh:

svr.listen(process.env.PORT || 9000, function() {
   console.log('The server is running.');
});

Argumen "port" ini diperlukan di Node.js, tetapi Apigee Edge mengabaikan parameter ini. Sebagai gantinya, proxy API tempat skrip Node.js berjalan menentukan "host virtual" yang didengarkannya, dan aplikasi Node.js menggunakan host virtual yang sama, seperti proxy Apigee Edge lainnya.

Setiap lingkungan di Apigee memiliki setidaknya satu host virtual. Host virtual menentukan setelan HTTP untuk koneksi dengan organisasi Apigee. Semua proxy API di lingkungan berbagi host virtual yang sama. Secara default, dua host virtual tersedia untuk setiap lingkungan: default dan secure. Untuk mengetahui informasi selengkapnya, lihat Mendapatkan Host Virtual dan siklus proses pengembangan API.

Perintah apigeetool deploynodeapp menghasilkan wrapper proxy Apigee Edge di sekitar aplikasi Node.js. Saat di-deploy, aplikasi Node.js akan memproses permintaan di host virtual default yang ditentukan untuk lingkungan. URL untuk aplikasi Node.js akan selalu berupa http://{org_name}-{env_name}.apigee.net.

Menangani permintaan masuk

Seperti aplikasi Apigee Edge lainnya, jika aplikasi proxy disiapkan untuk memproses permintaan di host virtual secure, maka aplikasi tersebut akan menerima permintaan masuk menggunakan HTTPS.

Menangani permintaan keluar

Selain menerima traffic masuk, aplikasi Node.js di dalam Apigee Edge dapat menggunakan modul http dan https untuk membuat permintaan keluar seperti aplikasi Node.js lainnya. Modul ini berfungsi seperti biasanya di dalam Node.js.

Memahami dukungan untuk modul tls

Apigee Edge mendukung modul tls Node.js. Modul ini menggunakan OpenSSL untuk menyediakan komunikasi streaming terenkripsi Transport Layer Security (TLS) dan/atau Secure Socket Layer (SSL). Anda dapat menggunakan modul tls untuk membuat koneksi yang aman ke layanan backend dari aplikasi Node.js yang berjalan di Edge.

Untuk memahami cara kerja modul tls di Apigee Edge, penting untuk memahami cara penggunaan virtual hosts di Apigee Edge. Setiap lingkungan di Apigee memiliki setidaknya satu host virtual. Host virtual menentukan setelan HTTP untuk koneksi dengan organisasi Apigee. Semua proxy API di lingkungan yang sama berbagi host virtual yang sama. Secara default, dua host virtual tersedia untuk setiap lingkungan: default dan secure. Untuk mengetahui informasi selengkapnya tentang host virtual, lihat Mendapatkan Host Virtual dan siklus proses pengembangan API.

Sekarang, mari kita lihat cara Apigee Edge menangani komunikasi TLS (SSL) untuk permintaan masuk dan keluar pada aplikasi Node.js:

Menangani permintaan masuk

Bergantung pada cara host virtual dikonfigurasi untuk organisasi Anda, Edge menyediakan opsi berikut:

  • Jika proxy API dikonfigurasi untuk memproses permintaan di host virtual default, maka proxy tersebut akan menerima permintaan melalui HTTP.
  • Jika proxy API dikonfigurasi untuk memproses host virtual secure, maka proxy tersebut menerima permintaan melalui HTTPS. URL akan berada di domain apigee.net, dan sertifikat SSL pengganti untuk *.apigee.net akan digunakan. Selama aplikasi membuat permintaan ke domain apigee.net, sertifikat SSL akan divalidasi secara normal.

Menangani permintaan keluar

Anda dapat membuat permintaan keluar dengan modul tls dengan cara yang sama seperti yang biasa Anda lakukan di Node.js. Pada dasarnya, Anda perlu menambahkan kunci dan sertifikat sisi klien (file .pem) ke direktori resources/node dan memuatnya di dalam skrip Anda. Untuk mengetahui informasi tentang penggunaan modul tls dan metodenya, lihat dokumentasi modul tls Node.js.

Konfigurasi ScriptTarget Lanjutan

Dalam definisi <TargetEndpoint>, elemen <ScriptTarget> mengambil parameter opsional tambahan selain <ResourceURL>. Anda juga dapat meneruskan argumen command line dan variabel lingkungan ke skrip Node.js menggunakan parameter <EnvironmentVariables> dan <Arguments>:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>