Node.js মডিউলের জন্য Edge সহায়তা বোঝা

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

Apigee Edge-এ Node.js-এর কোন ভার্সন কাজ করে?

Edge বর্তমানে Node.js 0.10.32 ভার্সনে কাজ করে।

Edge-এ কোন কোন স্ট্যান্ডার্ড Node.js মডিউল কাজ করে?

Edge-এ কোন কোন স্ট্যান্ডার্ড Node.js মডিউল অন্তর্ভুক্ত আছে তা নির্ধারণ করতে নিম্নলিখিত টেবিল ব্যবহার করুন। কিছু ক্ষেত্রে, অন্তর্ভুক্ত মডিউলগুলি শুধুমাত্র আংশিকভাবে কাজ করে। এগুলি হল Node.js-এ বিল্ট-ইন মডিউল।

মডিউল স্ট্যাটাস নোট
assert কাজ করে
buffer কাজ করে
child_process বিধিনিষেধযুক্ত সাব-প্রসেস স্পন করার চেষ্টা করা হলে একটি ব্যতিক্রম তৈরি হবে। তবে, সাব-স্ক্রিপ্ট স্পন করার জন্য "ফর্ক" কাজ করে।
cluster বন্ধ করা আছে cluster.isMaster মেথড সবসময় true রিটার্ন করে এবং অন্যান্য মেথড প্রয়োগ করা হয় না। প্রতিটি Edge মেসেজ প্রসেসরে প্রতিটি Node.js স্ক্রিপ্টের একটি কপি ডেপ্লয় করা হয়।
crypto কাজ করে
dns কাজ করে
domain কাজ করে
dgram বিধিনিষেধযুক্ত আমাদের নেটওয়ার্ক আর্কিটেকচারের কারণে Apigee এনভায়রনমেন্টে Node.js অ্যাপ্লিকেশন UDP-এর মাধ্যমে ইন্টারনেটে পরিষেবা অ্যাক্সেস করতে পারবে না।
events কাজ করে
fs বিধিনিষেধযুক্ত যে ডিরেক্টরি থেকে স্ক্রিপ্ট লঞ্চ করা হয়েছে, ফাইলসিস্টেম অ্যাক্সেস সেই ডিরেক্টরিতেই সীমাবদ্ধ থাকে: the /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 ইনফ্রাস্ট্রাকচারের মধ্যে একটি লগ ফাইলে রাউট করা হয়। আপনার API প্রক্সির জন্য Apigee Edge ম্যানেজমেন্ট UI-তে Node.js লগ বোতামে ক্লিক করে আপনি এইসব লগ দেখতে পারবেন।

Apigee Edge-এ রান করা স্ক্রিপ্টের জন্য কোনও স্ট্যান্ডার্ড ইনপুট নেই। তবে, আপনি TargetEndpoint-এর ScriptTarget এলিমেন্ট ব্যবহার করে আর্গুমেন্ট পাস করতে পারবেন। আরও তথ্যের জন্য অ্যাডভান্সড ScriptTarget কনফিগারেশন দেখুন।

stream কাজ করে
string_decoder কাজ করে
timers অন্তর্ভুক্ত আছে
tls কাজ করে ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) প্যারামিটারগুলি মূলত একই উপায়ে কাজ করে যেভাবে সেগুলি সাধারণ Node.js-এ কাজ করে। বিস্তারিত জানতে Apigee Edge-এ TLS (SSL) Node.js মডিউল ব্যবহার করা লিঙ্ক দেখুন।
tty বন্ধ করা আছে Apigee Edge-এ রান করা স্ক্রিপ্টের জন্য কোনও স্ট্যান্ডার্ড ইনপুট নেই।
url কাজ করে
util কাজ করে
vm কাজ করে
zlib কাজ করে

কাজ করে এমন অতিরিক্ত মডিউল

