আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন। তথ্য
কীভাবে API key পেতে হয়
Envoy-এর জন্য Apigee অ্যাডাপ্টারের মাধ্যমে প্রক্সি করা টার্গেট পরিষেবায় API কল যাচাই করতে আপনি কীভাবে API কী পাবেন তা নিম্নলিখিত উদাহরণ থেকে বুঝতে পারবেন।
১. Apigee-তে লগ-ইন করুন
- ব্রাউজারে Apigee UI খুলুন।
- UI-তে যাওয়ার পরে, Envoy-এর জন্য Apigee অ্যাডাপ্টার কনফিগার করার সময় আপনি যে সংস্থা ব্যবহার করেছিলেন সেটিই বেছে নিন।
২. ডেভেলপার তৈরি করা
আপনি পরীক্ষার জন্য আগে থেকে থাকা কোনও ডেভেলপার ব্যবহার করতে পারেন অথবা নিচে উল্লেখ করা ধাপগুলি অনুসরণ করে নতুন ডেভেলপার তৈরি করতে পারেন:
- সাইড নেভিগেশন মেনু থেকে প্রকাশ করুন > ডেভেলপার বিকল্প বেছে নিন।
- + ডেভেলপার বিকল্পে ক্লিক করুন।
- নতুন ডেভেলপার তৈরি করতে ডায়ালগ পূরণ করুন। আপনি নিজের পছন্দমতো যেকোনও ডেভেলপার নাম/ইমেল ব্যবহার করতে পারেন।
৩. API প্রোডাক্ট তৈরি করা
নিচে দেওয়া প্রোডাক্ট তৈরি করার উদাহরণ অনুসরণ করুন। এছাড়াও দেখুন API প্রোডাক্ট কনফিগারেশন সম্পর্কে।
- সাইড নেভিগেশন মেনুতে প্রকাশ করুন > API প্রোডাক্ট বিকল্প বেছে নিন।
- + API প্রোডাক্ট বিকল্পে ক্লিক করুন।
- নিচে উল্লেখ করা তথ্য অনুযায়ী প্রোডাক্টের বিবরণের পৃষ্ঠা পূরণ করুন।
- Apigee রিমোট সার্ভিস টার্গেট বিভাগে, Apigee রিমোট সার্ভিস টার্গেট যোগ করুন বিকল্পে ক্লিক করুন।
- Apigee রিমোট পরিষেবা টার্গেট ডায়ালগে, নিম্নলিখিত ভ্যালু যোগ করুন:
অ্যাট্রিবিউট ভ্যালু বিবরণ টার্গেটের নাম টার্গেট সার্ভিসের নাম লিখুন। যেমন: httpbin.orgEnvoy প্রক্সি দ্বারা ফ্রন্ট-এন্ডে থাকা টার্গেট এন্ডপয়েন্ট। পাথ ম্যাচ করার জন্য পরিষেবায় রিসোর্স পাথ লিখুন। যেমন: /headers.টার্গেট এন্ডপয়েন্টে ম্যাচ করার জন্য অনুরোধের পাথ। এই পাথে API প্রক্সি কল এই API প্রোডাক্টের সাথে ম্যাচ করবে। - সেভ করুন বিকল্পে ক্লিক করুন।
| ফিল্ড | ভ্যালু |
|---|---|
| নাম | httpbin-product
|
| যে নাম দেখানো হবে | httpbin product
|
| পরিবেশ | your_environment
আপনি যখন Envoy-এর জন্য Apigee অ্যাডাপ্টার প্রোভিশন করেছিলেন তখন যে এনভায়রনমেন্ট ব্যবহার করেছিলেন, এটি সেই এনভায়রনমেন্টে সেট করুন। |
| অ্যাক্সেস | Private
|
| Quota | প্রতি ১ মিনিটে ৫টি অনুরোধ
এছাড়াও, Quota দেখুন। |
৪. Developer অ্যাপ তৈরি করা
- সাইড নেভিগেশন মেনু থেকে প্রকাশ করুন > অ্যাপ বিকল্প বেছে নিন।
- + অ্যাপ বিকল্পে ক্লিক করুন।
- নিম্নলিখিত তথ্য দিয়ে ডেভেলপার অ্যাপ পৃষ্ঠা পূরণ করুন। নির্দেশ না দেওয়া পর্যন্ত সেভ করবেন না।
- এরপরে, অ্যাপে API প্রোডাক্ট যোগ করুন:
- 'ক্রেডেনশিয়াল' বিভাগে, + প্রোডাক্ট যোগ করুন বিকল্পে ক্লিক করুন এবং আপনি এইমাত্র যে প্রোডাক্ট কনফিগার করেছেন সেটি বেছে নিন: httpbin-product.
- তৈরি করুন বিকল্পে ক্লিক করুন।
- ক্রেডেনশিয়াল বিকল্পের মধ্যে, কী-এর পাশে দেখুন বিকল্পে ক্লিক করুন।
- কনজিউমার কী-এর ভ্যালু কপি করুন। এই ভ্যালু হল API key
যা আপনি
httpbinপরিষেবায় API কল করার জন্য ব্যবহার করবেন।
API প্রোডাক্ট সম্পর্কে
Apigee রিমোট সার্ভিসের জন্য API প্রোডাক্ট হল প্রাথমিক কন্ট্রোল পয়েন্ট। আপনি কোনও API প্রোডাক্ট তৈরি করে সেটি কোনও টার্গেট পরিষেবার সাথে বাইন্ড করলে, আপনি এমন একটি নীতি তৈরি করছেন যা সেইসব অনুরোধের ক্ষেত্রে প্রযোজ্য হবে যেগুলি হ্যান্ডেল করার জন্য আপনি নিজের Apigee Adapter for Envoy কনফিগার করেছেন।
API প্রোডাক্টের সংজ্ঞা
Apigee-তে কোনও API প্রোডাক্টকে সংজ্ঞায়িত করার সময়, আপনি বেশ কিছু প্যারামিটার সেট করতে পারেন যেগুলি অনুরোধ মূল্যায়ন করার জন্য ব্যবহার করা হবে:
- লক্ষ্য
- অনুরোধের পাথ
- কোটা
- OAuth স্কোপ
রিমোট সার্ভিস টার্গেট
কোনও অনুরোধ যদি টার্গেট বাইন্ডিং (যেমন,
httpbin.org) এবং অনুরোধ পাথ (যেমন,/httpbin) দুটির সাথেই ম্যাচ করে, তাহলে সেই অনুরোধের ক্ষেত্রে API প্রোডাক্টের সংজ্ঞা প্রযোজ্য হবে। সম্ভাব্য টার্গেটের একটি তালিকা API প্রোডাক্টে অ্যাট্রিবিউট হিসেবে সেভ করা থাকে।ডিফল্ট হিসেবে, Apigee রিমোট সার্ভিস, Envoy-এর বিশেষ
:authority (host)হেডারকে এর টার্গেটের তালিকার সাথে চেক করে; তবে এটি অন্যান্য হেডার ব্যবহার করার জন্য কনফিগার করা যেতে পারে।API রিসোর্স পাথ
নিম্নলিখিত নিয়ম অনুযায়ী, লেখা পাথ ম্যাচ করে:
- একটি স্ল্যাশ (
/) যেকোনও পাথের সাথে ম্যাচ করে। *যেকোনও জায়গায় সঠিক এবং সেগমেন্টের (স্ল্যাশের মধ্যে) মধ্যে ম্যাচ করে।**শেষে বৈধ এবং লাইনের শেষ পর্যন্ত যেকোনও কিছুর সাথে ম্যাচ করে।
কোটা
কোটা হল অনুরোধ মেসেজের সংখ্যা যা কোনও অ্যাপকে এক ঘণ্টা, এক দিন, এক সপ্তাহ বা এক মাস ধরে কোনও এপিআই-তে জমা দেওয়ার অনুমতি দেওয়া হয়। কোনও অ্যাপ কোটা সীমায় পৌঁছে গেলে, পরবর্তী API কল বাতিল করা হয়।
কোটা ব্যবহারের উদাহরণকোটা আপনাকে কোনও ক্লায়েন্টকে একটি নির্দিষ্ট সময়ের মধ্যে কোনও পরিষেবার জন্য করা অনুরোধের সংখ্যা প্রয়োগ করার অনুমতি দেয়। কোটা প্রায়শই ডেভেলপার ও পার্টনারদের সাথে বাণিজ্যিক চুক্তি বা SLA প্রয়োগ করার জন্য ব্যবহার করা হয়, অপারেশনাল ট্রাফিক ম্যানেজমেন্টের জন্য নয়। যেমন, কোটা ব্যবহার করে ফ্রি পরিষেবার ট্রাফিক সীমিত করা হতে পারে, তবে পেমেন্ট করা গ্রাহকদের সম্পূর্ণ অ্যাক্সেস দেওয়া হতে পারে।
API প্রোডাক্টে কোটা সংজ্ঞায়িত করা হয়API প্রোডাক্টে কোটা প্যারামিটার কনফিগার করা হয়। যেমন, আপনি কোনও API প্রোডাক্ট তৈরি করলে, অনুমোদিত কোটার সীমা, সময় একক ও ইন্টার্ভাল ঐচ্ছিকভাবে সেট করতে পারবেন।
API কী API প্রোডাক্টের সাথে ম্যাপ করা থাকে, তাই প্রতিবার API কী যাচাই করা হলে, উপযুক্ত কোটা কাউন্টার থেকে মান কমানো যেতে পারে (যদি সংশ্লিষ্ট প্রোডাক্টে কোটা নির্দিষ্ট করা থাকে)।
Apigee রানটাইমের মধ্যে কোটা প্রয়োগ করার পদ্ধতির বিপরীতে, প্রোডাক্টের সংজ্ঞায় কোটা লিখলে তা Apigee রিমোট সার্ভিস অটোমেটিক প্রয়োগ করে। অনুরোধ অনুমোদিত হলে, অনুমোদিত কোটার মধ্যে অনুরোধটি গণনা করা হবে।
কোথায় কোটা বজায় রাখা হয়কোটাগুলি রিমোট পরিষেবা প্রসেস দ্বারা স্থানীয়ভাবে রক্ষণাবেক্ষণ ও চেক করা হয় এবং Apigee Runtime-এর সাথে অ্যাসিঙ্ক্রোনাস ম্যানেজ করা হয়। এর অর্থ হল, কোটা সঠিক নয় এবং আপনার যদি একাধিক রিমোট পরিষেবা থাকে যা কোটা বজায় রাখছে, তাহলে কিছু ওভাররান হওয়ার সম্ভাবনা থাকে। Apigee Runtime-এর সাথে কানেকশন বিচ্ছিন্ন হয়ে গেলে, এটি Apigee Runtime-এর সাথে আবার কানেক্ট না হওয়া পর্যন্ত লোকাল কোটা একটি স্বতন্ত্র কোটা হিসেবে চলতে থাকবে।
OAuth স্কোপ
আপনি JWT টোকেন ব্যবহার করলে, অনুমোদিত OAuth স্কোপের সাবসেটে টোকেন সীমাবদ্ধ করতে পারেন। আপনার ইস্যু করা JWT টোকেনে অ্যাসাইন করা স্কোপ, API প্রোডাক্টের স্কোপের সাথে চেক করা হবে।
Developer অ্যাপ সম্পর্কে
আপনার API প্রোডাক্ট কনফিগার করা হয়ে গেলে, আপনি একজন ডেভেলপারের সাথে যুক্ত একটি অ্যাপ তৈরি করবেন। অ্যাপটি API কী বা JWT টোকেনের মাধ্যমে সংশ্লিষ্ট API প্রোডাক্টে ক্লায়েন্ট অ্যাক্সেস করার অনুমতি দেয়।
JWT ভিত্তিক যাচাইকরণ ব্যবহার করা
API কী ব্যবহার করার পরিবর্তে, আপনি যাচাই করা API প্রক্সি কল করতে JWT টোকেন ব্যবহার করতে পারেন। এই বিভাগে JWT টোকেন তৈরি, পরীক্ষা ও রোটেট করার জন্য
apigee-remote-service-cli tokenকমান্ড কীভাবে ব্যবহার করতে হয় তা ব্যাখ্যা করা হয়েছে।এক নজরে
Envoy তার JWT যাচাইকরণ ফিল্টার ব্যবহার করে JWT যাচাইকরণ ও প্রমাণীকরণ ম্যানেজ করে।
অনুমোদিত হয়ে গেলে, Envoy
ext-authzফিল্টার অনুরোধ হেডার ও JWT-কেapigee-remote-service-envoy-এ পাঠায়। এটি JWT-এরapi_product_listওscopeদাবি Apigee API প্রোডাক্টের সাথে মিলিয়ে দেখে যাতে অনুরোধের টার্গেটের বিরুদ্ধে এটিকে অনুমোদন করা যায়।Apigee JWT টোকেন তৈরি করা
CLI ব্যবহার করে Apigee JWT টোকেন তৈরি করা যেতে পারে:
$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 টোকেন ব্যবহার করা
টোকেন পেয়ে গেলে, আপনি সেটি Envoy-এর অনুমোদনের হেডার হিসেবে পাস করে দেন। উদাহরণ:
curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"
JWT টোকেন সংক্রান্ত সমস্যা
Envoy বাতিল করা
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
Envoy-এর অন্যান্য মেসেজ এই ধরনের হতে পারে:
- "Jwt-তে অডিয়েন্সের অনুমতি নেই"
- "Jwt issuer is not configured"
এগুলি আপনার Envoy কনফিগারেশনের প্রয়োজনীয়তা থেকে আসে যা আপনাকে পরিবর্তন করতে হতে পারে।
টোকেন পরীক্ষা করা
আপনার টোকেন পরীক্ষা করে দেখতে 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
ডিবাগিং
সঠিক API key কাজ করে না দেখুন।লগিং
$REMOTE_SERVICE_HOME/apigee-remote-service-envoy পরিষেবায় আপনি লগিং লেভেল অ্যাডজাস্ট করতে পারবেন। সব লগিং stdout এবং stderr-এ পাঠানো হয়।
এলিমেন্ট প্রয়োজনীয় বিবরণ -l, --log-level বৈধ লেভেল: debug, info, warn, error. লগিং লেভেল অ্যাডজাস্ট করে। ডিফল্ট: info -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-এ একটি Prometheus মেট্রিক এন্ডপয়েন্ট উপলভ্য। আপনি এই পোর্ট নম্বর কনফিগার করতে পারবেন। কনফিগারেশন ফাইল দেখুন।Envoy অ্যানালিটিক্স
Envoy প্রক্সি অ্যানালিটিক্স ডেটা পাওয়া সংক্রান্ত তথ্য নিম্নলিখিত লিঙ্ক থেকে পাওয়া যাবে:
Istio অ্যানালিটিক্স
Envoy প্রক্সি অ্যানালিটিক্স ডেটা পাওয়া সংক্রান্ত তথ্য নিম্নলিখিত লিঙ্ক থেকে পাওয়া যাবে:
Apigee অ্যানালিটিক্স
Apigee Remote Service for Envoy, অ্যানালিটিক্স প্রসেসিংয়ের জন্য Apigee-কে অনুরোধ সংক্রান্ত পরিসংখ্যান পাঠায়। Apigee এই অনুরোধগুলি সংশ্লিষ্ট API প্রোডাক্টের নামের অধীনে রিপোর্ট করে।
Apigee Analytics সম্পর্কে আরও জানতে, Analytics পরিষেবা ওভারভিউ দেখুন।
মাল্টি-টিন্যান্ট এনভায়রনমেন্ট সাপোর্ট
আপনি এখন Apigee সংস্থার মধ্যে একাধিক পরিবেশে পরিষেবা দেওয়ার জন্য অ্যাডাপ্টার চালু করতে পারবেন। এই ফিচারের মাধ্যমে আপনি একাধিক এনভায়রনমেন্টে পরিষেবা দেওয়ার জন্য একটি Apigee সংস্থার সাথে যুক্ত একটি Apigee অ্যাডাপ্টার ফর এনভয় ব্যবহার করতে পারবেন। এই পরিবর্তনের আগে, একটি অ্যাডাপ্টর সবসময় একটি 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 কনফিগার করতে হবে যাতে এটি অ্যাডাপ্টরে উপযুক্ত এনভায়রনমেন্ট ভ্যালু পাঠাতে পারে। এর জন্য
envoy-config.yamlফাইলেরvirtual_hosts:routesসেকশনে নিম্নলিখিত মেটাডেটা যোগ করুন। যেমন:- 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
|
| ডেভেলপার | আপনি আগে যে ডেভেলপার তৈরি করেছেন সেটি বেছে নিন অথবা তালিকা থেকে আপনার পছন্দের যেকোনও ডেভেলপার বেছে নিন। |