আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
কীভাবে একটি এপিআই কী পাবেন
নিম্নলিখিত উদাহরণটি ব্যাখ্যা করে যে কীভাবে একটি API কী পাওয়া যায়, যা আপনি Apigee Adapter for Envoy-এর মাধ্যমে প্রক্সি করা একটি টার্গেট সার্ভিসে করা API কলগুলিকে যাচাই করতে ব্যবহার করতে পারেন।
১. Apigee-তে লগ ইন করুন
- ব্রাউজারে Apigee UI খুলুন।
- একবার আপনি UI-তে প্রবেশ করলে, সেই একই সংস্থাটি নির্বাচন করুন যা আপনি Envoy-এর জন্য Apigee Adapter কনফিগার করতে ব্যবহার করেছিলেন।
২. একজন ডেভেলপার তৈরি করুন
আপনি টেস্টিংয়ের জন্য একজন বিদ্যমান ডেভেলপারকে ব্যবহার করতে পারেন, অথবা নিম্নোক্তভাবে একজন নতুন ডেভেলপার তৈরি করতে পারেন:
- সাইড নেভিগেশন মেনু থেকে পাবলিশ > ডেভেলপারস নির্বাচন করুন।
- ক্লিক করুন + ডেভেলপার।
- নতুন ডেভেলপার তৈরি করতে ডায়ালগ বক্সটি পূরণ করুন। আপনি আপনার ইচ্ছামতো যেকোনো ডেভেলপার নাম/ইমেল ব্যবহার করতে পারেন।
৩. একটি এপিআই পণ্য তৈরি করুন
নীচে দেওয়া পণ্য তৈরির উদাহরণটি অনুসরণ করুন। এপিআই পণ্য কনফিগারেশন সম্পর্কেও দেখুন।
- সাইড নেভিগেশন মেনু থেকে Publish > API Products নির্বাচন করুন।
- ক্লিক করুন + এপিআই পণ্য ।
- পণ্যের বিবরণী পৃষ্ঠাটি নিম্নরূপভাবে পূরণ করুন।
- Apigee রিমোট সার্ভিস টার্গেট সেকশনে, 'Add an Apigee remote service target'- এ ক্লিক করুন।
- Apigee রিমোট সার্ভিস টার্গেট ডায়ালগে, নিম্নলিখিত মানগুলি যোগ করুন:
বৈশিষ্ট্য মূল্য বর্ণনা লক্ষ্যের নাম কাঙ্ক্ষিত পরিষেবাটির নাম লিখুন। উদাহরণস্বরূপ: httpbin.orgএনভয় প্রক্সি দ্বারা পরিচালিত টার্গেট এন্ডপয়েন্ট। পথ মিলানোর জন্য সার্ভিসে একটি রিসোর্স পাথ লিখুন। উদাহরণস্বরূপ: /headers।টার্গেট এন্ডপয়েন্টে মেলানোর জন্য অনুরোধের পাথ। এই পাথে করা এপিআই প্রক্সি কলগুলো এই এপিআই প্রোডাক্টের সাথে মিলবে। - সংরক্ষণ করুন- এ ক্লিক করুন।
| মাঠ | মূল্য |
|---|---|
| নাম | httpbin-product |
| প্রদর্শনের নাম | httpbin product |
| পরিবেশ | your_environment এটি সেই পরিবেশে সেট করুন যা আপনি Envoy-এর জন্য Apigee Adapter প্রোভিশন করার সময় ব্যবহার করেছিলেন। |
| অ্যাক্সেস | Private |
| কোটা | প্রতি ১ মিনিটে ৫টি অনুরোধ আরও দেখুন কোটা । |
৪. একটি ডেভেলপার অ্যাপ তৈরি করুন
- সাইড নেভিগেশন মেনু থেকে পাবলিশ > অ্যাপস নির্বাচন করুন।
- ক্লিক করুন + অ্যাপ ।
- ডেভেলপার অ্যাপ পৃষ্ঠাটি নিম্নরূপভাবে পূরণ করুন। নির্দেশ না দেওয়া পর্যন্ত সেভ করবেন না।
- এরপরে, অ্যাপে API প্রোডাক্টটি যোগ করুন:
- ক্রেডেনশিয়ালস সেকশনে, + Add product-এ ক্লিক করুন এবং আপনি এইমাত্র কনফিগার করা প্রোডাক্টটি সিলেক্ট করুন: httpbin-product ।
- তৈরি করুন- এ ক্লিক করুন।
- Credentials-এর অধীনে, Key- এর পাশে থাকা Show-তে ক্লিক করুন।
- কনজিউমার কী-এর মানটি কপি করুন। এই মানটিই হলো এপিআই কী , যা আপনি
httpbinসার্ভিসে এপিআই কল করার জন্য ব্যবহার করবেন।
এপিআই পণ্য সম্পর্কে
এপিআই প্রোডাক্ট হলো এপিজি রিমোট সার্ভিসের প্রধান নিয়ন্ত্রণ কেন্দ্র। যখন আপনি একটি এপিআই প্রোডাক্ট তৈরি করে সেটিকে একটি টার্গেট সার্ভিসের সাথে যুক্ত করেন, তখন আপনি এমন একটি পলিসি তৈরি করেন যা আপনার এপিজি অ্যাডাপ্টার ফর এনভয় দ্বারা পরিচালিত যেকোনো অনুরোধের ক্ষেত্রে প্রয়োগ করা হবে।
এপিআই পণ্যের সংজ্ঞা
Apigee-তে একটি API প্রোডাক্ট নির্ধারণ করার সময়, আপনি বেশ কিছু প্যারামিটার সেট করতে পারেন যা রিকোয়েস্টগুলো মূল্যায়ন করতে ব্যবহৃত হবে:
- লক্ষ্য
- অনুরোধের পথ
- কোটা
- OAuth স্কোপ
দূরবর্তী পরিষেবা লক্ষ্য
এপিআই প্রোডাক্ট ডেফিনিশনটি কোনো অনুরোধের ক্ষেত্রে প্রযোজ্য হবে, যদি অনুরোধটি টার্গেট বাইন্ডিং (যেমন,
httpbin.org) এবং অনুরোধের পাথ (যেমন/httpbin) উভয়ের সাথেই মেলে। সম্ভাব্য টার্গেটগুলোর একটি তালিকা এপিআই প্রোডাক্টের একটি অ্যাট্রিবিউট হিসেবে সংরক্ষিত থাকে।ডিফল্টরূপে, Apigee রিমোট সার্ভিস তার টার্গেট তালিকার সাথে Envoy-এর বিশেষ
:authority (host)হেডারটি মিলিয়ে দেখে; তবে এটিকে অন্যান্য হেডার ব্যবহার করার জন্যও কনফিগার করা যেতে পারে।এপিআই রিসোর্স পাথ
প্রবেশ করানো পাথটি নিম্নলিখিত নিয়ম অনুসারে মিলেছে:
- শুধুমাত্র একটি স্ল্যাশ (
/) যেকোনো পাথকে ম্যাচ করে। -
*যেকোনো স্থানে বৈধ এবং একটি সেগমেন্টের (স্ল্যাশের মধ্যে) মধ্যে মেলে। -
**চিহ্নটি লাইনের শেষে ব্যবহার করা যায় এবং এটি লাইনের শেষ পর্যন্ত যেকোনো কিছুর সাথে মেলে।
কোটা
কোটা নির্দিষ্ট করে যে, একটি অ্যাপ এক ঘন্টা, দিন, সপ্তাহ বা মাস জুড়ে কোনো এপিআই-তে কতগুলো অনুরোধ বার্তা জমা দিতে পারবে। যখন কোনো অ্যাপ তার কোটার সীমায় পৌঁছে যায়, তখন পরবর্তী এপিআই কলগুলো প্রত্যাখ্যান করা হয়।
কোটা ব্যবহারের ক্ষেত্রকোটার মাধ্যমে আপনি একটি নির্দিষ্ট সময়ে কোনো পরিষেবাতে একজন গ্রাহকের অনুরোধের সংখ্যা নিয়ন্ত্রণ করতে পারেন। কোটা সাধারণত অপারেশনাল ট্র্যাফিক ব্যবস্থাপনার চেয়ে ডেভেলপার এবং পার্টনারদের সাথে ব্যবসায়িক চুক্তি বা এসএলএ (SLA) কার্যকর করার জন্য বেশি ব্যবহৃত হয়। উদাহরণস্বরূপ, একটি বিনামূল্যের পরিষেবার ট্র্যাফিক সীমিত করতে কোটা ব্যবহার করা যেতে পারে, যেখানে অর্থ প্রদানকারী গ্রাহকদের জন্য সম্পূর্ণ অ্যাক্সেসের অনুমতি দেওয়া হয়।
একটি এপিআই প্রোডাক্টে কোটা সংজ্ঞায়িত করা হয়।এপিআই প্রোডাক্টে কোটার প্যারামিটারগুলো কনফিগার করা হয়। উদাহরণস্বরূপ, যখন আপনি একটি এপিআই প্রোডাক্ট তৈরি করেন, তখন আপনি ঐচ্ছিকভাবে অনুমোদিত কোটার সীমা, সময়সীমা এবং ব্যবধান নির্ধারণ করতে পারেন।

