API প্রক্সি কনফিগারেশন রেফারেন্স

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

Apigee Edge-এর সাথে কাজ করা একজন ডেভেলপার হিসেবে, আপনার প্রাথমিক ডেভেলপমেন্ট অ্যাক্টিভিটি হল API প্রক্সি কনফিগার করা যা API বা ব্যাকএন্ড পরিষেবার জন্য প্রক্সি হিসেবে কাজ করে। API প্রক্সি তৈরি করার সময় আপনার কাছে উপলভ্য সব কনফিগারেশন এলিমেন্টের রেফারেন্স এই ডকুমেন্টে দেওয়া আছে।

আপনি যদি API প্রক্সি কীভাবে তৈরি করতে হয় তা শিখছেন, তাহলে আপনাকে এই বিষয় দিয়ে শুরু করার সাজেশন দেওয়া হয় একটি সাধারণ API প্রক্সি তৈরি করুন।

প্রক্সি কনফিগারেশন এডিট করার সবচেয়ে সাধারণ উপায়গুলি হল:

প্রক্সি কনফিগারেশনের লোকাল ডেভেলপমেন্ট

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

এই বিভাগে, কীভাবে UI ব্যবহার করে আগে থেকে থাকা প্রক্সি কনফিগারেশন ডাউনলোড করতে, এটি এডিট করতে এবং তারপর এটি Edge-এ আবার আপলোড করে ডেপ্লয় করতে হয় তা বর্ণনা করা হয়েছে। এছাড়াও, আপনি apigeetool ব্যবহার করে নতুন প্রক্সি কনফিগারেশন ডাউনলোড ও ডেপ্লয় করতে পারেন (এর জন্য যথাক্রমে fetchproxy ও deployproxy কমান্ড ব্যবহার করুন)।

UI ব্যবহার করে লোকালি প্রক্সি কনফিগারেশন এডিট করতে:

  1. Edge UI-তে বর্তমান প্রক্সি কনফিগারেশন ডাউনলোড করুন। (API প্রক্সি ভিউতে, প্রোজেক্ট > রিভিশন ডাউনলোড করুন বিকল্প বেছে নিন।)
  2. আপনার লোকাল মেশিনে, একটি নতুন ডিরেক্টরি তৈরি করুন এবং ডাউনলোড করা ZIP ফাইলটি সেখানে এক্সট্র্যাক্ট করুন।

    জিপ ফাইলটি বড় করতে, আপনি unzip-এর মতো ইউটিলিটি ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    mkdir myappdir
    unzip ./my-app_app_rev3_2019_04_20.zip -d myappdir

    ZIP ফাইলের এক্সপ্যান্ড করা কন্টেন্ট API প্রক্সি স্ট্রাকচারে বর্ণিত স্ট্রাকচারের মতো হতে হবে।

  3. প্রয়োজন অনুযায়ী সোর্স ফাইল এডিট করুন। প্রক্সি কনফিগারেশনে সোর্স ফাইলের বিবরণ পেতে API প্রক্সির কনফিগারেশন ফাইল ও ডিরেক্টরি স্ট্রাকচার দেখুন।

    যেমন, আপনার API প্রক্সিতে স্বাস্থ্য সংক্রান্ত মনিটরিং চালু করতে, /apiproxy/targets/ ডিরেক্টরিতে TargetEndpoint কনফিগারেশন ফাইল এডিট করুন। এই ডিরেক্টরির ডিফল্ট ফাইল হল default.xml, যদিও আপনি শর্তসাপেক্ষ টার্গেট ব্যবহার করলে, আলাদা আলাদা নামের ফাইল থাকতে পারে।

    এই ক্ষেত্রে, TargetEndpoint কনফিগারেশন ফাইল ও এর ডিরেক্টরি না থাকলে, সেগুলি তৈরি করুন।

  4. প্রক্সি কনফিগারেশন ফাইল এডিট করা হয়ে গেলে, আপনার করা পরিবর্তন সেভ করতে ভুলবেন না।
  5. ZIP ফাইল এক্সপ্যান্ড করার সময় আপনি যে নতুন ডিরেক্টরি তৈরি করেছেন সেটি পরিবর্তন করুন (এক্সপ্যান্ড করা কনফিগারেশন ফাইলের রুট)।

    যেমন, আপনি যদি /myappdir ডিরেক্টরিতে ফাইলগুলি এক্সপ্যান্ড করে থাকেন, তাহলে সেই ডিরেক্টরিতে পরিবর্তন করুন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:

    cd myappdir

    প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করার আগে আপনাকে এই ডিরেক্টরিতে পরিবর্তন করতে হবে কারণ আপনি চান না যে /myappdir ডিরেক্টরি ZIP ফাইলে অন্তর্ভুক্ত করা হোক। ZIP ফাইলের টপ-লেভেল ডিরেক্টরি /apiproxy হতে হবে।

  6. নতুন বা পরিবর্তিত ফাইল সহ প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করুন। আপনি zip-এর মতো ইউটিলিটি ব্যবহার করতে পারেন, যেমনটি নিম্নলিখিত উদাহরণে দেখানো হয়েছে:
    zip my-new-proxy.zip -r .

    ZIP ফাইলের সবচেয়ে উপরের লেভেলের ডিরেক্টরি /apiproxy হতে হবে।

    ZIP ফাইলের নামের জন্য কোনও বিশেষ প্রয়োজনীয়তা নেই। যেমন, আপনাকে সংশোধনের নম্বর বাড়াতে বা ফাইলের নামে তারিখ উল্লেখ করতে হবে না, তবে এটি করলে ডিবাগিং বা সোর্স কন্ট্রোলের ক্ষেত্রে সুবিধা হতে পারে।

    আপনি এটি আপলোড করলে, Edge আপনার জন্য নতুন প্রক্সি কনফিগারেশনের রিভিশন নম্বর বাড়িয়ে দেয়। এটি।

  7. Edge UI ব্যবহার করে নতুন প্রক্সি কনফিগারেশন আপলোড করুন। (API প্রক্সি ভিউতে, প্রোজেক্ট > নতুন রিভিশন আপলোড করুন বিকল্প বেছে নিন।)

    আপনি যদি Bundle is invalid. Empty bundle.-এর মতো কোনও সমস্যা দেখতে পান, তাহলে নিশ্চিত করুন যে আপনার ZIP ফাইলের টপ-লেভেল ডিরেক্টরি হল /apiproxy। যদি না থাকে, তাহলে এক্সপ্যান্ড করা ডিরেক্টরির রুট থেকে আপনার প্রক্সি কনফিগারেশন ফাইল আবার আর্কাইভ করুন।

    আপনার নতুন প্রক্সি কনফিগারেশন আপলোড করার পরে, Edge রিভিশন নম্বর বাড়িয়ে দেয় এবং রিভিশন সারসংক্ষেপ ভিউতে এটি দেখায়।

    আপনি UI-এর মাধ্যমে আপলোড করার পরে Edge আপনার জন্য নতুন রিভিশন ডেপ্লয় করে না।

  8. আপনার নতুন রিভিশন ডেপ্লয় করুন।

আরও তথ্যের জন্য, Apigee কমিউনিটিতে টিউটোরিয়াল: UI ও ম্যানেজমেন্ট API ব্যবহার করে কীভাবে প্রক্সি ডাউনলোড করবেন দেখুন।

API প্রক্সি স্ট্রাকচার

API প্রক্সিতে নিম্নলিখিত কনফিগারেশন থাকে:

বেস কনফিগারেশন API প্রক্সির জন্য প্রাথমিক কনফিগারেশন সেটিংস। বেস কনফিগারেশন দেখুন।
ProxyEndpoint কনফিগারেশন ইনবাউন্ড HTTP কানেকশনের সেটিংস (অনুরোধকারী অ্যাপ থেকে Apigee Edge-এ), অনুরোধ ও রেসপন্স ফ্লো এবং নীতি অ্যাটাচমেন্ট। ProxyEndpoint দেখুন।
TargetEndpoint কনফিগারেশন আউটবাউন্ড HTTP কানেকশনের সেটিংস (Apigee Edge থেকে ব্যাকএন্ড পরিষেবা), অনুরোধ ও উত্তর সংক্রান্ত ফ্লো এবং নীতি অ্যাটাচমেন্ট। TargetEndpoint দেখুন।
ফ্লো ProxyEndpoint এবং TargetEndpoint অনুরোধ ও উত্তর পাইপলাইন, যার সাথে নীতি সংযুক্ত করা যেতে পারে। ফ্লো দেখুন।
নীতি Apigee Edge নীতি স্কিমার সাথে মানানসই XML-ফর্ম্যাট করা কনফিগারেশন ফাইল। নীতি দেখুন।
রিসোর্স কাস্টম লজিক এক্সিকিউট করার জন্য নীতি দ্বারা রেফারেন্স করা স্ক্রিপ্ট, JAR ফাইল এবং XSLT ফাইল। রিসোর্স দেখুন।

