Node.js modülleri için Edge desteğini anlama

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

Apigee Edge'de Node.js'nin hangi sürümü desteklenir?

Edge şu anda Node.js 0.10.32'yi desteklemektedir.

Edge'de hangi standart Node.js modülleri desteklenir?

Edge'de hangi standart Node.js modüllerinin yer aldığını belirlemek için aşağıdaki tabloyu kullanın. Bazı durumlarda, dahil edilen modüller yalnızca kısmen desteklenir. Bunlar Node.js'de yerleşik olarak bulunan modüllerdir.

Modül Durum Notlar
assert Destekleniyor
buffer Destekleniyor
child_process Kısıtlı Bir alt işlem oluşturma girişiminde bulunulduğunda bir istisna oluşur. Bununla birlikte, alt simgeleri üretmek için "çatal" desteklenir.
cluster Devre dışı küme.isMaster yöntemi her zaman doğru değerini döndürür ve diğer yöntemler uygulanmaz. Her bir Edge mesaj işlemcisine, her Node.js komut dosyasının bir kopyası dağıtılır.
crypto Destekleniyor
dns Destekleniyor
domain Destekleniyor
dgram Kısıtlı Apigee ortamındaki Node.js uygulamaları, ağ mimarimiz nedeniyle UDP üzerinden internetteki hizmetlere erişemeyecek.
events Destekleniyor
fs Kısıtlı Dosya sistemi erişimi, komut dosyasının başlatıldığı dizinle sınırlıdır: /resources/node dizini. Node.js komut dosyaları, bu dizindeki dosyaları, örneğin geçici bir çalışma alanı olarak okuyup yazabilir ancak dosyaların ne kadar süre boyunca silineceğine dair herhangi bir garanti verilmez.
http Destekleniyor Gelen isteklerin sanal ana makinesi ve yolu, HTTP modülünde değil API Proxy'sinde belirtilir. Daha fazla bilgi için "http ve https modülleri için desteği anlama" bölümüne bakın.
https Destekleniyor "https" sunucusu oluşturulduğunda, "http" sunucusuyla aynı şekilde davranır. Daha fazla bilgi için "http ve https modülleri için desteği anlama" bölümüne bakın.
module Destekleniyor
net Kısıtlı Gelen TCP bağlantılarını dinleme denemeleri istisna oluşturur.
path Destekleniyor
module Destekleniyor
process Kısmi destek Kullanıcı kimliğini, grup üyeliğini ve çalışma dizinini değiştirme işlevi desteklenmez.
punycode Destekleniyor
querystring Destekleniyor
readline Devre dışı Apigee Edge'de çalışan komut dosyaları için standart bir giriş yoktur.
repl Devre dışı Apigee Edge'de çalışan komut dosyaları için standart bir giriş yoktur.
module Dahil
STDIO Destekleniyor

Standart çıkış ve hatalar, Apigee Edge altyapısındaki bir günlük dosyasına yönlendirilir. API proxy'niz için Apigee Edge yönetim kullanıcı arayüzündeki Node.js Günlükleri düğmesini ve tıklayarak bu günlükleri görüntüleyebilirsiniz.

Apigee Edge'de çalışan komut dosyaları için standart bir giriş yoktur. Ancak, TargetEndpoint'in ScriptTarget öğesini kullanarak bağımsız değişkenleri aktarabilirsiniz. Daha fazla bilgi için Gelişmiş ScriptTarget yapılandırması bölümüne bakın.

stream Destekleniyor
string_decoder Destekleniyor
timers Dahil
tls Destekleniyor Taşıma Katmanı Güvenliği (TLS) parametreleri, temel olarak normal Node.js'de olduğu gibi çalışır. Ayrıntılar için Apigee Edge'de TLS (SSL) Node.js modülünü kullanma bölümüne bakın.
tty Devre dışı Apigee Edge'de çalışan komut dosyaları için standart bir giriş yoktur.
url Destekleniyor
util Destekleniyor
vm Destekleniyor
zlib Destekleniyor

Desteklenen diğer modüller

Bu bölümde, standart Node.js'de desteklenmeyen ancak Apigee Edge'de çalışan Trireme ve Trireme tarafından desteklenen ek modüller listelenmektedir. Trireme, Apigee Edge'de çalışan açık kaynaklı Node.js kapsayıcısıdır. Node.js komut dosyalarını bir Java Sanal Makinesi (JVM) içinde çalıştırmak üzere tasarlanmıştır. Bu modüllerin tamamı NPM'de kullanılabilir.