এই বিভাগে অতিরিক্ত মডিউল তালিকাভুক্ত করা আছে যা স্ট্যান্ডার্ড Node.js-এ কাজ করে না, কিন্তু Trireme এবং Apigee Edge-এ চলা Trireme-এ কাজ করে। Trireme হল ওপেন-সোর্স Node.js কন্টেনার যা Apigee Edge-এ রান করে। এটি Java Virtual Machine (JVM)-এর মধ্যে Node.js স্ক্রিপ্ট চালানোর জন্য ডিজাইন করা হয়েছে। এইসব মডিউল NPM-এ উপলভ্য।

মডিউল বিবরণ
apigee-access Apigee Edge প্ল্যাটফর্মে রান করা Node.js অ্যাপ্লিকেশনকে Apigee-নির্দিষ্ট ফাংশনালিটি অ্যাক্সেস করার একটি উপায় দেয়। আপনি এই মডিউলটি ব্যবহার করে: ফ্লো ভেরিয়েবল অ্যাক্সেস ও পরিবর্তন করতে, নিরাপদ স্টোর থেকে ডেটা রিট্রিভ করতে এবং Edge ক্যাশে, কোটা ও OAuth পরিষেবা ব্যবহার করতে পারবেন। এছাড়াও, apigee-access মডিউল ব্যবহার করা দেখুন।
trireme-support Node.js অ্যাপ্লিকেশনকে Trireme-এর নির্দিষ্ট ফিচার ব্যবহার করতে দেয়। বর্তমানে শুধুমাত্র একটি ফিচার কাজ করে -- Java-তে তৈরি Node.js মডিউল লোড করা। মনে রাখবেন: Edge Cloud-এ loadJars কাজ করে না।
trireme-xslt XLST প্রসেসিংয়ের অ্যাবস্ট্রাকশন উপস্থাপন করে। এটি বিশেষভাবে Trireme প্ল্যাটফর্মের জন্য ডিজাইন করা হয়েছে যাতে Node.js অ্যাপ্লিকেশন Java-তে রান করার সময় XSLT-এর কার্যকর প্রসেসিং করা যায়।
trireme-jdbc Node.js থেকে JDBC-তে অ্যাক্সেস প্রদান করে। মনে রাখবেন: Edge Cloud-এ কাজ করে না। Edge Private ক্লাউডের জন্য, আপনি ক্লাস পাথে JDPC JAR ফাইল রাখতে এবং এই মডিউল ব্যবহার করতে পারবেন।

সাধারণত ব্যবহৃত Node.js মডিউলগুলির জন্য সহায়তা

Node.js স্ক্রিপ্টের উপর বিধিনিষেধ

তবে, মনে রাখবেন যে Edge, Node.js স্ক্রিপ্টের উপর নির্দিষ্ট কিছু বিধিনিষেধ আরোপ করে, যেমন নিচে উল্লেখ করা বিষয়গুলি:

  • Edge নেটওয়ার্ক আর্কিটেকচারের কারণে Apigee Edge এনভায়রনমেন্টে Node.js অ্যাপ্লিকেশন UDP-এর মাধ্যমে ইন্টারনেটে পরিষেবা অ্যাক্সেস করতে পারে না।
  • যে ডিরেক্টরি থেকে Node.js স্ক্রিপ্ট লঞ্চ করা হয়েছে, ফাইলসিস্টেম অ্যাক্সেস সেখানে সীমাবদ্ধ থাকে: /resources/node ডিরেক্টরি। Node.js স্ক্রিপ্ট এই ডিরেক্টরির মধ্যে ফাইল পড়তে ও লিখতে পারে, যেমন অস্থায়ী স্ক্র্যাচ এরিয়া হিসেবে, কিন্তু ফাইলগুলি কতদিন থাকবে সেই ব্যাপারে কোনও গ্যারান্টি নেই।
  • ইনকামিং TCP কানেকশন শোনার চেষ্টা করলে ব্যতিক্রম তৈরি হয়।
  • ব্যবহারকারীর আইডি, গ্রুপ মেম্বারশিপ ও ওয়ার্কিং ডিরেক্টরি ম্যানিপুলেট করার ফাংশনালিটি কাজ করে না।
  • স্ট্যান্ডার্ড ইনপুটের জন্য, আপনি TargetEndpoint-এর ScriptTarget এলিমেন্ট ব্যবহার করে আর্গুমেন্ট পাস করার মধ্যে সীমাবদ্ধ। আরও তথ্যের জন্য উন্নত ScriptTarget কনফিগারেশন দেখুন।
  • সাধারণ আউটপুটের জন্য, আপনার প্রক্সির Edge ম্যানেজমেন্ট UI-তে Node.js লগ বোতাম ব্যবহার করার ক্ষেত্রে আপনি সীমাবদ্ধ। এছাড়াও, আপনি "apigeetool getlogs" কমান্ড ব্যবহার করতে পারেন। আরও তথ্যের জন্য, স্ট্যান্ডঅ্যালোন Node.js অ্যাপ ডিপ্লয় করা দেখুন।
  • নেটিভ কোডের উপর নির্ভর করে এমন মডিউল কাজ করে না।
  • Promises ও Generators-এর মতো EcmaScript 6 ফিচারের উপর নির্ভর করে এমন মডিউল কাজ করে না।
  • "harmony-proxies"-এর মতো Node.js রানটাইম ফ্ল্যাগ কাজ করে না।

