অপারেশন গাইড

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

কিভাবে একটি API কী পেতে হয়

নিম্নলিখিত উদাহরণটি ব্যাখ্যা করে যে কীভাবে একটি API কী পেতে হয় যা আপনি দূতের জন্য Apigee অ্যাডাপ্টারের মাধ্যমে প্রক্সি করা একটি লক্ষ্য পরিষেবাতে API কলগুলি যাচাই করতে ব্যবহার করতে পারেন।

1. Apigee এ লগ ইন করুন

  1. একটি ব্রাউজারে Apigee UI খুলুন।
  2. একবার আপনি UI-তে থাকলে, একই সংস্থা নির্বাচন করুন যেটি আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করতে ব্যবহার করেছিলেন।

2. একটি বিকাশকারী তৈরি করুন৷

আপনি পরীক্ষার জন্য একটি বিদ্যমান বিকাশকারী ব্যবহার করতে পারেন, বা নিম্নরূপ একটি নতুন তৈরি করতে পারেন:

  1. পাশের নেভিগেশন মেনুতে প্রকাশ > বিকাশকারী নির্বাচন করুন।
  2. + বিকাশকারী ক্লিক করুন।
  3. একটি নতুন বিকাশকারী তৈরি করতে ডায়ালগটি পূরণ করুন৷ আপনি আপনার ইচ্ছামত যেকোন ডেভেলপারের নাম/ইমেল ব্যবহার করতে পারেন।

3. একটি API পণ্য তৈরি করুন

নীচে দেওয়া পণ্য তৈরি উদাহরণ অনুসরণ করুন. এপিআই পণ্য কনফিগারেশন সম্পর্কে আরও দেখুন।

  1. পাশের নেভিগেশন মেনুতে প্রকাশ > API পণ্য নির্বাচন করুন।
  2. ক্লিক করুন + API পণ্য .
  3. নিম্নরূপ পণ্য বিবরণ পৃষ্ঠাটি পূরণ করুন.
  4. মাঠ মান
    নাম httpbin-product
    প্রদর্শনের নাম httpbin product
    পরিবেশ your_environment

    আপনি যখন দূতের জন্য Apigee অ্যাডাপ্টারের ব্যবস্থা করেছিলেন তখন আপনি যে পরিবেশ ব্যবহার করেছিলেন তাতে এটি সেট করুন।

    অ্যাক্সেস Private
    কোটা প্রতি 1 মিনিটে 5টি অনুরোধ

    কোটাও দেখুন।

  5. Apigee রিমোট সার্ভিস টার্গেট বিভাগে, একটি Apigee রিমোট সার্ভিস টার্গেট যোগ করুন ক্লিক করুন।
  6. Apigee রিমোট সার্ভিস টার্গেট ডায়ালগে, নিম্নলিখিত মান যোগ করুন:
    বৈশিষ্ট্য মান বর্ণনা
    টার্গেটের নাম টার্গেট সার্ভিসের নাম লিখুন। যেমন: httpbin.org টার্গেট এন্ডপয়েন্ট এনভয় প্রক্সি দ্বারা ফ্রন্ট করা হয়েছে।
    পথ মেলানোর জন্য পরিষেবাটিতে একটি সংস্থান পথ লিখুন৷ উদাহরণস্বরূপ: /headers টার্গেট এন্ডপয়েন্টে মেলানোর অনুরোধের পথ। এই পাথে API প্রক্সি কলগুলি এই API পণ্যের সাথে মিলবে৷
  7. Save এ ক্লিক করুন।

