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 hangi Node.js 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 bulunduğunu belirlemek için aşağıdaki tabloyu kullanın. Bazı durumlarda, dahil edilen modüller yalnızca kısmen desteklenir. Bunlar, Node.js'ye yerleşik olarak bulunan modüllerdir.

Modül Durum Notlar
assert Destekleniyor
buffer Destekleniyor
child_process Kısıtlanmış Alt işlem oluşturulmaya çalışılırsa istisna oluşturulur. Ancak, alt komut dosyaları oluşturmak için "fork" desteklenir.
cluster Devre dışı cluster.isMaster yöntemi her zaman doğru değerini döndürür ve diğer yöntemler uygulanmaz. Her Node.js komut dosyasının bir kopyası her Edge mesaj işleyicisine dağıtılır.
crypto Destekleniyor
dns Destekleniyor
domain Destekleniyor
dgram Kısıtlanmış Apigee ortamındaki Node.js uygulamaları, ağ mimarimiz nedeniyle UDP üzerinden internetteki hizmetlere erişemez.
events Destekleniyor
fs Kısıtlanmış Dosya sistemi erişimi, komut dosyasının başlatıldığı dizinle (/resources/node dizini) sınırlıdır. Node.js komut dosyaları, bu dizindeki dosyaları okuyup yazabilir (örneğin, geçici bir çizim alanı olarak). Ancak dosyaların ne kadar süreyle kalacağı garanti edilmez.
http Destekleniyor Gelen isteklerin sanal ana makinesi ve yolu, HTTP modülü tarafından değil, API proxy'si tarafından belirtilir. Daha fazla bilgi için "http ve https modülleri için destek hakkında" başlıklı makaleye bakın.
https Destekleniyor "https" sunucusu oluşturmak, "http" sunucusu oluşturmakla aynı şekilde çalışır. Daha fazla bilgi için "http ve https modülleri için destek hakkında" başlıklı makaleye bakın.
module Destekleniyor
net Kısıtlanmış Gelen TCP bağlantılarını dinleme girişimleri 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 hata, Apigee Edge altyapısındaki bir günlük dosyasına yönlendirilir. Bu günlükleri, API proxy'niz için Apigee Edge yönetim arayüzünde Node.js Günlükleri düğmesini tıklayarak 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 iletebilirsiniz. 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'deki gibi çalışır. Ayrıntılar için Apigee Edge'de TLS (SSL) Node.js modülünü kullanma başlıklı makaleyi inceleyin.
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 Trireme ve Apigee Edge'de çalışan Trireme tarafından desteklenen ek modüller listelenmektedir. Trireme, Apigee Edge'de çalışan açık kaynaklı Node.js kapsayıcısıdır. Java sanal makinesinde (JVM) Node.js komut dosyalarını çalıştırmak için tasarlanmıştır. Bu modüllerin tümü 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 olanak tanır. Bu modülü kullanarak akış değişkenlerine erişebilir ve bunları değiştirebilir, güvenli depodan veri alabilir, Edge önbelleğini, kotayı ve OAuth hizmetlerini kullanabilirsiniz. Ayrıca apigee-access modülünü kullanma başlıklı makaleyi de inceleyin.
trireme-support Node.js uygulamalarının Trireme'e özgü özelliklerden yararlanmasını sağlar. Şu anda yalnızca bir özellik desteklenmektedir: Java'da oluşturulan Node.js modüllerini yükleme. Not: loadJars, Edge Cloud'da desteklenmez.
trireme-xslt XLST işleme sürecinin soyut bir görünümünü sunar. Node.js uygulamaları Java'da çalıştırıldığında XSLT'nin verimli bir şekilde işlenmesine olanak tanımak için özellikle Trireme platformu için 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.

Sık kullanılan Node.js modülleri için destek

Node.js komut dosyalarıyla ilgili kısıtlamalar