প্রাইভেট ক্লাউডের জন্য Edge-এ IP কানেকশন সংক্রান্ত বিধিনিষেধ সেট করা

Edge for Private Cloud "10." দিয়ে শুরু হওয়া IP অ্যাড্রেস অ্যাক্সেস করা থেকে Node.js কোডকে সীমাবদ্ধ করতে পারে, "192.168" এবং লোকালহোস্ট। আপনি এইসব IP অ্যাড্রেস অ্যাক্সেস করার চেষ্টা করলে, আপনি এই ধরনের একটি সমস্যা দেখতে পাবেন:

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

প্রতিটি মেসেজ প্রসেসরের জন্য message-processors.properties ফাইলে conf_nodejs_connect.ranges.denied প্রপার্টি সেট করে আপনি এইসব বিধিনিষেধ পরিবর্তন করতে পারবেন। সাধারণত, এই প্রপার্টির ভ্যালু হল:

  • 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 ফাইলটি খুলুন। ফাইলটি না থাকলে, এটি তৈরি করুন:
    > vi /<inst_root>/apigee/customer/application/message-processor.properties
  2. ইচ্ছা অনুযায়ী প্রপার্টি সেট করুন। যেমন, শুধুমাত্র localhost-এর অ্যাক্সেস বন্ধ করতে:
    conf_nodejs_connect.ranges.denied=127.0.0.1/32
  3. আপনার করা পরিবর্তন সেভ করুন।
  4. প্রপার্টি ফাইলের মালিক 'apigee' ব্যবহারকারী কিনা তা নিশ্চিত করুন:
    > chown apigee:apigee /<inst_root>/apigee/customer/application/message-processor.properties
  5. মেসেজ প্রসেসর রিস্টার্ট করুন:
    > /<inst_root>/apigee/apigee-service/bin/apigee-service edge-message-processor restart

http ও https মডিউলের জন্য সহায়তা বোঝা

Apigee Edge-এ রান করা সব Node.js অ্যাপ্লিকেশনকে ইনকামিং অনুরোধ শোনার জন্য http বা https মডিউল ব্যবহার করতে হবে। আপনি যদি এমন কোনও স্ক্রিপ্ট ডেপ্লয় করেন যা ইনকামিং অনুরোধের জন্য অপেক্ষা করে না, তাহলে এটি শুধু এক্সিকিউট করে বেরিয়ে যাবে।

Node.js-এ http ও https মডিউলের listen পদ্ধতি একটি পোর্ট নম্বরকে প্যারামিটার হিসেবে নেয়। যেমন:

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