Modül Açıklama
Apigee-access Apigee Edge platformunda çalışan Node.js uygulamalarının Apigee'ye özgü işlevlere erişmesine izin verir. Akış değişkenlerine erişmek ve bunları değiştirmek, güvenli depodan veri almak ve Edge önbelleği, kota ve OAuth hizmetlerini kullanmak için bu modülü kullanabilirsiniz. Ayrıca bkz. Apigee-access modülünü kullanma.
trireme-destek Node.js uygulamalarının, Trireme'e özgü özelliklerden yararlanabilmesini sağlar. Şu anda desteklenen tek bir özellik vardır: Java'da yerleşik olarak bulunan Node.js modüllerini yükleme. Not: loadJars, Edge Cloud'da desteklenmez.
trireme-xlsx XLST işlemeyi soyutlar. Node.js uygulamaları Java'da çalıştırıldığında XSLT'nin verimli bir şekilde işlenmesini sağlamak amacıyla Trireme platformu için özel olarak tasarlanmıştır.
trireme-jdbc Node.js'den JDBC'ye erişim sağlar. Not: Edge Cloud'da desteklenmez. Edge Private Cloud için JDPC JAR dosyalarını sınıf yoluna yerleştirebilir ve bu modülü kullanabilirsiniz.

Yaygın olarak kullanılan Node.js modülleri için destek

Node.js komut dosyalarındaki kısıtlamalar

Bununla birlikte, Edge'in Node.js komut dosyalarına aşağıdakiler gibi belirli kısıtlamalar uyguladığını unutmayın:

  • Apigee Edge ortamındaki Node.js uygulamaları, Edge ağ mimarisi nedeniyle UDP üzerinden internetteki hizmetlere erişemez.
  • Dosya sistemi erişimi, Node.js komut dosyasının başlatıldığı dizinle sınırlıdır: /resources/node dizini. Node.js komut dosyaları, bu dizindeki dosyaları, örneğin geçici bir çalışma alanı olarak okuyabilir ve yazabilir. Ancak dosyaların ne kadar süre boyunca korunacağına dair bir garanti yoktur.
  • Gelen TCP bağlantılarını dinleme denemeleri istisna oluşturur.
  • Kullanıcı kimliğini, grup üyeliğini ve çalışma dizinini değiştirme işlevi desteklenmez.
  • Standart girişler için TargetEndpoint'in ScriptTarget öğesini kullanarak bağımsız değişkenleri iletebilirsiniz. Daha fazla bilgi için Gelişmiş ScriptTarget yapılandırması bölümüne bakın.
  • Standart çıkışta, proxy'niz için Edge yönetim kullanıcı arayüzündeki Node.js Günlükleri düğmesini kullanabilirsiniz. "Apigeetool getlogs" komutunu da kullanabilirsiniz. Daha fazla bilgi için Bağımsız bir Node.js uygulamasını dağıtma başlıklı makaleyi inceleyin.
  • Yerel koda bağlı olan modüller desteklenmez.
  • Vaatler ve Oluşturucular gibi EcmaScript 6 özelliklerini temel alan modüller desteklenmez.
  • "harmony-proxies" gibi Node.js çalışma zamanı işaretleri desteklenmez.

Private Cloud için Edge'de IP bağlantısı kısıtlamaları belirleme

Private Cloud için Edge, Node.js kodunun "10" ile başlayan IP adreslerine erişimini kısıtlayabilir. "192.168" ve localhost'u içerir. Bu IP adreslerine erişmeye çalışırsanız şu şekilde bir hata görürsünüz:

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

Bu kısıtlamaları, her bir Mesaj İşleyici için message-processors.properties dosyasında conf_nodejs_connect.ranges.denied özelliğini ayarlayarak değiştirebilirsiniz. Varsayılan olarak bu özellik şu değere sahiptir:

  • Edge 4.17.05 ve önceki sürümler: conf_nodejs_connect.ranges.denied=10.0.0.0/8,192.168.0.0/16,127.0.0.1/32
  • Edge 4.17.09 ve üzeri: conf_nodejs_connect.ranges.denied= (kısıtlama yok)

Bu özelliği ayarlamak için:

  1. Bir düzenleyicide message-processor.properties dosyasını açın. Dosya mevcut değilse oluşturun:
    > vi /<inst_root>/Apigee/customer/application/message-processor.properties
  2. Mülkü istediğiniz gibi ayarlayın. Örneğin, yalnızca localhost'a erişimi reddetmek için:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. Değişikliklerinizi kaydedin.
  4. Özellikler dosyasının 'Apigee' kullanıcısına ait olduğundan emin olun:
    > chown Apigee:Apigee /<inst_root>/Apigee/customer/application/message-processor.properties
  5. Mesaj İşleyiciyi yeniden başlatın:
    > /<inst_root>/Apigee/Apigee-service/bin/Maalesef-service Edge-message-processor yeniden başlat

http ve https modülleri için desteği anlama

Apigee Edge'de çalışan tüm Node.js uygulamaları, gelen istekleri dinlemek için http veya https modülünü kullanmalıdır. Gelen istekleri dinlemeyen bir komut dosyası dağıtırsanız yalnızca yürütülür ve çıkış yapılır.