4. একটি বিকাশকারী অ্যাপ তৈরি করুন৷

  1. পাশের নেভিগেশন মেনুতে প্রকাশ > অ্যাপ নির্বাচন করুন।
  2. + অ্যাপে ক্লিক করুন।
  3. নিম্নলিখিত হিসাবে বিকাশকারী অ্যাপ পৃষ্ঠাটি পূরণ করুন। এটি করার নির্দেশ না দেওয়া পর্যন্ত সংরক্ষণ করবেন না।
  4. নাম httpbin-app
    প্রদর্শনের নাম httpbin app
    বিকাশকারী আপনি পূর্বে তৈরি করা বিকাশকারী নির্বাচন করুন, অথবা তালিকা থেকে আপনার পছন্দের যে কোনো বিকাশকারীকে বেছে নিন।
  5. এরপরে, অ্যাপটিতে API পণ্য যোগ করুন:
    1. শংসাপত্র বিভাগে, + পণ্য যোগ করুন ক্লিক করুন এবং আপনি যে পণ্যটি কনফিগার করেছেন তা নির্বাচন করুন: httpbin-product
    2. তৈরি করুন ক্লিক করুন।
    3. শংসাপত্রের অধীনে, কী এর পাশে দেখান ক্লিক করুন।
    4. কনজিউমার কী এর মান কপি করুন। এই মানটি হল API কী যা আপনি httpbin পরিষেবাতে API কল করতে ব্যবহার করবেন।

    API পণ্য সম্পর্কে

    API পণ্যগুলি হল Apigee রিমোট পরিষেবার প্রাথমিক নিয়ন্ত্রণ পয়েন্ট। আপনি যখন একটি API পণ্য তৈরি করেন এবং এটিকে একটি লক্ষ্য পরিষেবার সাথে আবদ্ধ করেন, তখন আপনি একটি নীতি তৈরি করেন যা আপনার দূত পরিচালনার জন্য আপনার Apigee অ্যাডাপ্টার কনফিগার করার যেকোনো অনুরোধে প্রয়োগ করা হবে।

    API পণ্য সংজ্ঞা

    যখন আপনি Apigee-তে একটি API পণ্য সংজ্ঞায়িত করেন, তখন আপনি অনেকগুলি পরামিতি সেট করতে পারেন যা অনুরোধগুলি মূল্যায়ন করতে ব্যবহৃত হবে:

    • টার্গেট
    • পথ অনুরোধ
    • কোটা
    • OAuth স্কোপ

    রিমোট সার্ভিস টার্গেট

    API পণ্য সংজ্ঞা একটি অনুরোধে প্রযোজ্য হবে যদি অনুরোধটি লক্ষ্য বাঁধাই (উদাহরণস্বরূপ, httpbin.org ) এবং অনুরোধের পথ (উদাহরণস্বরূপ /httpbin ) উভয়ের সাথে মিলে যায়। সম্ভাব্য লক্ষ্যগুলির একটি তালিকা API পণ্যে একটি বৈশিষ্ট্য হিসাবে সংরক্ষণ করা হয়।

    ডিফল্টরূপে, Apigee রিমোট সার্ভিস তার লক্ষ্যের তালিকার বিপরীতে দূতের বিশেষ :authority (host) হেডার পরীক্ষা করে; তবে এটি অন্যান্য হেডার ব্যবহার করার জন্য কনফিগার করা যেতে পারে।

    এপিআই রিসোর্স পাথ

    প্রবেশ করা পথ নিম্নলিখিত নিয়ম অনুযায়ী মেলে:

    • একটি একক স্ল্যাশ ( / ) নিজে থেকে যেকোনো পথের সাথে মেলে।
    • * যেকোনো জায়গায় বৈধ এবং একটি সেগমেন্টের মধ্যে (স্ল্যাশের মধ্যে) মেলে।
    • ** শেষে বৈধ এবং লাইনের শেষের যেকোনো কিছুর সাথে মেলে।

    কোটা

    একটি কোটা একটি ঘন্টা, দিন, সপ্তাহ বা মাসে একটি এপিআই-এ জমা দেওয়ার অনুমতিপ্রাপ্ত অনুরোধ বার্তাগুলির সংখ্যা নির্দিষ্ট করে৷ যখন একটি অ্যাপ তার কোটা সীমায় পৌঁছে যায়, তখন পরবর্তী API কলগুলি প্রত্যাখ্যান করা হয়।

    কোটা ব্যবহারের ক্ষেত্রে

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

    কোটা একটি API পণ্যে সংজ্ঞায়িত করা হয়

    কোটা প্যারামিটারগুলি API পণ্যগুলিতে কনফিগার করা হয়েছে৷ উদাহরণস্বরূপ, আপনি যখন একটি API পণ্য তৈরি করেন, আপনি ঐচ্ছিকভাবে অনুমোদিত কোটা সীমা, সময় ইউনিট এবং ব্যবধান সেট করতে পারেন।

    যেহেতু API কীগুলি API পণ্যগুলিতে ফিরে আসে, প্রতিবার একটি API কী যাচাই করা হলে উপযুক্ত কোটা কাউন্টারটি হ্রাস করা যেতে পারে (যদি সংশ্লিষ্ট পণ্যে একটি কোটা সংজ্ঞায়িত করা হয়)।

    Apigee রানটাইমের বিপরীতে, পণ্যের সংজ্ঞায় প্রবেশ করা কোটাগুলি Apigee রিমোট সার্ভিস দ্বারা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়। অনুরোধ অনুমোদিত হলে, অনুরোধটি অনুমোদিত কোটার সাথে গণনা করা হবে।

    যেখানে কোটা বহাল থাকে

    কোটা রক্ষণাবেক্ষণ করা হয় এবং দূরবর্তী পরিষেবা প্রক্রিয়া দ্বারা স্থানীয়ভাবে পরীক্ষা করা হয় এবং Apigee রানটাইমের সাথে অ্যাসিঙ্ক্রোনাসভাবে রক্ষণাবেক্ষণ করা হয়। এর অর্থ হল কোটাগুলি সুনির্দিষ্ট নয় এবং আপনার যদি একাধিক রিমোট পরিষেবা থাকে যা কোটা বজায় রাখছে তবে কিছু অতিরিক্ত হয়ে যাওয়ার সম্ভাবনা রয়েছে৷ Apigee রানটাইমের সাথে সংযোগ বিঘ্নিত হলে, স্থানীয় কোটা একটি স্বতন্ত্র কোটা হিসাবে চলতে থাকবে যতক্ষণ না এটি Apigee রানটাইমের সাথে পুনরায় সংযোগ করতে পারে।

    OAuth স্কোপ

    আপনি যদি JWT টোকেন ব্যবহার করেন, তাহলে আপনি অনুমোদিত OAuth স্কোপের উপসেটে টোকেনগুলিকে সীমাবদ্ধ করতে পারেন। আপনার জারি করা JWT টোকেনের জন্য নির্ধারিত স্কোপগুলি API পণ্যের স্কোপের বিপরীতে চেক করা হবে।

    ডেভেলপার অ্যাপস সম্পর্কে

    একবার আপনি আপনার API পণ্যগুলি কনফিগার করার পরে, আপনি একটি বিকাশকারীর সাথে যুক্ত একটি অ্যাপ তৈরি করবেন৷ অ্যাপটি একটি API কী বা JWT টোকেন সহ সংশ্লিষ্ট API পণ্যগুলিতে একটি ক্লায়েন্টকে অ্যাক্সেসের অনুমতি দেয়।

    JWT ভিত্তিক প্রমাণীকরণ ব্যবহার করে

    আপনি একটি API কী ব্যবহার করার পরিবর্তে প্রমাণীকৃত API প্রক্সি কল করতে একটি JWT টোকেন ব্যবহার করতে পারেন। JWT টোকেন তৈরি, পরিদর্শন এবং ঘোরাতে apigee-remote-service-cli token কমান্ড কীভাবে ব্যবহার করতে হয় তা এই বিভাগে ব্যাখ্যা করে।

    ওভারভিউ

    JWT যাচাইকরণ এবং প্রমাণীকরণ দূত তারJWT প্রমাণীকরণ ফিল্টার ব্যবহার করে পরিচালনা করে।

    একবার প্রমাণীকরণ হয়ে গেলে, Envoy ext-authz ফিল্টার অনুরোধ শিরোনাম এবং JWT apigee-remote-service-envoy এ পাঠায়। এটি JWT-এর api_product_list এবং Apigee API পণ্যের বিরুদ্ধে scope দাবির সাথে মেলে যাতে অনুরোধের লক্ষ্যের বিপরীতে এটি অনুমোদন করা যায়।

    Apigee JWT টোকেন তৈরি করা হচ্ছে

    Apigee JWT টোকেন CLI ব্যবহার করে তৈরি করা যেতে পারে:

    $CLI_HOME/apigee-remote-service-cli token create -c config.yaml --id $KEY --secret $SECRET

    অথবা স্ট্যান্ডার্ড OAuth টোকেন এন্ডপয়েন্ট ব্যবহার করে। কার্ল উদাহরণ:

    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 টোকেন ব্যবহার করে

    একবার আপনার কাছে টোকেন হয়ে গেলে, আপনি এটিকে অনুমোদন শিরোনামে দূতের কাছে পাঠান। উদাহরণ:

    curl localhost:8080/httpbin/headers -i -H "Authorization:Bearer $TOKEN"

    JWT টোকেন ব্যর্থতা

    দূত প্রত্যাখ্যান

    যদি দূত টোকেন প্রত্যাখ্যান করে, তাহলে আপনি একটি বার্তা দেখতে পাবেন:

    Jwks remote fetch is failed

    যদি তাই হয়, নিশ্চিত করুন যে আপনার দূত কনফিগারেশনে remote_jwks বিভাগে একটি বৈধ URI রয়েছে, এটি এনভয় দ্বারা পৌঁছানো যায় এবং আপনি যখন 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

    ডিবাগিং

    দেখুন বৈধ API কী ব্যর্থ হয়েছে

    লগিং

    আপনি $REMOTE_SERVICE_HOME/apigee-remote-service-envoy পরিষেবাতে লগিং স্তর সামঞ্জস্য করতে পারেন৷ সমস্ত লগিং stdout এবং stderr এ পাঠানো হয়।

    উপাদান প্রয়োজন বর্ণনা
    -l, --লগ-স্তর বৈধ মাত্রা: ডিবাগ, তথ্য, সতর্কতা, ত্রুটি। লগিং লেভেল অ্যাডজাস্ট করে। ডিফল্ট: তথ্য
    -j, --json-log JSON রেকর্ড হিসাবে লগ আউটপুট নির্গত করে।

    দূত লগিং প্রদান করে। আরও তথ্যের জন্য, নিম্নলিখিত দূত ডকুমেন্টেশন লিঙ্কগুলি দেখুন:

    একটি নেটওয়ার্ক প্রক্সি ব্যবহার করে

    apigee-remote-service-envoy binary-এর পরিবেশে 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 । আপনি এই পোর্ট নম্বর কনফিগার করতে পারেন. কনফিগারেশন ফাইল দেখুন।

    দূত বিশ্লেষণ

    নিম্নলিখিত লিঙ্কগুলি এনভয় প্রক্সি অ্যানালিটিক্স ডেটা পাওয়ার বিষয়ে তথ্য প্রদান করে:

    Istio বিশ্লেষণ

    নিম্নলিখিত লিঙ্কগুলি এনভয় প্রক্সি অ্যানালিটিক্স ডেটা পাওয়ার বিষয়ে তথ্য প্রদান করে:

    Apigee বিশ্লেষণ

    দূতের জন্য Apigee রিমোট সার্ভিস অ্যানালিটিক্স প্রসেসিংয়ের জন্য Apigee-কে অনুরোধের পরিসংখ্যান পাঠায়। Apigee সংশ্লিষ্ট API পণ্য নামের অধীনে এই অনুরোধ রিপোর্ট.

    Apigee অ্যানালিটিক্স সম্পর্কে তথ্যের জন্য, অ্যানালিটিক্স পরিষেবা ওভারভিউ দেখুন।

    মাল্টি ভাড়াটে পরিবেশ সমর্থন

    আপনি এখন একটি Apigee প্রতিষ্ঠানে একাধিক পরিবেশে পরিষেবা দিতে অ্যাডাপ্টার সক্ষম করতে পারেন। এই বৈশিষ্ট্যটি আপনাকে একাধিক পরিবেশে পরিষেবা দেওয়ার জন্য একটি Apigee সংস্থার সাথে যুক্ত দূতের জন্য একটি Apigee অ্যাডাপ্টার ব্যবহার করতে দেয়। এই পরিবর্তনের আগে, একটি অ্যাডাপ্টার সবসময় একটি Apigee পরিবেশের সাথে আবদ্ধ ছিল।

    একাধিক পরিবেশ সমর্থন কনফিগার করতে, config.yaml ফাইলে tenant:env_name এর মান * এ পরিবর্তন করুন। যেমন:

    1. একটি এডিটরে config.yaml ফাইলটি খুলুন।
    2. 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
    3. ফাইলটি সংরক্ষণ করুন।
    4. ফাইলটি প্রয়োগ করুন:
      kubectl apply -f $CLI_HOME/config.yaml

    আপনি যখন মাল্টি-এনভায়রনমেন্ট মোড কনফিগার করেন, তখন আপনাকে অবশ্যই envoy-config.yaml ফাইলের virtual_hosts:routes বিভাগে নিম্নলিখিত মেটাডেটা যোগ করে অ্যাডাপ্টারে একটি উপযুক্ত পরিবেশের মান পাঠাতে Envoy কনফিগার করতে হবে। যেমন:

    1. CLI ব্যবহার করে envoy-config.yaml ফাইল তৈরি করুন। যেমন:
      $CLI_HOME/apigee-remote-service-cli samples create \
        -t envoy-1.16 -c ./config.yaml --out myconfigs
    2. জেনারেট করা ফাইলটি খুলুন (এটিকে বলা হয় envoy-config.yaml )।
    3. ফাইলের 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
    4. প্রয়োজন অনুযায়ী অতিরিক্ত পরিবেশ যোগ করতে শেষ ধাপটি পুনরাবৃত্তি করুন।
    5. ফাইলটি সংরক্ষণ করুন এবং এটি প্রয়োগ করুন।

    অ্যাডাপ্টার এবং Apigee রানটাইমের মধ্যে mTLS কনফিগার করা হচ্ছে

    আপনি অ্যাডাপ্টার এবং Apigee রানটাইমের মধ্যে mTLS ব্যবহার করতে অ্যাডাপ্টারের config.yaml ফাইলের tenant বিভাগে ক্লায়েন্ট-সাইড TLS শংসাপত্র সরবরাহ করতে পারেন। এই পরিবর্তনটি সমস্ত সমর্থিত Apigee প্ল্যাটফর্মে প্রযোজ্য। এটি ব্যক্তিগত ক্লাউড প্ল্যাটফর্মের জন্য Apigee Edge-এর বিশ্লেষণের জন্য mTLS-কেও সক্ষম করে। যেমন:

    tenant:
      tls:
        ca_file: path/ca.pem
        cert_file: path/cert.pem
        key_file: path/key.pem
        allow_unverified_ssl_cert: false