Node.js-এ এই "port" আর্গুমেন্ট প্রয়োজন, কিন্তু Apigee Edge এই প্যারামিটার উপেক্ষা করে। পরিবর্তে, Node.js স্ক্রিপ্ট যে API প্রক্সি সার্ভারে রান করে সেটি "ভার্চুয়াল হোস্ট" নির্দিষ্ট করে দেয়, যেটিতে সেটি লিসেন করে, এবং Node.js অ্যাপ্লিকেশন সেই একই ভার্চুয়াল হোস্ট ব্যবহার করে, ঠিক অন্য কোনও Apigee Edge প্রক্সির মতো।

Apigee-এর প্রতিটি এনভায়রনমেন্টে অন্তত একটি ভার্চুয়াল হোস্ট থাকে। ভার্চুয়াল হোস্ট Apigee সংস্থার সাথে কানেক্ট করার জন্য HTTP সেটিংস নির্ধারণ করে। কোনও এনভায়রনমেন্টে থাকা সব API প্রক্সি একই ভার্চুয়াল হোস্ট শেয়ার করে। সাধারণত, প্রতিটি এনভায়রনমেন্টের জন্য দুটি ভার্চুয়াল হোস্ট উপলভ্য থাকে: default এবং secure। আরও তথ্যের জন্য, ভার্চুয়াল হোস্ট পান এবং API ডেভেলপমেন্ট লাইফসাইকেল দেখুন।

apigeetool deploynodeapp কমান্ডটি Node.js অ্যাপ্লিকেশনের চারপাশে একটি Apigee Edge প্রক্সি র‍্যাপার জেনারেট করে। ডিপ্লয় করা হলে, Node.js অ্যাপ্লিকেশনটি এনভায়রনমেন্টের জন্য ডিফল্ট হিসেবে নির্ধারিত ভার্চুয়াল হোস্টের উপর লিসেন করে। Node.js অ্যাপ্লিকেশনের URL সবসময় http://{org_name}-{env_name}.apigee.net হবে।

আগত অনুরোধ হ্যান্ডেল করা

অন্যান্য Apigee Edge অ্যাপ্লিকেশনের মতো, প্রক্সি অ্যাপ্লিকেশন যদি secure ভার্চুয়াল হোস্টে শোনার জন্য সেট-আপ করা হয়, তাহলে এটি HTTPS ব্যবহার করে ইনকামিং অনুরোধ গ্রহণ করবে।

আউটগোয়িং অনুরোধ হ্যান্ডেল করা

ইনকামিং ট্রাফিক পাওয়ার পাশাপাশি, Apigee Edge-এর মধ্যে থাকা Node.js অ্যাপ্লিকেশন http এবং https মডিউল ব্যবহার করে অন্য যেকোনও Node.js অ্যাপ্লিকেশনের মতো আউটবাউন্ড অনুরোধ করতে পারে। এইসব মডিউল Node.js-এর মধ্যে যেভাবে কাজ করে, এখানেও ঠিক সেইভাবেই কাজ করে।

tls মডিউলের জন্য সহায়তা বোঝা

Apigee Edge Node.js tls মডিউল-এ কাজ করে। এই মডিউলটি ট্রান্সপোর্ট লেয়ার সিকিউরিটি (TLS) এবং/অথবা এনক্রিপ্টেড স্ট্রিম কমিউনিকেশন প্রদান করতে OpenSSL ব্যবহার করে। (SSL) Edge-এ রান করা Node.js অ্যাপ্লিকেশন থেকে ব্যাকএন্ড পরিষেবায় নিরাপদ কানেকশন তৈরি করতে আপনি tls মডিউল ব্যবহার করতে পারবেন।