Ancak Edge'in Node.js komut dosyalarıyla ilgili aşağıdaki 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 (yani /resources/node diziniyle) sınırlıdır. Node.js komut dosyaları, bu dizindeki dosyaları okuyup yazabilir (örneğin, geçici bir çalışma alanı olarak). Ancak dosyaların ne kadar süreyle kalacağı garanti edilmez.
  • Gelen TCP bağlantılarını dinleme girişimleri istisna oluşturur.
  • Kullanıcı kimliği, grup üyeliği ve çalışma diziniyle ilgili işlevler desteklenmez.
  • Standart giriş için, TargetEndpoint'in ScriptTarget öğesini kullanarak bağımsız değişkenler iletmekle sınırlısınız. Daha fazla bilgi için Gelişmiş ScriptTarget yapılandırması bölümüne bakın.
  • Standart çıkış için, Edge yönetim kullanıcı arayüzünde proxy'niz için Node.js günlükleri düğmesini kullanmakla sınırlısınız. "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ı modüller desteklenmez.
  • Promises ve Generators gibi EcmaScript 6 özelliklerine bağlı 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ı ayarlama

Edge for Private Cloud, Node.js kodunun "10." ile başlayan IP adreslerine erişmesini kısıtlayabilir. "192.168" ve localhost. Bu IP adreslerine erişmeye çalışırsanız aşağıdaki biçimde 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. Bu özelliğin varsayılan değeri şudur:

  • 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 sonraki sürümler: conf_nodejs_connect.ranges.denied= (yani kısıtlama yok)

Bu özelliği ayarlamak için:

  1. message-processor.properties dosyasını bir düzenleyicide açın. Dosya yoksa oluşturun:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. Özelliği 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 İşleyici'yi yeniden başlatın:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

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 bu komut dosyası yalnızca yürütülür ve çıkar.

Node.js'deki http ve https modüllerinin listen yöntemi, bağlantı noktası numarasını parametre olarak 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 zorunludur ancak Apigee Edge bu parametreyi yoksayar. Bunun yerine, Node.js komut dosyasının çalıştığı API proxy'si, dinlediği "sanal ana makineyi" belirtir ve Node.js uygulaması, diğer tüm Apigee Edge proxy'leri 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 kullanılabilir: default ve secure. Daha fazla bilgi için Sanal Ana Makine Alma ve API geliştirme yaşam döngüsü başlıklı makaleleri inceleyin.

apigeetool deploynodeapp komutu, Node.js uygulaması etrafında bir Apigee Edge proxy sarmalayıcısı oluşturur. Dağıtıldığında Node.js uygulaması, 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 makinesinde dinleyecek şekilde ayarlanırsa HTTPS kullanan gelen istekleri kabul eder.

Giden istekleri işleme

Apigee Edge'deki Node.js uygulamaları, gelen trafiği almanın yanı sıra diğer Node.js uygulamaları gibi giden istekler göndermek için http ve https modüllerini kullanabilir. Bu modüller, Node.js'de her zaman olduğu gibi çalışır.

TLS modülü desteğini 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şimi sağlamak için OpenSSL'yi 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'lerin 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 kullanılabilir: 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ü başlıklı makalelere bakın.

Şimdi de Apigee Edge'in Node.js uygulamalarındaki gelen ve giden istekler için TLS (SSL) iletişimini nasıl işlediğine bakalım:

Gelen istekleri işleme

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

  • API proxy'si default sanal ana makinesinde dinleyecek şekilde yapılandırılmışsa HTTP üzerinden istekleri kabul eder.
  • API proxy'si secure sanal ana makinesinde dinleyecek şekilde yapılandırılmışsa HTTPS üzerinden istekleri kabul eder. URL, apigee.net alanında olacak ve *.apigee.net için joker karakterli bir SSL sertifikası kullanılacaktır. Uygulamalar apigee.net alanına istek gönderdiği sürece SSL sertifikası normal şekilde doğrulanır.

Giden istekleri işleme

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

Gelişmiş ScriptTarget Yapılandırması

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