যেহেতু এপিআই কীগুলো এপিআই প্রোডাক্টের সাথে সংযুক্ত থাকে, তাই প্রতিবার একটি এপিআই কী যাচাই করার সময় উপযুক্ত কোটা কাউন্টারটি কমানো যেতে পারে (যদি সংশ্লিষ্ট প্রোডাক্টে কোনো কোটা সংজ্ঞায়িত করা থাকে)।
Apigee রানটাইমের থেকে ভিন্ন, প্রোডাক্ট ডেফিনিশনে প্রবেশ করানো কোটাগুলো Apigee রিমোট সার্ভিস দ্বারা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। অনুরোধটি অনুমোদিত হলে, তা অনুমোদিত কোটার বিপরীতে গণনা করা হবে।
যেখানে কোটা বজায় রাখা হয়কোটাগুলো রিমোট সার্ভিস প্রসেস দ্বারা স্থানীয়ভাবে রক্ষণাবেক্ষণ ও পরীক্ষা করা হয় এবং অ্যাপিজী রানটাইমের সাথে অ্যাসিঙ্ক্রোনাসভাবে রক্ষণাবেক্ষণ করা হয়। এর মানে হলো, কোটাগুলো সুনির্দিষ্ট নয় এবং যদি একাধিক রিমোট সার্ভিস কোটা রক্ষণাবেক্ষণ করে, তবে তা কিছুটা অতিক্রম করার সম্ভাবনা থাকে। যদি অ্যাপিজী রানটাইমের সাথে সংযোগ বিচ্ছিন্ন হয়ে যায়, তবে স্থানীয় কোটাটি একটি স্বতন্ত্র কোটা হিসেবে ততক্ষণ পর্যন্ত চালু থাকবে, যতক্ষণ না এটি অ্যাপিজী রানটাইমের সাথে পুনরায় সংযোগ স্থাপন করতে পারে।
OAuth স্কোপ
আপনি যদি JWT টোকেন ব্যবহার করেন, তাহলে আপনি টোকেনগুলোকে অনুমোদিত OAuth স্কোপের উপসেটে সীমাবদ্ধ করতে পারেন। আপনার ইস্যু করা JWT টোকেনে নির্ধারিত স্কোপগুলো API প্রোডাক্টের স্কোপের সাথে মিলিয়ে দেখা হবে।
ডেভেলপার অ্যাপস সম্পর্কে
একবার আপনার এপিআই প্রোডাক্টগুলো কনফিগার করা হয়ে গেলে, আপনি একজন ডেভেলপারের সাথে যুক্ত একটি অ্যাপ তৈরি করবেন। এই অ্যাপটি একটি এপিআই কী বা জেডব্লিউটি টোকেনের মাধ্যমে ক্লায়েন্টকে সংশ্লিষ্ট এপিআই প্রোডাক্টগুলোতে অ্যাক্সেস দেয়।
JWT ভিত্তিক প্রমাণীকরণ ব্যবহার করে
আপনি এপিআই কী-এর পরিবর্তে প্রমাণীকৃত এপিআই প্রক্সি কল করার জন্য একটি JWT টোকেন ব্যবহার করতে পারেন। এই বিভাগে
apigee-remote-service-cli tokenকমান্ড ব্যবহার করে কীভাবে JWT টোকেন তৈরি, পরিদর্শন এবং পরিবর্তন করতে হয় তা ব্যাখ্যা করা হয়েছে।সংক্ষিপ্ত বিবরণ
Envoy তার নিজস্বJWT Authentication Filter ব্যবহার করে JWT যাচাইকরণ এবং প্রমাণীকরণের কাজটি সম্পন্ন করে।
একবার প্রমাণীকৃত হলে, Envoy
ext-authzফিল্টারটি অনুরোধের হেডার এবং JWT-কেapigee-remote-service-envoyতে পাঠায়। এটি অনুরোধের লক্ষ্যের বিরুদ্ধে অনুমোদন দেওয়ার জন্য Apigee API Products-এর সাথে JWT-এরapi_product_listএবংscopeক্লেইমগুলো মিলিয়ে দেখে।Apigee JWT টোকেন তৈরি করা
Apigee JWT টোকেন CLI ব্যবহার করে তৈরি করা যায়:
$CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET
অথবা স্ট্যান্ডার্ড OAuth টোকেন এন্ডপয়েন্ট ব্যবহার করে। কার্ল (Curl) উদাহরণ:
curl https://org-env.apigee.net/remote-token/token -d '{"client_id":"myclientid","client_secret":"myclientsecret","grant_type":"client_credentials"}' -H "Content-type: application/json"JWT টোকেন ব্যবহার করে
একবার টোকেনটি পেয়ে গেলে, আপনি কেবল Authorization হেডারে এটি Envoy-কে পাঠিয়ে দিন। উদাহরণ:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
JWT টোকেন ব্যর্থতা
দূত প্রত্যাখ্যান
যদি Envoy টোকেনটি প্রত্যাখ্যান করে, তাহলে আপনি এই ধরনের একটি বার্তা দেখতে পারেন:
Jwks remote fetch is failed
যদি তাই হয়, তবে নিশ্চিত করুন যে আপনার Envoy কনফিগারেশনের
remote_jwksবিভাগে একটি বৈধ URI রয়েছে, সেটি Envoy দ্বারা অ্যাক্সেসযোগ্য, এবং আপনি Apigee প্রক্সি ইনস্টল করার সময় সার্টিফিকেটগুলি সঠিকভাবে সেট করেছেন। আপনার সরাসরি একটি GET কলের মাধ্যমে URI-টি কল করতে এবং একটি বৈধ JSON প্রতিক্রিয়া পেতে সক্ষম হওয়া উচিত।উদাহরণ:
curl https://myorg-eval-test.apigee.net/remote-service/certs
দূতের কাছ থেকে আসা অন্যান্য বার্তাগুলো দেখতে এইরকম হতে পারে:
- Jwt-তে শ্রোতাদের অনুমতি নেই।
- Jwt ইস্যুকারী কনফিগার করা নেই।
এগুলো আপনার এনভয় কনফিগারেশনের প্রয়োজনীয়তা থেকে নেওয়া, যেগুলো আপনাকে পরিবর্তন করতে হতে পারে।
একটি টোকেন পরিদর্শন করুন
আপনি CLI ব্যবহার করে আপনার টোকেনটি পরীক্ষা করতে পারেন। উদাহরণ
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect -f path/to/file
অথবা
$CLI_HOME/apigee-remote-service-cli -c config.yaml token inspect <<< $TOKEN
ডিবাগিং
বৈধ এপিআই কী ব্যর্থ হলে দেখুন।লগিং
আপনি $REMOTE_SERVICE_HOME/apigee-remote-service-envoy সার্ভিসে লগিং লেভেল অ্যাডজাস্ট করতে পারেন। সমস্ত লগিং stdout এবং stderr-এ পাঠানো হয়।
উপাদান প্রয়োজনীয় বর্ণনা -l, --লগ-স্তর বৈধ স্তরসমূহ: ডিবাগ, তথ্য, সতর্কীকরণ, ত্রুটি। লগিং স্তর সামঞ্জস্য করে। ডিফল্ট: তথ্য -j, --json-log লগ আউটপুট JSON রেকর্ড হিসেবে প্রদান করে। Envoy লগিং সুবিধা প্রদান করে। আরও তথ্যের জন্য, নিম্নলিখিত Envoy ডকুমেন্টেশন লিঙ্কগুলি দেখুন:
একটি নেটওয়ার্ক প্রক্সি ব্যবহার করে
apigee-remote-service-envoy বাইনারির এনভায়রনমেন্টে HTTP_PROXY এবং HTTPS_PROXY এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে একটি HTTP প্রক্সি যুক্ত করা যায়। এগুলি ব্যবহার করার সময়, প্রক্সির মাধ্যমে নির্দিষ্ট হোস্ট পাঠানো থেকে বাদ দেওয়ার জন্য NO_PROXY এনভায়রনমেন্ট ভেরিয়েবলটিও ব্যবহার করা যেতে পারে।
HTTP_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] HTTPS_PROXY=http://[user]:[pass]@[proxy_ip]:[proxy_port] NO_PROXY=127.0.0.1,localhost
মনে রাখবেন যে প্রক্সিটি অবশ্যই apigee-remote-service-envoy থেকে অ্যাক্সেসযোগ্য হতে হবে।
মেট্রিক্স এবং অ্যানালিটিক্স সম্পর্কে
একটি প্রমিথিউস মেট্রিক্স এন্ডপয়েন্ট
:5001/metricsপোর্টে উপলব্ধ আছে। আপনি এই পোর্ট নম্বরটি কনফিগার করতে পারেন। কনফিগারেশন ফাইলটি দেখুন।এনভয় অ্যানালিটিক্স
নিম্নলিখিত লিঙ্কগুলিতে এনভয় প্রক্সি অ্যানালিটিক্স ডেটা প্রাপ্তির বিষয়ে তথ্য দেওয়া আছে:
ইস্টিও অ্যানালিটিক্স
নিম্নলিখিত লিঙ্কগুলিতে এনভয় প্রক্সি অ্যানালিটিক্স ডেটা প্রাপ্তির বিষয়ে তথ্য দেওয়া আছে:
অ্যাপিজি অ্যানালিটিক্স
Apigee Remote Service for Envoy, অ্যানালিটিক্স প্রক্রিয়াকরণের জন্য Apigee-কে অনুরোধের পরিসংখ্যান পাঠায়। Apigee এই অনুরোধগুলোকে সংশ্লিষ্ট API প্রোডাক্টের নামে রিপোর্ট করে।
Apigee অ্যানালিটিক্স সম্পর্কে তথ্যের জন্য, অ্যানালিটিক্স পরিষেবাগুলির সংক্ষিপ্ত বিবরণ দেখুন।
একাধিক ভাড়াটের পরিবেশ সমর্থন
এখন আপনি একটি Apigee অর্গানাইজেশনের মধ্যে একাধিক এনভায়রনমেন্টে পরিষেবা দেওয়ার জন্য অ্যাডাপ্টারটি সক্রিয় করতে পারবেন। এই ফিচারটি আপনাকে একটি Apigee অর্গানাইজেশনের সাথে যুক্ত একটি Apigee Adapter for Envoy ব্যবহার করে একাধিক এনভায়রনমেন্টে পরিষেবা দেওয়ার সুযোগ দেয়। এই পরিবর্তনের আগে, একটি অ্যাডাপ্টার সবসময় একটি Apigee এনভায়রনমেন্টের সাথে আবদ্ধ থাকত।
একাধিক এনভায়রনমেন্ট সাপোর্ট কনফিগার করতে,
config.yamlফাইলেtenant:env_nameএর ভ্যালু পরিবর্তন করে*করুন। উদাহরণস্বরূপ:- একটি এডিটরে
config.yamlফাইলটি খুলুন। -
tenant.env_nameএর মান পরিবর্তন করে*করুন। উদাহরণস্বরূপ:apiVersion: v1 kind: ConfigMap metadata: name: apigee-remote-service-envoy namespace: apigee data: config.yaml: | tenant: remote_service_api: https://myorg-myenv.apigee.net/remote-service org_name: apigee-docs-hybrid-a env_name: * allow_unverified_ssl_cert: true analytics: collection_interval: 10s auth: jwt_provider_key: https://myorg-myenv.apigee.net.net/remote-token/token - ফাইলটি সংরক্ষণ করুন।
- ফাইলটি প্রয়োগ করুন:
kubectl apply -f $CLI_HOME/config.yaml
যখন আপনি মাল্টি-এনভায়রনমেন্ট মোড কনফিগার করবেন, তখন আপনাকে অবশ্যই
envoy-config.yamlফাইলেরvirtual_hosts:routesসেকশনে নিম্নলিখিত মেটাডেটা যোগ করে অ্যাডাপ্টারে একটি উপযুক্ত এনভায়রনমেন্ট ভ্যালু পাঠানোর জন্য Envoy-কে কনফিগার করতে হবে। উদাহরণস্বরূপ:- CLI ব্যবহার করে
envoy-config.yamlফাইলটি তৈরি করুন। উদাহরণস্বরূপ:$CLI_HOME/apigee-remote-service-cli samples create \ -t envoy-1.16 -c ./config.yaml --out myconfigs
- তৈরি হওয়া ফাইলটি খুলুন (এটির নাম
envoy-config.yaml)। - ফাইলটির
virtual_hostঅথবাroutesসেকশনে নিম্নলিখিত মেটাডেটা যোগ করুন:typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: testনিম্নলিখিত উদাহরণটি একাধিক রুট সংজ্ঞায়িত একটি
virtual_hostকনফিগারেশন তুলে ধরে, যেখানে প্রতিটি রুট একটি নির্দিষ্ট এনভায়রনমেন্টে ট্র্যাফিক পাঠায়:filter_chains: - filters: - name: envoy.filters.network.http_connection_manager typed_config: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager stat_prefix: ingress_http route_config: virtual_hosts: - name: default domains: "*" routes: - match: { prefix: /test } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: test - match: { prefix: /prod } route: cluster: httpbin typed_per_filter_config: envoy.filters.http.ext_authz: "@type": type.googleapis.com/envoy.extensions.filters.http.ext_authz.v3.ExtAuthzPerRoute check_settings: context_extensions: apigee_environment: prod - প্রয়োজন অনুযায়ী অতিরিক্ত পরিবেশ যোগ করতে শেষ ধাপটি পুনরাবৃত্তি করুন।
- ফাইলটি সংরক্ষণ করুন এবং প্রয়োগ করুন।
অ্যাডাপ্টার এবং Apigee রানটাইমের মধ্যে mTLS কনফিগার করা
অ্যাডাপ্টার এবং Apigee রানটাইমের মধ্যে mTLS ব্যবহার করার জন্য, আপনি অ্যাডাপ্টারের
config.yamlফাইলেরtenantসেকশনে ক্লায়েন্ট-সাইড TLS সার্টিফিকেট সরবরাহ করতে পারেন। এই পরিবর্তনটি সমস্ত সমর্থিত Apigee প্ল্যাটফর্মের জন্য প্রযোজ্য। এটি Apigee Edge for Private Cloud প্ল্যাটফর্মের জন্য অ্যানালিটিক্সের কাজেও mTLS সক্ষম করে। উদাহরণস্বরূপ:tenant: tls: ca_file: path/ca.pem cert_file: path/cert.pem key_file: path/key.pem allow_unverified_ssl_cert: false
| নাম | httpbin-app |
| প্রদর্শনের নাম | httpbin app |
| ডেভেলপার | আপনি পূর্বে তৈরি করা ডেভেলপারকে নির্বাচন করুন, অথবা তালিকা থেকে আপনার ইচ্ছামত যেকোনো ডেভেলপার বেছে নিন। |