Node.js'deki http ve https modüllerinin listen yöntemi, parametre olarak bir bağlantı noktası numarası alır. Örneğin:

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

Bu "bağlantı noktası" bağımsız değişkeni Node.js'de gereklidir, ancak Apigee Edge bu parametreyi yoksayar. Bunun yerine, Node.js komut dosyasının çalıştığı API proxy'si, dinleme yaptığı "sanal ana makineyi" belirtir ve Node.js uygulaması, diğer herhangi bir Apigee Edge proxy'sinde olduğu gibi aynı sanal ana makineleri kullanır.

Apigee'deki her ortamda en az bir sanal ana makine bulunur. Sanal ana makine, Apigee kuruluşuyla bağlantı için HTTP ayarlarını tanımlar. Bir ortamdaki tüm API proxy'leri aynı sanal ana makineleri paylaşır. Varsayılan olarak her ortam için iki sanal ana makine mevcuttur: default ve secure. Daha fazla bilgi için Sanal Ana Makine Alma ve API geliştirme yaşam döngüsü bölümlerine bakın.

apigeetool deploynodeapp komutu, Node.js uygulaması çevresinde bir Apigee Edge proxy sarmalayıcı oluşturur. Node.js uygulaması dağıtıldığında ortam için tanımlanan varsayılan sanal ana makineyi dinler. Node.js uygulamasının URL'si her zaman http://{org_name}-{env_name}.apigee.net olur.

Gelen istekleri işleme

Diğer Apigee Edge uygulamalarında olduğu gibi proxy uygulaması secure sanal ana makinesini dinleyecek şekilde ayarlandıysa HTTPS kullanarak gelen istekleri kabul eder.

Giden istekleri işleme

Apigee Edge içindeki Node.js uygulamaları, gelen trafiği almanın yanı sıra http ve https modüllerini kullanarak diğer Node.js uygulamaları gibi giden isteklerde de bulunabilir. Bu modüller, Node.js'de her zaman olduğu gibi çalışır.

tls modülü için desteği anlama

Apigee Edge, Node.js tls modülünü destekler. Bu modül, Taşıma Katmanı Güvenliği (TLS) ve/veya Güvenli Yuva Katmanı (SSL) şifreli akış iletişimini sağlamak için OpenSSL kullanır. Edge'de çalışan Node.js uygulamalarından arka uç hizmetlerine güvenli bağlantılar oluşturmak için tls modülünü kullanabilirsiniz.

tls modülünün Apigee Edge'de nasıl çalıştığını anlamak için virtual hosts ürününün Apigee Edge'de nasıl kullanıldığını anlamak önemlidir. Apigee'deki her ortamda en az bir sanal ana makine bulunur. Sanal ana makine, Apigee kuruluşuyla bağlantı için HTTP ayarlarını tanımlar. Bir ortamdaki tüm API proxy'leri aynı sanal ana makineleri paylaşır. Varsayılan olarak her ortam için iki sanal ana makine mevcuttur: default ve secure. Sanal ana makineler hakkında daha fazla bilgi için Sanal Ana Makine Alma ve API geliştirme yaşam döngüsü bölümlerine bakın.

Şimdi, Apigee Edge'in Node.js uygulamalarında gelen ve giden istekler için TLS (SSL) iletişimini nasıl işlediğine göz atalım:

Gelen istekleri işleme

Edge, kuruluşunuz için sanal ana makinelerin nasıl yapılandırıldığına bağlı olarak şu seçenekleri sunar:

  • API proxy'si, default sanal ana makinesini dinleyecek şekilde yapılandırılmışsa HTTP üzerinden istekleri kabul eder.
  • API proxy'si, secure sanal ana makinesini dinleyecek şekilde yapılandırılmışsa HTTPS üzerinden istekleri kabul eder. URL, apigee.net alanı altında olur ve *.apigee.net için joker karakter SSL sertifikası kullanılır. Uygulamalar apigee.net alanına istekte bulunduğu sürece SSL sertifikası normal şekilde doğrulanır.

Giden istekleri işleme

tls modülü ile giden istekleri, normalde Node.js'de yaptığınız gibi yapabilirsiniz. Temel olarak, resources/node dizinine istemci tarafı anahtarları ve sertifikaları (.pem dosyaları) eklemeniz ve bunları komut dosyanızın içine yüklemeniz gerekir. tls modülünü ve yöntemlerini kullanma hakkında bilgi edinmek için Node.js tls modülü dokümanlarına bakın.

Gelişmiş ScriptTarget Yapılandırması

<TargetEndpoint> tanımında <ScriptTarget> öğesi, <ResourceURL>'nin yanı sıra isteğe bağlı ek parametreler alır. <EnvironmentVariables> ve <Arguments> parametrelerini kullanarak komut satırı bağımsız değişkenlerini ve ortam değişkenlerini de bir Node.js komut dosyasına aktarabilirsiniz:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>