Node.js মডিউলগুলির জন্য এজ সমর্থন বোঝা

আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন
.info- তে যান।

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` রিটার্ন করে এবং অন্যান্য মেথডগুলো ইমপ্লিমেন্ট করা হয়নি। প্রতিটি `Node.js` স্ক্রিপ্টের একটি করে কপি প্রতিটি `Edge` মেসেজ প্রসেসরে ডেপ্লয় করা হয়।
crypto সমর্থিত
dns সমর্থিত
domain সমর্থিত
dgram সীমাবদ্ধ আমাদের নেটওয়ার্ক আর্কিটেকচারের কারণে Apigee পরিবেশে থাকা Node.js অ্যাপ্লিকেশনগুলো UDP-এর মাধ্যমে ইন্টারনেটের পরিষেবাগুলো অ্যাক্সেস করতে পারবে না।
events সমর্থিত
fs সীমাবদ্ধ ফাইলসিস্টেম অ্যাক্সেস শুধুমাত্র সেই ডিরেক্টরিতে সীমাবদ্ধ যেখানে স্ক্রিপ্টটি চালু করা হয়েছিল: অর্থাৎ /resources/node ডিরেক্টরিতে। Node.js স্ক্রিপ্টগুলি এই ডিরেক্টরির মধ্যে ফাইল পড়তে এবং লিখতে পারে, উদাহরণস্বরূপ একটি অস্থায়ী স্ক্র্যাচ এরিয়া হিসাবে, কিন্তু ফাইলগুলি কতক্ষণ স্থায়ী হবে তার কোনো নিশ্চয়তা নেই।
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 ইনফ্রাস্ট্রাকচারের মধ্যে একটি লগ ফাইলে পাঠানো হয়। আপনার এপিআই প্রক্সির জন্য Apigee Edge ম্যানেজমেন্ট UI-তে থাকা Node.js Logs বাটনে ক্লিক করে আপনি এই লগগুলো দেখতে পারেন।

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-এ চলে। এটি একটি জাভা ভার্চুয়াল মেশিনের (JVM) ভিতরে Node.js স্ক্রিপ্ট চালানোর জন্য ডিজাইন করা হয়েছে। এই সমস্ত মডিউল NPM-এ উপলব্ধ।

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

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

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

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

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

প্রাইভেট ক্লাউডের জন্য এজ-এ আইপি সংযোগ সীমাবদ্ধতা সেট করা

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

{ [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. প্রপার্টিটি প্রয়োজনমতো সেট করুন। উদাহরণস্বরূপ, শুধুমাত্র লোকালহোস্টে অ্যাক্সেস অস্বীকার করতে:
    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 স্ক্রিপ্টটি চলে, সেটিই তার শোনার জন্য 'ভার্চুয়াল হোস্ট' নির্দিষ্ট করে দেয়, এবং Node.js অ্যাপ্লিকেশনটি অন্য যেকোনো Apigee Edge প্রক্সির মতোই সেই একই ভার্চুয়াল হোস্টগুলো ব্যবহার করে।

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

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 অ্যাপ্লিকেশনগুলো ইনকামিং ট্র্যাফিক গ্রহণ করার পাশাপাশি, অন্য যেকোনো Node.js অ্যাপ্লিকেশনের মতোই আউটবাউন্ড রিকোয়েস্ট পাঠানোর জন্য http এবং https মডিউল ব্যবহার করতে পারে। এই মডিউলগুলো Node.js-এর ভেতরে যেমনটা সবসময় কাজ করে, ঠিক সেভাবেই কাজ করে।

টিএলএস মডিউলের জন্য সমর্থন বোঝা

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

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

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

আগত অনুরোধগুলি পরিচালনা করা

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

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

বহির্গামী অনুরোধগুলি পরিচালনা করা

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

উন্নত স্ক্রিপ্টটার্গেট কনফিগারেশন

<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>