API প্রক্সি ডিরেক্টরি স্ট্রাকচার ও কন্টেন্ট

উপরের টেবিলে থাকা কম্পোনেন্টগুলি নিম্নলিখিত ডিরেক্টরি স্ট্রাকচারে কনফিগারেশন ফাইল দ্বারা সংজ্ঞায়িত করা হয়:

ডিরেক্টরি স্ট্রাকচার দেখায় যেখানে apiproxy হল রুট। 
    apiproxy ডিরেক্টরির ঠিক নিচে নীতি, প্রক্সি, রিসোর্স ও টার্গেট ডিরেক্টরি এবং
    weatherapi.xml ফাইল থাকে।

কনফিগারেশন ফাইল ও ডিরেক্টরি API প্রক্সির স্ট্রাকচার

এই বিভাগে API প্রক্সির কনফিগারেশন ফাইল ও ডিরেক্টরি স্ট্রাকচার ব্যাখ্যা করা হয়েছে।

বেস কনফিগারেশন

/apiproxy/weatherapi.xml

API প্রক্সির বেস কনফিগারেশন, যা API প্রক্সির নাম নির্ধারণ করে। নামটি সংস্থার মধ্যে অনন্য হতে হবে।

কনফিগারেশনের নমুনা:

<APIProxy name="weatherapi">
</APIProxy>

বেস কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
APIProxy
name API প্রক্সির নাম, যা কোনও সংস্থার মধ্যে অনন্য হতে হবে। নামে ব্যবহার করার অনুমতি আছে এমন অক্ষরগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9_- প্রযোজ্য নয় হ্যাঁ
revision API প্রক্সি কনফিগারেশনের রিভিশন নম্বর। আপনাকে স্পষ্টভাবে রিভিশন নম্বর সেট করতে হবে না, কারণ Apigee Edge অটোমেটিক API প্রক্সির বর্তমান রিভিশন ট্র্যাক করে। প্রযোজ্য নয় না
ConfigurationVersion API প্রক্সি কনফিগারেশন স্কিমার সেই ভার্সন যার সাথে এই API প্রক্সি মানানসই। বর্তমানে শুধুমাত্র majorVersion 4 এবং minorVersion 0 ভ্যালু কাজ করে। API প্রক্সি ফর্ম্যাটের বিবর্তন চালু করতে ভবিষ্যতে এই সেটিং ব্যবহার করা হতে পারে। ৪.০ না
Description API প্রক্সি সম্পর্কে টেক্সটে লেখা বিবরণ। প্রদান করা হলে, Edge ম্যানেজমেন্ট UI-তে বিবরণটি দেখানো হবে। প্রযোজ্য নয় না
DisplayName API প্রক্সি কনফিগারেশনের name অ্যাট্রিবিউট থেকে আলাদা হতে পারে এমন ব্যবহারকারী-বান্ধব নাম। প্রযোজ্য নয় না
Policies এই API প্রক্সির /policies ডিরেক্টরিতে নীতির তালিকা। আপনি সাধারণত Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করলে তবেই এই এলিমেন্ট দেখতে পাবেন। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সির কন্টেন্ট সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। প্রযোজ্য নয় না
ProxyEndpoints এই API প্রক্সির /proxies ডিরেক্টরিতে ProxyEndpoints-এর একটি তালিকা। আপনি সাধারণত তখনই এই এলিমেন্ট দেখতে পাবেন যখন Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্ট সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। প্রযোজ্য নয় না
Resources এই API প্রক্সির /resources ডিরেক্টরিতে রিসোর্সের (JavaScript, Python, Java, XSLT) একটি তালিকা। আপনি সাধারণত এই এলিমেন্টটি তখনই দেখতে পাবেন যখন API প্রক্সি Edge ম্যানেজমেন্ট UI ব্যবহার করে তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্টকে দৃশ্যমান করার জন্য ডিজাইন করা হয়েছে। প্রযোজ্য নয় না
Spec API প্রক্সির সাথে যুক্ত OpenAPI স্পেসিফিকেশন শনাক্ত করে। ভ্যালু স্পেসিফিকেশন স্টোরে কোনও URL বা পাথে সেট করা আছে।

মনে রাখবেন: স্পেসিফিকেশন স্টোর শুধুমাত্র New Edge এক্সপিরিয়েন্সে উপলভ্য। স্পেসিফিকেশন স্টোর সম্পর্কে আরও জানতে, স্পেসিফিকেশন ম্যানেজ ও শেয়ার করা দেখুন।
প্রযোজ্য নয় না
TargetServers এই API প্রক্সির যেকোনও TargetEndpoints-এ উল্লেখ করা TargetServers-এর তালিকা। আপনি সাধারণত Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করলে তবেই এই এলিমেন্ট দেখতে পাবেন। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সির কন্টেন্ট সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। প্রযোজ্য নয় না
TargetEndpoints এই API প্রক্সি /targets ডিরেক্টরিতে TargetEndpoints-এর তালিকা। আপনি সাধারণত তখনই এই এলিমেন্ট দেখতে পাবেন যখন Edge ম্যানেজমেন্ট UI ব্যবহার করে API প্রক্সি তৈরি করা হয়। এটি হল একটি সাধারণ 'ম্যানিফেস্ট' সেটিং, যা API প্রক্সি কন্টেন্ট সম্পর্কে দৃশ্যমানতা প্রদান করার জন্য ডিজাইন করা হয়েছে। প্রযোজ্য নয় না

ProxyEndpoint

নিচের ছবিতে অনুরোধ/উত্তর সংক্রান্ত ফ্লো দেখানো হয়েছে:

HTTP
  পরিষেবায় কল করা ক্লায়েন্টকে দেখায়। HTTP পরিষেবা দ্বারা প্রসেস করার আগে অনুরোধটি প্রক্সি এন্ডপয়েন্ট এবং তারপরে টার্গেট এন্ডপয়েন্টের মাধ্যমে
  যায়। উত্তরটি ক্লায়েন্টকে ফেরত পাঠানোর আগে টার্গেট এন্ডপয়েন্ট এবং তারপরে
  প্রক্সি এন্ডপয়েন্টের মাধ্যমে যায়।

/apiproxy/proxies/default.xml

ProxyEndpoint কনফিগারেশন API প্রক্সির ইনবাউন্ড (ক্লায়েন্ট-ফেসিং) ইন্টারফেসকে সংজ্ঞায়িত করে। আপনি ProxyEndpoint কনফিগার করার সময়, এমন একটি নেটওয়ার্ক কনফিগারেশন সেট-আপ করছেন যা ক্লায়েন্ট অ্যাপ্লিকেশন ('অ্যাপ') কীভাবে প্রক্সি করা API ইনভোক করবে তা নির্ধারণ করে।

নিম্নলিখিত নমুনা ProxyEndpoint কনফিগারেশনটি /apiproxy/proxies-এর অধীনে সেভ করা হবে:

<ProxyEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPProxyConnection>
    <BasePath>/weather</BasePath>
    <VirtualHost>default</VirtualHost>
  </HTTPProxyConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <RouteRule name="default">
    <TargetEndpoint>default</TargetEndpoint>
  </RouteRule>
</ProxyEndpoint>

একটি সাধারণ ProxyEndpoint-এ প্রয়োজনীয় কনফিগারেশন এলিমেন্ট হল:

ProxyEndpoint কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
ProxyEndpoint
name ProxyEndpoint-এর নাম। একাধিক ProxyEndpoints সংজ্ঞায়িত করা হলে, API প্রক্সি কনফিগারেশনের মধ্যে অনন্য হতে হবে। (বিরল ক্ষেত্রে) নামে আপনি যেসব অক্ষর ব্যবহার করতে পারবেন সেগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %। প্রযোজ্য নয় হ্যাঁ
PreFlow অনুরোধ বা উত্তরের PreFlow ফ্লোতে নীতি নির্ধারণ করে। প্রযোজ্য নয় হ্যাঁ
Flows
অনুরোধ বা উত্তরের কন্ডিশনাল ফ্লোতে নীতি নির্ধারণ করে।
প্রযোজ্য নয় হ্যাঁ
PostFlow
অনুরোধ বা উত্তরের PostFlow ফ্লোতে নীতি নির্ধারণ করে।
প্রযোজ্য নয় হ্যাঁ
HTTPProxyConnection API প্রক্সির সাথে যুক্ত নেটওয়ার্ক অ্যাড্রেস ও URI পাথ নির্ধারণ করে
BasePath