Apigee Edge-এ tls মডিউল কীভাবে কাজ করে তা বুঝতে হলে, Apigee Edge-এ কীভাবে virtual hosts ব্যবহার করা হয় তা বোঝা গুরুত্বপূর্ণ। Apigee-এর প্রতিটি এনভায়রনমেন্টে অন্তত একটি ভার্চুয়াল হোস্ট থাকে। ভার্চুয়াল হোস্ট, Apigee সংস্থার সাথে কানেক্ট করার জন্য HTTP সেটিংস নির্ধারণ করে। কোনও এনভায়রনমেন্টে থাকা সব API প্রক্সি একই ভার্চুয়াল হোস্ট শেয়ার করে। সাধারণত, প্রতিটি এনভায়রনমেন্টের জন্য দুটি ভার্চুয়াল হোস্ট উপলভ্য: default এবং secure। ভার্চুয়াল হোস্ট সম্পর্কে আরও জানতে, ভার্চুয়াল হোস্ট পান এবং API ডেভেলপমেন্ট লাইফসাইকেল দেখুন।

এখন, Node.js অ্যাপ্লিকেশনে আসা ও যাওয়া অনুরোধের জন্য Apigee Edge কীভাবে TLS (SSL) কমিউনিকেশন ম্যানেজ করে তা দেখা যাক:

আগত অনুরোধ হ্যান্ডেল করা

আপনার প্রতিষ্ঠানের জন্য কীভাবে ভার্চুয়াল হোস্ট কনফিগার করা হয়েছে তার উপর নির্ভর করে, Edge এইসব বিকল্প প্রদান করে:

  • API প্রক্সি যদি default ভার্চুয়াল হোস্টে শোনার জন্য কনফিগার করা থাকে, তাহলে এটি HTTP-এর মাধ্যমে অনুরোধ গ্রহণ করে।
  • API প্রক্সি যদি secure ভার্চুয়াল হোস্টে শোনার জন্য কনফিগার করা থাকে, তাহলে এটি HTTPS-এর মাধ্যমে অনুরোধ গ্রহণ করে। URLটি apigee.net ডোমেনের অধীনে থাকবে এবং *.apigee.net-এর জন্য ওয়াইল্ডকার্ড SSL সার্টিফিকেট ব্যবহার করা হবে। যতক্ষণ অ্যাপগুলি apigee.net ডোমেনে অনুরোধ পাঠাতে থাকবে, ততক্ষণ SSL সার্টিফিকেট স্বাভাবিকভাবে যাচাই করা হবে।

আউটগোয়িং অনুরোধ হ্যান্ডেল করা

আপনি tls মডিউল ব্যবহার করে আউটগোয়িং অনুরোধ করতে পারবেন, ঠিক যেভাবে আপনি সাধারণত Node.js-এ করেন। মোটকথা, আপনাকে resources/node ডিরেক্টরিতে ক্লায়েন্ট-সাইড কী ও সার্টিফিকেট (.pem ফাইল) যোগ করতে হবে এবং আপনার স্ক্রিপ্টের মধ্যে সেগুলি লোড করতে হবে। tls মডিউল ও এর পদ্ধতি ব্যবহার করা সংক্রান্ত তথ্যের জন্য, Node.js tls মডিউল ডকুমেন্টেশন দেখুন।

উন্নত ScriptTarget কনফিগারেশন

<TargetEndpoint> ডেফিনিশনে, <ScriptTarget> এলিমেন্ট <ResourceURL> ছাড়াও অতিরিক্ত ঐচ্ছিক প্যারামিটার নেয়। এছাড়াও, আপনি <EnvironmentVariables> এবং <Arguments> প্যারামিটার ব্যবহার করে Node.js স্ক্রিপ্টে কমান্ড-লাইন আর্গুমেন্ট এবং এনভায়রনমেন্ট ভেরিয়েবল পাস করতে পারেন:
<TargetEndpoint name="default">
  <ScriptTarget>
     <ResourceURL>node://hello.js</ResourceURL>
     <EnvironmentVariables>
         <EnvironmentVariable name="NAME">VALUE</EnvironmentVariable> 
     </EnvironmentVariables>
     <Arguments>
         <Argument>ARG</Argument>
     </Arguments>
  </ScriptTarget>
</TargetEndpoint>