একটি প্রয়োজনীয় স্ট্রিং যা Apigee Edge-এর ব্যবহার করা URI পাথকে অনন্যভাবে শনাক্ত করে যাতে আগত মেসেজকে সঠিক API প্রক্সিতে রাউট করা যায়।

BasePath হল একটি URI ফ্র্যাগমেন্ট (যেমন /weather) যা API প্রক্সির বেস URL-এর (যেমন, http://apifactory-test.apigee.net) সাথে যোগ করা হয়। একটি এনভায়রনমেন্টের মধ্যে BasePath অনন্য হতে হবে। কোনও API প্রক্সি জেনারেট বা ইমপোর্ট করা হলে অনন্যতা যাচাই করা হয়।

বেস পাথে ওয়াইল্ডকার্ড ব্যবহার করা

আপনি API প্রক্সি বেস পাথে এক বা একাধিক "*" ওয়াইল্ডকার্ড ব্যবহার করতে পারবেন। যেমন, /team/*/members-এর বেস পাথ ক্লায়েন্টকে https://[host]/team/blue/members এবং https://[host]/team/green/members কল করার অনুমতি দেয়। এর জন্য নতুন টিমকে সাপোর্ট করার জন্য আপনাকে নতুন API প্রক্সি তৈরি করতে হয় না। মনে রাখবেন, /**/ কাজ করে না।

গুরুত্বপূর্ণ: Apigee-তে বেস পাথের প্রথম এলিমেন্ট হিসেবে ওয়াইল্ডকার্ড "*" ব্যবহার করা যায় না। যেমন, এটি কাজ করে না: /*/search. বেস পাথ "*" দিয়ে শুরু করলে অপ্রত্যাশিত সমস্যা হতে পারে, কারণ Edge বৈধ পাথ শনাক্ত করার সময় এই ধরনের সমস্যা হয়।

/ হ্যাঁ
VirtualHost

কোনও এনভায়রনমেন্টের জন্য নির্দিষ্ট বেস URL-এর সাথে API প্রক্সি অ্যাসোসিয়েট করে। VirtualHost হল একটি নামযুক্ত কনফিগারেশন যা কোনও এনভায়রনমেন্টের জন্য এক বা একাধিক URL নির্ধারণ করে।

ProxyEndpoint-এর জন্য সংজ্ঞায়িত নামযুক্ত VirtualHosts, ডোমেন ও পোর্ট নির্ধারণ করে যেখানে API প্রক্সি এক্সপোজ করা হয় এবং এর সাথে সাথে, অ্যাপগুলি যে URL ব্যবহার করে API প্রক্সি ইনভোক করে সেটিও নির্ধারণ করে।

সাধারণত, কোনও এনভায়রনমেন্টের জন্য দুটি নামযুক্ত VirtualHost সংজ্ঞায়িত করা হয়: default এবং secure. এছাড়াও, কোনও সংস্থা কাস্টম ডোমেন নির্ধারণ করতে পারে। কোনও API প্রক্সি যাতে শুধুমাত্র HTTPS-এর মাধ্যমে উপলভ্য থাকে তা নিশ্চিত করতে, HTTPProxyConnection-এ VirtualHost-কে secure হিসেবে সেট করুন।

ডিফল্ট না
Properties ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেটকে <ProxyEndpoint>-এর প্রপার্টি হিসেবে সংজ্ঞায়িত করা যেতে পারে। প্রযোজ্য নয় না
FaultRules
ProxyEndpoint কীভাবে কোনও সমস্যার ব্যাপারে প্রতিক্রিয়া জানায় তা নির্ধারণ করে। একটি ফল্ট নিয়মে দুটি আইটেম নির্দিষ্ট করা হয়:
  • আগে থেকে সংজ্ঞায়িত বিভাগ, উপবিভাগ বা সমস্যার নামের উপর ভিত্তি করে হ্যান্ডেল করা সমস্যা নির্দিষ্ট করে এমন কন্ডিশন
  • এক বা একাধিক নীতি যা সংশ্লিষ্ট কন্ডিশনের জন্য ফল্ট নিয়মের আচরণকে সংজ্ঞায়িত করে

সমস্যা সমাধান করা দেখুন।

প্রযোজ্য নয় না
DefaultFaultRule

অন্য কোনও ফল্ট নিয়মের মাধ্যমে স্পষ্টভাবে হ্যান্ডেল করা হয়নি এমন যেকোনও সমস্যা (সিস্টেম, ট্রান্সপোর্ট, মেসেজিং বা নীতি) হ্যান্ডেল করে।

সমস্যা সমাধান করা দেখুন।

প্রযোজ্য নয় না
RouteRule ProxyEndpoint রিকোয়েস্ট পাইপলাইন দ্বারা প্রসেস করার পরে ইনবাউন্ড রিকোয়েস্ট মেসেজের গন্তব্য নির্ধারণ করে। সাধারণত, RouteRule একটি নামযুক্ত TargetEndpoint কনফিগারেশনের দিকে নির্দেশ করে, তবে এটি সরাসরি কোনও URL-এর দিকেও নির্দেশ করতে পারে।
Name প্রয়োজনীয় অ্যাট্রিবিউট, যা RouteRule-এর জন্য একটি নাম প্রদান করে। নামে ব্যবহার করার জন্য আপনাকে যেসব অক্ষর ব্যবহার করার অনুমতি দেওয়া হয়েছে সেগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %। যেমন, Cat2 %_ হল একটি আইনি নাম। প্রযোজ্য নয় হ্যাঁ
Condition রানটাইমে ডায়নামিক রাউটিংয়ের জন্য ব্যবহৃত ঐচ্ছিক কন্ডিশনাল স্টেটমেন্ট। কন্ডিশনাল ব্যাকএন্ড ভার্সনিংয়ের ক্ষেত্রে কন্টেন্ট-ভিত্তিক রাউটিং চালু করার মতো কাজে RouteRules সহায়ক। প্রযোজ্য নয় না
TargetEndpoint

নামযুক্ত TargetEndpoint কনফিগারেশন শনাক্ত করে এমন একটি ঐচ্ছিক স্ট্রিং। নামযুক্ত TargetEndpoint হল একই API প্রক্সির মধ্যে /targets ডিরেক্টরির অধীনে সংজ্ঞায়িত যেকোনও TargetEndpoint)।

TargetEndpoint-এর নাম দিয়ে, আপনি ইঙ্গিত করেন যে ProxyEndpoint অনুরোধ পাইপলাইন দ্বারা প্রসেস করার পরে অনুরোধ মেসেজ কোথায় ফরওয়ার্ড করা উচিত। মনে রাখবেন, এটি একটি ঐচ্ছিক সেটিং।

ProxyEndpoint সরাসরি কোনও URL কল করতে পারে। যেমন, কোনও JavaScript বা Java রিসোর্স, HTTP ক্লায়েন্ট হিসেবে কাজ করে, কোনও TargetEndpoint-এর প্রাথমিক কাজ করতে পারে, যা হল ব্যাকএন্ড পরিষেবায় অনুরোধ ফরওয়ার্ড করা।

প্রযোজ্য নয় না
ইউআরএল ProxyEndpoint-এর মাধ্যমে কল করা একটি আউটবাউন্ড নেটওয়ার্ক অ্যাড্রেসকে সংজ্ঞায়িত করে এমন একটি ঐচ্ছিক স্ট্রিং, যা /targets-এর অধীনে সেভ করা থাকতে পারে এমন যেকোনও TargetEndpoint কনফিগারেশনকে বাইপাস করে প্রযোজ্য নয় না

কীভাবে RouteRules কনফিগার করতে হয়

নামযুক্ত TargetEndpoint বলতে /apiproxy/targets-এর অধীনে থাকা কনফিগারেশন ফাইলকে বোঝায় যেখানে ProxyEndpoint-এর মাধ্যমে প্রসেস করার পরে RouteRule একটি অনুরোধ ফরওয়ার্ড করে।

যেমন, নিম্নলিখিত RouteRule কনফিগারেশন /apiproxy/targets/myTarget.xml-এর কথা উল্লেখ করে:

<RouteRule name="default">
  <TargetEndpoint>myTarget</TargetEndpoint>
</RouteRule>

সরাসরি URL ইনভোকেশন

এছাড়াও, ProxyEndpoint সরাসরি কোনও ব্যাকএন্ড পরিষেবা ইনভোক করতে পারে। সরাসরি URL ইনভোকেশন /apiproxy/targets-এর অধীনে যেকোনও নামযুক্ত TargetEndpoints কনফিগারেশন বাইপাস করে। এই কারণে, TargetEndpoint হল একটি ঐচ্ছিক API প্রক্সি কনফিগারেশন, যদিও, বাস্তবে, ProxyEndpoint থেকে সরাসরি ইনভোকেশন সাজেস্ট করা হয় না।

যেমন, নিম্নলিখিত RouteRule http://api.mycompany.com/v2-এ একটি HTTP কল করে।

<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

কন্ডিশনাল রুট

রানটাইমে ডায়নামিক রাউটিংয়ের জন্য RouteRules চেইন করা যেতে পারে। ইনবাউন্ড অনুরোধ নামযুক্ত TargetEndpoint কনফিগারেশনে, সরাসরি URL-এ বা দু'টির কোনও একটিতে রাউট করা যেতে পারে, HTTP হেডার, মেসেজ কন্টেন্ট, কোয়েরি প্যারামিটার বা প্রাসঙ্গিক তথ্যের উপর ভিত্তি করে, যেমন দিনের সময়, লোকেল ইত্যাদি।

কন্ডিশনাল RouteRules, Apigee Edge-এ অন্যান্য কন্ডিশনাল স্টেটমেন্টের মতো কাজ করে। কন্ডিশন রেফারেন্স ও ভেরিয়েবল রেফারেন্স দেখুন।

যেমন, নিম্নলিখিত RouteRule কম্বিনেশন প্রথমে ইনবাউন্ড অনুরোধ মূল্যায়ন করে HTTP হেডারের ভ্যালু যাচাই করে। HTTP হেডারে routeTo-এর মান TargetEndpoint1 হলে, অনুরোধটি TargetEndpoint1 নামের TargetEndpoint-এ ফরওয়ার্ড করা হয়। তা না হলে, ইনবাউন্ড অনুরোধটি http://api.mycompany.com/v2-এ ফরওয়ার্ড করা হয়।

<RouteRule name="MyRoute">
  <Condition>request.header.routeTo = "TargetEndpoint1"</Condition>
  <TargetEndpoint>TargetEndpoint1</TargetEndpoint>
</RouteRule>
<RouteRule name="default">
  <URL>http://api.mycompany.com/v2</URL>
</RouteRule>

নাল রুট

যেসব ক্ষেত্রে অনুরোধ মেসেজ TargetEndpoint-এ ফরওয়ার্ড করার প্রয়োজন নেই, সেইসব পরিস্থিতিকে সাপোর্ট করার জন্য একটি নাল RouteRule সংজ্ঞায়িত করা যেতে পারে। প্রক্সি এন্ডপয়েন্ট যখন প্রয়োজনীয় সব প্রসেসিং করে, তখন এটি কাজে লাগে। যেমন, কোনও এক্সটার্নাল পরিষেবা কল করার জন্য JavaScript ব্যবহার করা অথবা API পরিষেবার কী/ভ্যালু স্টোর থেকে লুক-আপের মাধ্যমে ডেটা পাওয়া।

যেমন, নিম্নলিখিতটি একটি নাল রুটকে সংজ্ঞায়িত করে:

<RouteRule name="GoNowhere"/>

শর্তসাপেক্ষ নাল রুট কাজে লাগতে পারে। নিচের উদাহরণে, একটি নাল রুট কনফিগার করা হয়েছে যা তখনই এক্সিকিউট হবে যখন HTTP হেডারে request.header.X-DoNothing null ছাড়া অন্য কোনও ভ্যালু থাকবে।

<RouteRule name="DoNothingOnDemand">
  <Condition>request.header.X-DoNothing != null</Condition>
</RouteRule>

মনে রাখবেন, RouteRules চেইন করা যেতে পারে, তাই কন্ডিশনাল নাল রুট সাধারণত কন্ডিশনাল রাউটিং সাপোর্ট করার জন্য ডিজাইন করা RouteRules-এর একটি সেটের কম্পোনেন্ট হবে।

ক্যাশিংয়ের ক্ষেত্রে কন্ডিশনাল নাল রাউটের ব্যবহারিক প্রয়োগ করা যেতে পারে। ক্যাশে নীতি দ্বারা সেট করা ভেরিয়েবলের ভ্যালু ব্যবহার করে, আপনি কোনও এন্ট্রি ক্যাশে থেকে পরিবেশন করা হলে, নাল রুট এক্সিকিউট করার জন্য API প্রক্সি কনফিগার করতে পারবেন।

<RouteRule name="DoNothingUnlessTheCacheIsStale">
  <Condition>lookupcache.LookupCache-1.cachehit is true</Condition>
</RouteRule>

TargetEndpoint

HTTP
  পরিষেবায় কল করা ক্লায়েন্টকে দেখায়। HTTP পরিষেবা দ্বারা প্রসেস করার আগে অনুরোধটি প্রক্সি এন্ডপয়েন্ট এবং তারপরে টার্গেট এন্ডপয়েন্টের মাধ্যমে
  যায়। উত্তরটি ক্লায়েন্টকে ফেরত পাঠানোর আগে টার্গেট এন্ডপয়েন্ট এবং তারপরে
  প্রক্সি এন্ডপয়েন্টের মাধ্যমে যায়।

ProxyEndpoint-এর আউটবাউন্ড সমতুল্য হল TargetEndpoint. TargetEndpoint একটি ব্যাকএন্ড পরিষেবা বা API-এর ক্লায়েন্ট হিসেবে কাজ করে -- এটি অনুরোধ পাঠায় এবং উত্তর পায়।

API প্রক্সির কোনও TargetEndpoints না থাকলেও চলে। সরাসরি URL-এ কল করার জন্য ProxyEndpoints কনফিগার করা যায়। কোনও TargetEndpoints না থাকা API প্রক্সিতে সাধারণত একটি ProxyEndpoint থাকে যা হয় সরাসরি কোনও ব্যাকএন্ড পরিষেবাকে কল করে অথবা Java বা JavaScript ব্যবহার করে কোনও পরিষেবাকে কল করার জন্য কনফিগার করা হয়।

TargetEndpoint কনফিগারেশন

/targets/default.xml

TargetEndpoint, Apigee Edge থেকে অন্য পরিষেবা বা সম্পদের আউটবাউন্ড কানেকশনকে সংজ্ঞায়িত করে।

এখানে TargetEndpoint কনফিগারেশনের একটি নমুনা দেওয়া হল:

<TargetEndpoint name="default">
  <PreFlow/>
  <Flows/>
  <PostFlow/>
  <HTTPTargetConnection>
    <URL>http://mocktarget.apigee.net</URL>
    <SSLInfo/>
  </HTTPTargetConnection>
  <FaultRules/>
  <DefaultFaultRule/>
  <ScriptTarget/>
  <LocalTargetConnection/>
</TargetEndpoint>

TargetEndpoint কনফিগারেশন এলিমেন্ট

TargetEndpoint নিম্নলিখিত যেকোনও একটি উপায়ে টার্গেটকে কল করতে পারে:

  • HTTP(S) কলের জন্য HTTPTargetConnection
  • লোকাল প্রক্সি-টু-প্রক্সির জন্য LocalTargetConnection চেনিং
  • Edge-হোস্ট করা Node.js স্ক্রিপ্টে কল করার জন্য ScriptTarget

TargetEndpoint-এ এগুলির মধ্যে শুধুমাত্র একটি কনফিগার করুন।

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
TargetEndpoint
name TargetEndpoint-এর নাম, যা API প্রক্সি কনফিগারেশনের মধ্যে অনন্য হতে হবে। আউটবাউন্ড প্রসেসিংয়ের জন্য অনুরোধ ডাইরেক্ট করতে ProxyEndpoint RouteRule-এ TargetEndPoint-এর নাম ব্যবহার করা হয়। নামে ব্যবহার করার জন্য অনুমোদিত অক্ষরগুলি নিম্নলিখিত অক্ষরগুলির মধ্যে সীমাবদ্ধ: A-Za-z0-9._\-$ %. প্রযোজ্য নয় হ্যাঁ
PreFlow অনুরোধ বা উত্তরের PreFlow ফ্লোতে নীতি নির্ধারণ করে। প্রযোজ্য নয় হ্যাঁ
Flows
অনুরোধ বা উত্তরের কন্ডিশনাল ফ্লোতে নীতি নির্ধারণ করে।
প্রযোজ্য নয় হ্যাঁ
PostFlow
অনুরোধ বা উত্তরের PostFlow ফ্লোতে নীতি নির্ধারণ করে।
প্রযোজ্য নয় হ্যাঁ
HTTPTargetConnection

এর চাইল্ড এলিমেন্টের মাধ্যমে HTTP-এর মাধ্যমে ব্যাকএন্ড রিসোর্স অ্যাক্সেস করার বিষয়টি নির্দিষ্ট করে।

আপনি HTTPTargetConnection ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (ScriptTarget বা LocalTargetConnection)।

URL TargetEndpoint যে ব্যাকএন্ড পরিষেবায় অনুরোধ মেসেজ ফরওয়ার্ড করে, তার নেটওয়ার্ক অ্যাড্রেস নির্ধারণ করে। প্রযোজ্য নয় না
LoadBalancer

নামযুক্ত এক বা একাধিক TargetServer কনফিগারেশনকে সংজ্ঞায়িত করে। নামযুক্ত TargetServer কনফিগারেশন, ২ বা তার বেশি এন্ডপয়েন্ট কনফিগারেশন কানেকশনকে লোড ব্যালেন্স করার জন্য ব্যবহার করা যেতে পারে।

এছাড়াও, আপনি API প্রক্সি কনফিগারেশনকে নির্দিষ্ট ব্যাকএন্ড পরিষেবা এন্ডপয়েন্ট URL থেকে আলাদা করতে TargetServers ব্যবহার করতে পারেন।

ব্যাকএন্ড সার্ভার জুড়ে লোড ব্যালেন্সিং দেখুন।

প্রযোজ্য নয় না
Properties ঐচ্ছিক HTTP কনফিগারেশন সেটিংসের একটি সেটকে <TargetEndpoint>-এর প্রপার্টি হিসেবে সংজ্ঞায়িত করা যেতে পারে। প্রযোজ্য নয় না
SSLInfo বিকল্প হিসেবে, API প্রক্সি ও টার্গেট পরিষেবার মধ্যে TLS/SSL কানেকশন কন্ট্রোল করতে, TargetEndpoint-এ TLS/SSL সেটিংস নির্ধারণ করুন। TLS/SSL TargetEndpoint কনফিগারেশন দেখুন। প্রযোজ্য নয় না
LocalTargetConnection এর চাইল্ড এলিমেন্টের মাধ্যমে, লোড ব্যালেন্সিং ও মেসেজ প্রসেসরের মতো নেটওয়ার্ক বৈশিষ্ট্য বাইপাস করে, লোকালি অ্যাক্সেস করা যায় এমন রিসোর্স নির্দিষ্ট করে।

টার্গেট রিসোর্স নির্দিষ্ট করতে, APIProxy চাইল্ড এলিমেন্ট (ProxyEndpoint এলিমেন্ট সহ) অথবা Path চাইল্ড এলিমেন্ট যোগ করুন।

আরও তথ্যের জন্য, API প্রক্সি একসাথে চেইন করা দেখুন।

আপনি LocalTargetConnection ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা ScriptTarget)।

APIProxy অনুরোধের টার্গেট হিসেবে ব্যবহার করার জন্য API প্রক্সির নাম নির্দিষ্ট করে। লক্ষ্য প্রক্সি অবশ্যই অনুরোধ পাঠানো প্রক্সির মতো একই সংস্থা ও এনভায়রনমেন্টে থাকতে হবে। এটি হল Path এলিমেন্ট ব্যবহার করার বিকল্প। প্রযোজ্য নয় না
ProxyEndpoint টার্গেট প্রক্সির ProxyEndpoint-এর নাম নির্দিষ্ট করতে APIProxy-এর সাথে ব্যবহার করা হয়। প্রযোজ্য নয় না
Path অনুরোধের টার্গেট হিসেবে ব্যবহার করার জন্য API প্রক্সির এন্ডপয়েন্ট পাথ নির্দিষ্ট করে। লক্ষ্য প্রক্সি এবং অনুরোধ পাঠানো প্রক্সি একই সংস্থা ও এনভায়রনমেন্টে থাকতে হবে। এটি APIProxy ব্যবহারের বিকল্প। প্রযোজ্য নয় না
FaultRules
TargetEndpoint কীভাবে কোনও সমস্যার ব্যাপারে প্রতিক্রিয়া জানায় তা নির্ধারণ করে। একটি ফল্ট নিয়মে দুটি আইটেম নির্দিষ্ট করা হয়:
  • আগে থেকে সংজ্ঞায়িত বিভাগ, উপবিভাগ বা সমস্যার নামের উপর ভিত্তি করে হ্যান্ডেল করা সমস্যা নির্দিষ্ট করে এমন কন্ডিশন
  • এক বা একাধিক নীতি যা সংশ্লিষ্ট কন্ডিশনের জন্য ফল্ট নিয়মের আচরণকে সংজ্ঞায়িত করে

সমস্যা সমাধান করা দেখুন।

প্রযোজ্য নয় না
DefaultFaultRule

অন্য FaultRule-এর মাধ্যমে স্পষ্টভাবে হ্যান্ডেল করা হয়নি এমন যেকোনও সমস্যা (সিস্টেম, ট্রান্সপোর্ট, মেসেজিং বা নীতি) হ্যান্ডেল করে।

সমস্যা সমাধান করা দেখুন।

প্রযোজ্য নয় না
ScriptTarget
ResourceURL

এটি রিসোর্সের ধরন (নোড) এবং মূল Node.js স্ক্রিপ্টের নাম নির্ধারণ করে যা TargetEndpoint কার্যকারিতা প্রয়োগ করে।

<ResourceURL>node://server.js</ResourceURL>

আপনার API প্রক্সির রিসোর্স ফাইলের সাথে স্ক্রিপ্ট অন্তর্ভুক্ত করতে হবে। আগে থেকে থাকা API প্রক্সিতে Node.js যোগ করা দেখুন।

আপনি ScriptTarget ব্যবহার করলে, অন্য ধরনের টার্গেট কানেকশন কনফিগার করবেন না (HTTPTargetConnection বা LocalTargetConnection)।

প্রযোজ্য নয় হ্যাঁ
EnvironmentVariable

বিকল্প হিসেবে, মূল Node.js স্ক্রিপ্টে এনভায়রনমেন্ট ভেরিয়েবল পাস করুন।

Node.js মডিউলের জন্য Edge সমর্থতা বোঝা দেখুন।

প্রযোজ্য নয় না
Arguments

বিকল্প হিসেবে, মূল Node.js স্ক্রিপ্টে আর্গুমেন্ট পাস করুন।

Node.js মডিউলের জন্য Edge সমর্থতা বোঝা দেখুন।

প্রযোজ্য নয় না

TLS/SSL TargetEndpoint কনফিগারেশন

TargetEndpoints-কে প্রায়ই বিভিন্ন ধরনের ব্যাকএন্ড ইনফ্রাস্ট্রাকচারের সাথে HTTPS কানেকশন ম্যানেজ করতে হয়। এই কারণে, একাধিক TLS/SSL কনফিগারেশন সেটিংস কাজ করে।

TLS/SSL TargetEndpoint কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
SSLInfo
Enabled এন্ডপয়েন্টের জন্য TLS/SSL চালু করা আছে কিনা তা দেখায়। <URL> HTTPS প্রোটোকল নির্দিষ্ট করলে ডিফল্ট মান হল true, এবং <URL> HTTP নির্দিষ্ট করলে false। <URL> HTTPS নির্দিষ্ট করলে true না
TrustStore বিশ্বস্ত সার্ভার সার্টিফিকেট সহ কীস্টোর। প্রযোজ্য নয় না
ClientAuthEnabled আউটবাউন্ড ক্লায়েন্ট যাচাইকরণ (২-ওয়ে TLS/SSL) চালু করে এমন একটি সেটিং মিথ্যা না
KeyStore আউটবাউন্ড ক্লায়েন্ট যাচাইকরণের জন্য ব্যবহৃত প্রাইভেট কী সহ কীস্টোর প্রযোজ্য নয় হ্যাঁ (ClientAuthEnabled-এর মান true হলে)
KeyAlias আউটবাউন্ড ক্লায়েন্ট যাচাইকরণের জন্য ব্যবহৃত ব্যক্তিগত কী-এর কী অ্যালিয়াস প্রযোজ্য নয় হ্যাঁ (ClientAuthEnabled-এর মান true হলে)
Ciphers

আউটবাউন্ড TLS/SSL-এর জন্য কাজ করে এমন সাইফার। কোনও সাইফার নির্দিষ্ট করা না থাকলে, JVM-এর জন্য উপলভ্য সব সাইফারকে অনুমতি দেওয়া হবে।

সাইফার সীমাবদ্ধ করতে, কাজ করে এমন সাইফার তালিকাভুক্ত করে নিম্নলিখিত এলিমেন্ট যোগ করুন:

<Ciphers>
 <Cipher>TLS_RSA_WITH_3DES_EDE_CBC_SHA</Cipher>
 <Cipher>TLS_RSA_WITH_DES_CBC_SHA</Cipher>
</Ciphers>
প্রযোজ্য নয় না
Protocols

আউটবাউন্ড TLS/SSL-এর জন্য কাজ করে এমন প্রোটোকল। কোনও প্রোটোকল নির্দিষ্ট করা না থাকলে, JVM-এর জন্য উপলভ্য সব প্রোটোকলকে অনুমতি দেওয়া হবে।

প্রোটোকল সীমাবদ্ধ করতে, নিম্নলিখিত এলিমেন্ট যোগ করুন যা কাজ করে এমন প্রোটোকল তালিকাভুক্ত করে:

<Protocols>
 <Protocol>TLSv1.1</Protocol>
 <Protocol>TLSv1.2</Protocol>
</Protocols>
প্রযোজ্য নয় না
CommonName

উল্লেখ করা থাকলে, এমন একটি ভ্যালু যার মাধ্যমে টার্গেট সার্টিফিকেটের সাধারণ নাম যাচাই করা হয়। এই ভ্যালু শুধুমাত্র TargetEndpoint এবং TargetServer কনফিগারেশনের জন্য বৈধ। এটি VirtualHost কনফিগারেশনের জন্য বৈধ নয়।

সাধারণত, টার্গেট সার্টিফিকেটের সাধারণ নামের সাথে উল্লেখ করা ভ্যালু হুবহু ম্যাচ করে। যেমন, <CommonName>-এর ভ্যালু হিসেবে *.myhost.com ব্যবহার করলে, টার্গেট সার্টিফিকেটে সাধারণ নাম হিসেবে হুবহু *.myhost.com উল্লেখ করা থাকলে তবেই টার্গেট হোস্টনেম ম্যাচ ও যাচাই করা হবে।

বিকল্প হিসেবে, Apigee wildcardMatch অ্যাট্রিবিউট ব্যবহার করে ওয়াইল্ডকার্ডের সাথে ম্যাচ করতে পারে।

যেমন, টার্গেট সার্টিফিকেটে abc.myhost.com হিসেবে উল্লেখ করা সাধারণ নাম ম্যাচ করা হবে এবং যাচাই করা হবে যদি <CommonName> এলিমেন্টটি নিম্নলিখিতভাবে উল্লেখ করা থাকে:

<CommonName wildcardMatch="true">*.myhost.com</CommonName>
প্রযোজ্য নয় না

আউটবাউন্ড ক্লায়েন্ট যাচাইকরণ চালু করা আছে এমন Sample TargetEndpoint

<TargetEndpoint name="default">
  <HttpTargetConnection>
        <URL>https://myservice.com</URL>
    <SSLInfo>
      <Enabled>true</Enabled>
      <ClientAuthEnabled>true</ClientAuthEnabled>
      <KeyStore>myKeystore</KeyStore>
      <KeyAlias>myKey</KeyAlias>
      <TrustStore>myTruststore</TrustStore>
    </SSLInfo>
  </HttpTargetConnection>
</TargetEndpoint>

বিস্তারিত নির্দেশাবলীর জন্য, Edge থেকে ব্যাকএন্ডে (ক্লাউড ও প্রাইভেট ক্লাউড) TLS কনফিগার করা দেখুন।

TLS/SSL ভ্যালু ডায়নামিক সেট করতে ফ্লো ভেরিয়েবল ব্যবহার করা

এছাড়াও, আপনি রানটাইম সংক্রান্ত নমনীয় প্রয়োজনীয়তা পূরণের জন্য ডায়নামিক TLS/SSL বিবরণ সেট করতে পারেন। যেমন, আপনার প্রক্সি যদি দুটি সম্ভাব্য আলাদা টার্গেটের (একটি টেস্ট টার্গেট ও একটি প্রোডাকশন টার্গেট) সাথে কানেক্ট করে, তাহলে আপনার API প্রক্সি প্রোগ্রামমেটিক উপায়ে শনাক্ত করতে পারবে যে এটি কোন এনভায়রনমেন্টে কল করছে এবং উপযুক্ত কীস্টোর ও ট্রাস্টস্টোরের রেফারেন্স ডাইনামিক উপায়ে সেট করতে পারবে। নিম্নলিখিত Apigee কমিউনিটি নিবন্ধে এই পরিস্থিতি আরও বিস্তারিতভাবে ব্যাখ্যা করা হয়েছে এবং এতে প্রয়োগযোগ্য API প্রক্সি উদাহরণ দেওয়া হয়েছে: ভেরিয়েবল রেফারেন্স ব্যবহার করে TargetEndpoint-এর জন্য ডায়নামিক SSLInfo।

TargetEndpoint কনফিগারেশনে কীভাবে <SSLInfo> ট্যাগ সেট করা হয় তার নিম্নলিখিত উদাহরণে, রানটাইমে ভ্যালু প্রদান করা যেতে পারে, যেমন, Java কলআউট, JavaScript নীতি বা Assign Message নীতি। আপনি যে ভ্যালু সেট করতে চান, সেই ভ্যালু আছে এমন মেসেজ ভেরিয়েবল ব্যবহার করুন।

শুধুমাত্র নিম্নলিখিত এলিমেন্টে ভেরিয়েবল ব্যবহার করা যায়।

<SSLInfo>
    <Enabled>{myvars.ssl.enabled}</Enabled>
    <ClientAuthEnabled>{myvars.ssl.client.auth.enabled}</ClientAuthEnabled>
    <KeyStore>{myvars.ssl.keystore}</KeyStore>
    <KeyAlias>{myvars.ssl.keyAlias}</KeyAlias>
    <TrustStore>{myvars.ssl.trustStore}</TrustStore>
</SSLInfo>

TLS/SSL ভ্যালু ডায়নামিক সেট করতে রেফারেন্স ব্যবহার করা

HTTPS ব্যবহার করে এমন TargetEndpoint কনফিগার করার সময়, আপনাকে সেইসব ক্ষেত্রে বিবেচনা করতে হবে যেখানে TLS/SSL সার্টিফিকেট এক্সপায়ার হয়ে যায় অথবা সিস্টেম কনফিগারেশনে পরিবর্তনের জন্য আপনাকে সার্টিফিকেট আপডেট করতে হয়। প্রাইভেট ক্লাউড ইনস্টলেশনের জন্য Edge-এ, স্ট্যাটিক ভ্যালু বা ফ্লো ভেরিয়েবল ব্যবহার করে TLS/SSL কনফিগার করার সময়, আপনাকে মেসেজ প্রসেসর রিস্টার্ট করতে হতে পারে।

আরও জানতে, TLS সার্টিফিকেট আপডেট করুন দেখুন।

তবে, আপনি চাইলে TargetEndpoint কনফিগার করে, তার পরিবর্তে কীস্টোর বা ট্রাস্টস্টোরের রেফারেন্স ব্যবহার করতে পারেন। রেফারেন্স ব্যবহার করার সুবিধা হল, মেসেজ প্রসেসর রিস্টার্ট না করেই TLS/SSL সার্টিফিকেট আপডেট করার জন্য আপনি রেফারেন্স আপডেট করে অন্য কোনও কীস্টোর বা ট্রাস্টস্টোর পয়েন্ট করতে পারেন।

যেমন, নিচে দেখানো TargetEndpoint-এ কীস্টোরের রেফারেন্স ব্যবহার করা হয়েছে:

<SSLInfo>
    <Enabled>true</Enabled>
    <ClientAuthEnabled>false</ClientAuthEnabled>
    <KeyStore>ref://keystoreref</KeyStore>
    <KeyAlias>myKeyAlias</KeyAlias>
</SSLInfo>

keystoreref নামের রেফারেন্স তৈরি করতে, নিম্নলিখিত POST API কল ব্যবহার করুন:

curl -X POST  -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references \
-d '<ResourceReference name="keystoreref">
    <Refers>myTestKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

রেফারেন্সে কীস্টোরের নাম ও ধরন উল্লেখ করা থাকে।

রেফারেন্স দেখতে, নিম্নলিখিত GET API কল ব্যবহার করুন:

curl -X GET https://api.enterprise.apigee.com/v1/o/[org_name}/e/{env_name}/references/keystoreref -u uname:password

পরে অন্য কোনও কীস্টোরকে রেফারেন্স করার জন্য, নিশ্চিত করুন যে অ্যালিয়াসের নাম একই আছে এবং তারপরে নিম্নলিখিত PUT কল ব্যবহার করুন:

curl -X PUT -H "Content-Type:application/xml" https://api.enterprise.apigee.com/v1/o/{org_name}/e/{env_name}/references/keystoreref \
-d '<ResourceReference name="keystoreref">
    <Refers>myNewKeystore</Refers>
    <ResourceType>KeyStore</ResourceType>
</ResourceReference>' -u email:password

টার্গেট লোড ব্যালেন্সিং সহ TargetEndpoint

তিনটি লোড ব্যালেন্সিং অ্যালগরিদম ব্যবহার করে একাধিক নামযুক্ত TargetServer জুড়ে লোড ব্যালেন্সিং করার জন্য TargetEndpoints কাজ করে।

বিস্তারিত নির্দেশাবলীর জন্য, ব্যাকএন্ড সার্ভার জুড়ে লোড ব্যালেন্সিংদেখুন।

নীতি

API প্রক্সির /policies ডিরেক্টরিতে API প্রক্সির ফ্লোতে অ্যাটাচ করার জন্য উপলভ্য সব নীতি থাকে।

নীতি কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
Policy
name

নীতির ইন্টার্নাল নাম। নামে ব্যবহার করা যায় এমন অক্ষরগুলি সীমাবদ্ধ করা হয়েছে: A-Za-z0-9._\-$ %. তবে, Edge ম্যানেজমেন্ট UI অতিরিক্ত বিধিনিষেধ আরোপ করে, যেমন অটোমেটিক এমন অক্ষর সরিয়ে দেয় যা আলফানিউমেরিক নয়।

বিকল্প হিসেবে, ম্যানেজমেন্ট UI প্রক্সি এডিটরে অন্য কোনও স্বাভাবিক ভাষার নাম দিয়ে নীতি লেবেল করতে <DisplayName> এলিমেন্ট ব্যবহার করুন।

প্রযোজ্য নয় হ্যাঁ
enabled

নীতি প্রয়োগ করতে true হিসেবে সেট করুন।

নীতি "বন্ধ করতে" false হিসেবে সেট করুন। কোনও ফ্লোতে এটি অ্যাটাচ করা থাকলেও, নীতিটি এনফোর্স করা হবে না।

সত্য না
continueOnError

নীতি কাজ না করলে সমস্যা দেখানোর জন্য false-এ সেট করা হয়। এটি বেশিরভাগ নীতির ক্ষেত্রে প্রত্যাশিত আচরণ।

true-এ সেট করা থাকলে, নীতি কাজ না করলেও ফ্লো এক্সিকিউশন চলতে থাকে।

মিথ্যা না
async

মনে রাখবেন: এই অ্যাট্রিবিউট নীতিকে অ্যাসিঙ্ক্রোনাসভাবে এক্সিকিউট করে না। বেশিরভাগ ক্ষেত্রে, এটি false-এর ডিফল্ট মান সহ ছেড়ে দিন।

true হিসেবে সেট করা হলে, নীতি প্রয়োগের কাজটি অন্য থ্রেডে অফলোড করা হয়, ফলে মূল থ্রেডটি অতিরিক্ত অনুরোধ হ্যান্ডেল করতে পারে। অফলাইন প্রসেসিং সম্পূর্ণ হয়ে গেলে, মূল থ্রেড ফিরে আসে এবং মেসেজ ফ্লো হ্যান্ডেল করা শেষ করে। কিছু ক্ষেত্রে, async সেট করলে true API প্রক্সি পারফর্ম্যান্স উন্নত হয়। তবে, খুব বেশি থ্রেড সুইচিংয়ের কারণে অ্যাসিঙ্ক বেশি ব্যবহার করলে পারফর্ম্যান্স খারাপ হতে পারে।

API প্রক্সিতে অ্যাসিঙ্ক্রোনাস আচরণ ব্যবহার করতে, জাভাস্ক্রিপ্ট অবজেক্ট মডেল দেখুন।

মিথ্যা না

নীতি অ্যাটাচমেন্ট

নিচের ছবিতে API প্রক্সি ফ্লো এক্সিকিউশন সিকোয়েন্স দেখানো হয়েছে:

একটি ক্লায়েন্ট HTTP পরিষেবায় কল করছে তা দেখায়। অনুরোধটি
  ProxyEndpoint ও TargetEndpoint-এর সম্মুখীন হয়, যার প্রতিটিতে এমন ধাপ থাকে যা নীতি ট্রিগার করে। HTTP পরিষেবা উত্তর দেওয়ার পরে, TargetEndpoint সেই উত্তর প্রসেস করে এবং তারপরে
  ProxyEndpoint ক্লায়েন্টকে উত্তরটি ফেরত দেয়। অনুরোধের মতো, উত্তরও ধাপে ধাপে নীতি
  অনুযায়ী প্রসেস করা হয়।

উপরে যেমন দেখানো হয়েছে:

ফ্লো-এর প্রসেসিং ধাপ হিসেবে নীতি অ্যাটাচ করা হয়। প্রসেসিং ধাপ হিসেবে এনফোর্স করা হবে এমন নীতিকে রেফার করতে নীতির নাম ব্যবহার করা হয়। নীতি অ্যাটাচমেন্টের ফর্ম্যাট হল নিম্নলিখিত:

<Step><Name>MyPolicy</Name></Step>

কোনও Flow-তে নীতিগুলি যেভাবে অ্যাটাচ করা হয় সেই ক্রম অনুযায়ী সেগুলি প্রয়োগ করা হয়। যেমন:

<Step><Name>FirstPolicy</Name></Step>
<Step><Name>SecondPolicy</Name></Step>

নীতি অ্যাটাচমেন্ট কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
Step
Name এই ধাপের সংজ্ঞা দ্বারা প্রয়োগ করা হবে এমন নীতির নাম। প্রযোজ্য নয় হ্যাঁ
Condition নীতি প্রয়োগ করা হবে কিনা তা নির্ধারণ করে এমন একটি শর্তসাপেক্ষ বিবৃতি। কোনও নীতির সাথে সংশ্লিষ্ট শর্ত থাকলে, শর্তমূলক বিবৃতি সত্য হলে তবেই নীতিটি কার্যকর হয়। প্রযোজ্য নয় না

ফ্লো

ProxyEndpoint এবং TargetEndpoint, অনুরোধ ও উত্তর মেসেজ প্রসেস করার জন্য একটি পাইপলাইন নির্ধারণ করে। প্রসেসিং পাইপলাইনে একটি অনুরোধ ফ্লো ও একটি উত্তর ফ্লো থাকে। প্রতিটি অনুরোধ ফ্লো ও উত্তর ফ্লোকে প্রিফ্লো, এক বা একাধিক ঐচ্ছিক 'কন্ডিশনাল' বা 'নামযুক্ত' ফ্লো এবং পোস্টফ্লোতে ভাগ করা হয়।

  • প্রিফ্লো: সবসময় এক্সিকিউট করে। কোনও কন্ডিশনাল ফ্লোয়ের আগে এক্সিকিউট হয়।
  • PostFlow: সবসময় এক্সিকিউট হয়। কোনও কন্ডিশনাল ফ্লোয়ের পরে এক্সিকিউট হয়।

এছাড়াও, আপনি ProxyEndpoint-এ একটি PostClientFlow যোগ করতে পারেন, যা অনুরোধকারী ক্লায়েন্ট অ্যাপে উত্তর রিটার্ন করার পরে এক্সিকিউট হয়। শুধুমাত্র MessageLogging নীতি এবং Google Stackdriver Logging এক্সটেনশন এই ফ্লোতে অ্যাটাচ করা যেতে পারে। PostClientFlow API প্রক্সি লেটেন্সি কমায় এবং লগিংয়ের জন্য তথ্য উপলভ্য করে তোলে যা ক্লায়েন্টকে উত্তর ফেরত দেওয়ার আগে পর্যন্ত গণনা করা হয় না, যেমন client.sent.start.timestamp এবং client.sent.end.timestamp। এই ফ্লোটি মূলত উত্তর মেসেজের শুরু ও শেষ হওয়ার টাইমস্ট্যাম্পের মধ্যে সময়ের ব্যবধান পরিমাপ করার জন্য ব্যবহার করা হয়।

কীভাবে করতে হয় সেই সম্পর্কিত একটি ছোট ভিডিও দেখুন

ভিডিও: PostClientFlow-তে মেসেজ লগ করার পদ্ধতি সম্পর্কে এই ছোট ভিডিওটি দেখুন।

মেসেজ লগিং নীতি সংযুক্ত PostClientFlow-এর একটি উদাহরণ এখানে দেওয়া হল।

    ...
    <PostFlow name="PostFlow">
        <Request/>
        <Response/>
    </PostFlow>
    <PostClientFlow>
        <Request/>
        <Response>
            <Step>
                <Name>Message-Logging-1</Name>
            </Step>
        </Response>
    </PostClientFlow>
    ...

API প্রক্সি প্রসেসিং পাইপলাইন নিম্নলিখিত ক্রম অনুসারে ফ্লো এক্সিকিউট করে:

অনুরোধ পাইপলাইন:

  1. প্রক্সি অনুরোধের প্রিফ্লো
  2. প্রক্সি অনুরোধের কন্ডিশনাল ফ্লো (ঐচ্ছিক)
  3. প্রক্সি অনুরোধ পোস্টফ্লো
  4. টার্গেট অনুরোধ প্রিফ্লো
  5. টার্গেট অনুরোধের কন্ডিশনাল ফ্লো (ঐচ্ছিক)
  6. টার্গেট রিকোয়েস্ট পোস্টফ্লো

উত্তর দেওয়ার পাইপলাইন:

  1. টার্গেট রেসপন্স প্রিফ্লো
  2. টার্গেট উত্তর সম্পর্কিত কন্ডিশনাল ফ্লো (ঐচ্ছিক)
  3. টার্গেট উত্তর পোস্টফ্লো
  4. প্রক্সি রেসপন্স প্রিফ্লো
  5. প্রক্সি রেসপন্স কন্ডিশনাল ফ্লো (ঐচ্ছিক)
  6. প্রক্সি রেসপন্স পোস্টফ্লো
  7. PostClientFlow উত্তর (ঐচ্ছিক)

শুধুমাত্র নীতি অ্যাটাচমেন্ট সহ ফ্লোগুলিই ProxyEndpoint বা TargetEndpoint কনফিগারেশনে কনফিগার করতে হবে। PreFlow এবং PostFlow শুধুমাত্র ProxyEndpoint বা TargetEndpoint কনফিগারেশনে নির্দিষ্ট করতে হবে যখন PreFlow বা PostFlow প্রসেসিং চলাকালীন কোনও নীতি প্রয়োগ করার প্রয়োজন হয়।

কন্ডিশনাল ফ্লোয়ের বিপরীতে, প্রিফ্লো ও পোস্টফ্লো এলিমেন্টের ক্রম গুরুত্বপূর্ণ নয়--API প্রক্সি সবসময় পাইপলাইনের উপযুক্ত পয়েন্টে প্রতিটি এলিমেন্ট এক্সিকিউট করবে, এন্ডপয়েন্ট কনফিগারেশনে সেগুলি যেখানেই থাকুক না কেন।

কন্ডিশনাল ফ্লো

ProxyEndpoints এবং TargetEndpoints-এ সীমাহীন সংখ্যক কন্ডিশনাল ফ্লো (এছাড়াও, এগুলিকে 'নামযুক্ত ফ্লো' বলা হয়) কাজ করে।

API প্রক্সি, কন্ডিশনাল ফ্লোতে নির্দিষ্ট করা কন্ডিশনের জন্য API প্রক্সি টেস্ট করে এবং কন্ডিশন পূরণ হলে, কন্ডিশনাল ফ্লোতে প্রসেসিং ধাপগুলি API প্রক্সি দ্বারা এক্সিকিউট করা হয়। শর্ত পূরণ না হলে, কন্ডিশনাল ফ্লোতে প্রসেসিং ধাপগুলি এড়িয়ে যাওয়া হয়। API প্রক্সি সার্ভারে যেভাবে সংজ্ঞায়িত করা হয়েছে সেই ক্রম অনুযায়ী কন্ডিশনাল ফ্লো মূল্যায়ন করা হয় এবং প্রথম যেটির কন্ডিশন পূরণ হয় সেটি এক্সিকিউট করা হয়।

কন্ডিশনাল ফ্লো নির্ধারণ করার মাধ্যমে, আপনি API প্রক্সিতে প্রসেসিং ধাপ প্রয়োগ করার ক্ষমতা পান, যা এইসব বিষয়ের উপর ভিত্তি করে করা হয়:

  • অনুরোধ করা URI
  • HTTP ক্রিয়া (GET/PUT/POST/DELETE)
  • কোয়েরি প্যারামিটার, হেডার ও ফর্ম প্যারামিটারের ভ্যালু
  • আরও অনেক ধরনের শর্ত

যেমন, নিম্নলিখিত শর্তাধীন ফ্লোতে উল্লেখ করা হয়েছে যে এটি শুধুমাত্র তখনই এক্সিকিউট করা হবে যখন অনুরোধ করা রিসোর্স পাথ /accesstoken হবে। ফ্লোতে অ্যাটাচ করা যেকোনও নীতি সহ পাথ /accesstoken সহ যেকোনও ইনবাউন্ড অনুরোধ এই ফ্লোকে এক্সিকিউট করায়। অনুরোধের পাথে প্রত্যয় /accesstoken না থাকলে, ফ্লোটি এক্সিকিউট হয় না (যদিও অন্য কোনও কন্ডিশনাল ফ্লো হতে পারে)।

<Flows>
  <Flow name="TokenEndpoint">
    <Condition>proxy.pathsuffix MatchesPath "/accesstoken"</Condition>
    <Request>
      <Step>
        <Name>GenerateAccessToken</Name>
      </Step>
    </Request>
  </Flow>
</Flows>

ফ্লো কনফিগারেশন এলিমেন্ট

নাম বিবরণ ডিফল্ট প্রয়োজনীয়?
Flow ProxyEndpoint বা TargetEndpoint দ্বারা নির্ধারিত অনুরোধ বা উত্তর প্রসেসিং পাইপলাইন
Name ফ্লো-এর অনন্য নাম। প্রযোজ্য নয় হ্যাঁ
Condition একটি কন্ডিশনাল স্টেটমেন্ট যা এক বা একাধিক ভেরিয়েবল মূল্যায়ন করে সত্য বা মিথ্যা হিসেবে মূল্যায়ন করে। আগে থেকে সংজ্ঞায়িত PreFlow ও PostFlow ধরনের Flow ছাড়া অন্য সব Flow-কে এক্সিকিউট করার জন্য একটি কন্ডিশন সংজ্ঞায়িত করতে হবে। প্রযোজ্য নয় হ্যাঁ
Request অনুরোধ মেসেজ প্রসেসিংয়ের সাথে যুক্ত পাইপলাইন প্রযোজ্য নয় না
Response উত্তর মেসেজ প্রসেসিংয়ের সাথে যুক্ত পাইপলাইন প্রযোজ্য নয় না

ধাপ প্রসেস করা

Apigee Edge কন্ডিশনাল ফ্লোয়ের ক্রমিক অর্ডারিং প্রয়োগ করে। কন্ডিশনাল ফ্লো উপর থেকে নিচে এক্সিকিউট হয়। প্রথম কন্ডিশনাল ফ্লো যার কন্ডিশন true হিসেবে মূল্যায়ন করা হয় সেটি এক্সিকিউট করা হয় এবং শুধুমাত্র একটি কন্ডিশনাল ফ্লো এক্সিকিউট করা হয়।

যেমন, নিম্নলিখিত Flow কনফিগারেশনে, পাথ সাফিক্স /first বা /second অন্তর্ভুক্ত না থাকা যেকোনও ইনবাউন্ড অনুরোধের কারণে ThirdFlow এক্সিকিউট হবে, যা Return404 নামের নীতি প্রয়োগ করবে।

<Flows>
  <Flow name="FirstFlow">
    <Condition>proxy.pathsuffix MatchesPath "/first"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="SecondFlow">
    <Condition>proxy.pathsuffix MatchesPath "/second"</Condition>
    <Request>
      <Step><Name>FirstPolicy</Name></Step>
      <Step><Name>SecondPolicy</Name></Step>
    </Request>
  </Flow>
  <Flow name="ThirdFlow">
    <Request>
      <Step><Name>Return404</Name></Step>
    </Request>
  </Flow>
</Flows>

রিসোর্স

"রিসোর্স" (API প্রক্সিতে ব্যবহারের জন্য রিসোর্স ফাইল) হল স্ক্রিপ্ট, কোড এবং XSL ট্রান্সফর্মেশন যেগুলি নীতি ব্যবহার করে ফ্লোতে অ্যাটাচ করা যেতে পারে। ম্যানেজমেন্ট UI-তে API প্রক্সি এডিটরের "স্ক্রিপ্ট" বিভাগে এগুলি দেখা যায়।

কোন কোন রিসোর্স কাজ করে তা জানতে রিসোর্স ফাইল দেখুন।

API প্রক্সি, এনভায়রনমেন্ট বা প্রতিষ্ঠানে রিসোর্স সেভ করা যেতে পারে। প্রতিটি ক্ষেত্রেই, কোনও নীতিতে রিসোর্সকে নাম দিয়ে রেফার করা হয়। API পরিষেবা, API প্রক্সি থেকে এনভায়রনমেন্ট, তারপর অর্গানাইজেশন লেভেলে গিয়ে নাম সংক্রান্ত সমস্যার সমাধান করে।

সংস্থা লেভেলে স্টোর করা কোনও রিসোর্স যেকোনও এনভায়রনমেন্টে নীতি দ্বারা রেফারেন্স করা যেতে পারে। এনভায়রনমেন্ট লেভেলে সেভ করা কোনও রিসোর্স সেই এনভায়রনমেন্টের নীতি দ্বারা রেফারেন্স করা যেতে পারে। API প্রক্সি লেভেলে স্টোর করা রিসোর্স শুধুমাত্র সেই API প্রক্সির নীতি দ্বারা রেফার করা যেতে পারে।