দূতের জন্য এপিজি অ্যাডাপ্টারে HTTP 403 নিষিদ্ধ ত্রুটির সাথে দূত প্রক্সি ব্যর্থ হয়েছে

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

উপসর্গ

এনভয় প্রক্সি HTTP 403 Forbidden ত্রুটির সাথে ব্যর্থ হয় যখন এনভয়-এর জন্য Apigee অ্যাডাপ্টারের মাধ্যমে আহ্বান করা হয়।

ত্রুটি বার্তা

নিম্নলিখিত ত্রুটি বার্তা প্রদর্শিত হয়:

HTTP/1.1 403 Forbidden
content-length: 19
content-type: text/plain
date: Tue, 03 Nov 2020 00:20:10 GMT
server: istio-envoy

সম্ভাব্য কারণ

নিম্নলিখিত শর্তগুলির মধ্যে একটি ঘটলে এনভয় প্রক্সি একটি HTTP 403 ত্রুটি উত্থাপন করবে:

কারণ বর্ণনা সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য
API পণ্য সক্ষম করা নেই API পণ্য নির্দিষ্ট পরিবেশের জন্য সক্রিয় করা হয় না. এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
API পণ্যে লক্ষ্য পরিষেবা URI পাথ অনুপস্থিত৷ লক্ষ্য পরিষেবার URI পাথ অনুপস্থিত বা API সম্পদের অধীনে API পণ্যে যোগ করা হয়নি। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
API পণ্যে হোস্টনাম অনুপস্থিত ক্লায়েন্ট API অনুরোধে প্রদত্ত হোস্টনামটি Apigee দূরবর্তী পরিষেবা লক্ষ্যগুলির অধীনে API পণ্যে অনুপস্থিত। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
অনুরোধ শিরোনামে API কী অনুপস্থিত API কীটি x-api-key HTTP হেডারে পাস করা হয় না। এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
অবৈধ API কী৷ অনুরোধের অংশ হিসাবে পাস করা API কীটি অবৈধ৷ এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম৷ এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা
দূত প্রক্সি দূতের জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম৷ দূত প্রক্সি দূতের জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম৷ এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা

আপনি শুরু করার আগে

  1. আপনি এনভয় প্রক্সি থেকে 403 Forbidden প্রতিক্রিয়া বার্তা পাচ্ছেন তা যাচাই করুন। যেমন:
    curl -i -H "x-api-key: $API_KEY" http://httpbin:8080/echo
    
    HTTP/1.1 403 Forbidden
    content-length: 19
    content-type: text/plain
    date: Tue, 12 Jan 2021 08:18:08 GMT
    server: envoy
    RBAC: access denied
  2. ডিবাগ লগ সক্রিয় করুন:

    আপনি ত্রুটি সম্পর্কে আরও বিশদ বিবরণ ক্যাপচার করার জন্য দূতের জন্য Apigee অ্যাডাপ্টারে ডিবাগ লগ সক্রিয় করেছেন তা নিশ্চিত করুন৷ যদি না হয়, দূতের জন্য Apigee অ্যাডাপ্টার বন্ধ করুন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে ডিবাগ লগ সক্রিয় করে এটি আবার শুরু করুন:

    apigee-remote-service-envoy -c config.yaml -l debug

কারণ: API পণ্য সক্ষম করা নেই

এই ত্রুটিটি ঘটবে যদি এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যটি নির্দিষ্ট পরিবেশে সক্রিয় না থাকে যেখানে API কলগুলি আহ্বান করা হয়৷

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. দূত লগের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে নিম্নলিখিত বার্তাটি Authorizing request বিভাগের অধীনে প্রদর্শিত হয়েছে:
    product: API_PRODUCT_NAME not found

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T08:18:08.124Z        DEBUG   auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil)
    2021-01-12T08:18:08.124Z        DEBUG   auth/verify_api_key.go:106      fetchToken fetching: 7mQIG...
    2021-01-12T08:18:08.589Z        DEBUG   auth/auth.go:125        using api key from request
    2021-01-12T08:18:08.589Z        DEBUG   auth/auth.go:157        Authenticate success: &auth.Context{Context:(*server.Handle
    r)(0xc0001a0600), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"},
    Expires:time.Time{wall:0x0, ext:63746037188, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[]
    string{""}, APIKey:"7mQIG..."}
    2021-01-12T08:18:08.589Z        DEBUG   product/manager.go:89
    Authorizing request:
      products: [ENVOY-PRODUCT-1]
      scopes: []
      operation: GET /echo
      target: httpbin:8080
      - product: ENVOY-PRODUCT-1
        not found

    উপরের উদাহরণটি দেখায় যে API পণ্য ENVOY-PRODUCT-1 এনভয়-এর জন্য Apigee অ্যাডাপ্টারে পাওয়া যায়নি।

    এনভয় লগিং এর জন্য Apigee অ্যাডাপ্টার সম্পর্কে আরও তথ্যের জন্য, লগিং দেখুন।

  3. যদি আপনি API অনুরোধ অনুমোদন করার সময় এই বার্তাটি দেখতে পান, তাহলে এটি সম্ভবত নির্দেশ করে যে নির্দিষ্ট API পণ্যটি একটি নির্দিষ্ট পরিবেশের জন্য সক্ষম করা নেই যেখানে আপনি API কল করছেন।
  4. এটি যাচাই করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
    1. এজ UI এ লগ ইন করুন।
    2. Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
    3. যাচাই করুন যে নির্দিষ্ট পরিবেশে আপনি API অনুরোধ করছেন, API পণ্যে সক্ষম করা আছে।
    4. যদি API পণ্যে নির্দিষ্ট পরিবেশ সক্ষম না করা হয়, তাহলে এটি এই সমস্যার কারণ।
  5. যদি নির্দিষ্ট এনভায়রনমেন্ট ইতিমধ্যেই সক্ষম করা থাকে, তাহলে Cause-এ যান: API পণ্যে লক্ষ্য পরিষেবা URI পাথ অনুপস্থিত

রেজোলিউশন

API পণ্যে নির্দিষ্ট পরিবেশ সক্ষম না থাকলে, সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. এজ UI এ লগ ইন করুন।
  2. Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
  3. API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
  4. প্রাসঙ্গিক পরিবেশ চেকবক্স নির্বাচন করে আপনি API অনুরোধ করতে চান এমন নির্দিষ্ট পরিবেশ সক্রিয় করুন।
  5. Save এ ক্লিক করুন।

কারণ: API পণ্যে লক্ষ্য পরিষেবা URI পাথ অনুপস্থিত৷

এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যে লক্ষ্যের URI পাথ নির্দিষ্ট না হলে এই ত্রুটি ঘটবে।

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. এনভয় লগের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে নিম্নলিখিত বার্তাটি একটি নির্দিষ্ট লক্ষ্যের সাথে যুক্ত নির্দিষ্ট API পণ্যের জন্য প্রদর্শিত হচ্ছে Authorizing request বিভাগের অধীনে:

    no path: REQUEST_URI_PATH

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T08:09:02.604Z        DEBUG   auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil)
    2021-01-12T08:09:02.605Z        DEBUG   auth/auth.go:125        using api key from request
    2021-01-12T08:09:02.605Z        DEBUG   auth/auth.go:157        Authenticate success: &auth.Context{Context:(*server.Handle
    r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"},
    Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[]
    string{""}, APIKey:"7mQIG..."}
    2021-01-12T08:09:02.605Z        DEBUG   product/manager.go:89
    Authorizing request:
      products: [ENVOY-PRODUCT-1]
      scopes: []
      operation: GET /echo1
      target: httpbin:8080
      - product: ENVOY-PRODUCT-1
        no path: /echo1
    2021-01-12T08:09:02.605Z        DEBUG   server/authorization.go:228     sending ok (actual: PERMISSION_DENIED)

    নমুনা আউটপুট বার্তা দেখায়:

    no path: /echo1

    এটি নির্দেশ করে পথ /echo1 API পণ্য ENVOY-PRODUCT-1 এ পাওয়া যায়নি।

  3. আপনি যদি এনভয় ডিবাগ লগের জন্য Apigee অ্যাডাপ্টারে no path: REQUEST_URI_PATH দেখতে পান, তাহলে এটি এই সমস্যার কারণ। যদি না হয়, Cause-এ যান: API পণ্যে হোস্টনাম অনুপস্থিত

রেজোলিউশন

যদি নির্দিষ্ট লক্ষ্যের জন্য API পণ্যে নির্দিষ্ট অনুরোধ URI যোগ করা না হয়, তাহলে সমস্যা সমাধানের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. এজ UI এ লগ ইন করুন।
  2. Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
  3. API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
  4. API সংস্থান ফলকে, API পণ্যে API অনুরোধ URI যোগ করুন।
  5. এনভয় লগের জন্য Apigee অ্যাডাপ্টার নিরীক্ষণ করুন এবং এনভয়-এর জন্য Apigee অ্যাডাপ্টার আপডেট হওয়া API পণ্য আনা পর্যন্ত অপেক্ষা করুন। তারপরে, ফিক্স যাচাই করতে অন্য API অনুরোধ পাঠান।

কারণ: API পণ্যে হোস্টনাম অনুপস্থিত

এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যে টার্গেট হোস্টনাম এবং পোর্টের সমন্বয় যোগ করা না হলে এই ত্রুটি ঘটবে।

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. এনভয় লগের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে নিম্নলিখিত বার্তাটি একটি নির্দিষ্ট লক্ষ্যের সাথে যুক্ত নির্দিষ্ট API পণ্যের জন্য প্রদর্শিত হচ্ছে Authorizing request বিভাগের অধীনে:

    no targets: HOSTNAME:PORT

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T08:12:06.019Z        DEBUG   auth/auth.go:98 Authenticate: key: 7mQIG..., claims: map[string]interface {}(nil)
    2021-01-12T08:12:06.019Z        DEBUG   auth/auth.go:125        using api key from request
    2021-01-12T08:12:06.019Z        DEBUG   auth/auth.go:157        Authenticate success: &auth.Context{Context:(*server.Handle
    r)(0xc0001a4180), ClientID:"7mQIG...", AccessToken:"", Application:"ENVOY-APP-1", APIProducts:[]string{"ENVOY-PRODUCT-1"},
    Expires:time.Time{wall:0x0, ext:63746036507, loc:(*time.Location)(0x14a3be0)}, DeveloperEmail:"[---masked---]", Scopes:[]
    string{""}, APIKey:"7mQIG..."}
    2021-01-12T08:12:06.019Z        DEBUG   product/manager.go:89
    Authorizing request:
      products: [ENVOY-PRODUCT-1]
      scopes: []
      operation: GET /echo
      target: httpbin1:8080
      - product: ENVOY-PRODUCT-1
        no targets: httpbin1:8080
    2021-01-12T08:12:06.020Z        DEBUG   server/authorization.go:228     sending ok (actual: PERMISSION_DENIED)

    উপরের উদাহরণটি দেখায় যে হোস্টনাম এবং পোর্টের সমন্বয় httpbin1:8080 API পণ্য ENVOY-PRODUCT-1 এ পাওয়া যায়নি।

  3. যদি এনভয় লগের জন্য Apigee অ্যাডাপ্টারে একটি এন্ট্রি থাকে যাতে no targets: HOSTNAME : PORT অনুরোধ অনুমোদন করার সময়, তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause: অনুপস্থিত API কী অনুরোধ শিরোনামে যান।

রেজোলিউশন

যদি লক্ষ্য হোস্টনাম এবং পোর্ট সমন্বয় API পণ্যে যোগ না করা হয়, তাহলে সমস্যা সমাধানের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. এজ UI এ লগ ইন করুন।
  2. Publish > API পণ্য পৃষ্ঠায়, দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য আপনি যে নির্দিষ্ট API পণ্যটি ব্যবহার করেছেন সেটিতে ক্লিক করুন।
  3. API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
  4. Apigee রিমোট সার্ভিস টার্গেট প্যানে, টার্গেট হোস্টনেম এবং পোর্ট যোগ করুন এবং সেভ এ ক্লিক করুন।

    আপনি যদি UI-তে Apigee রিমোট সার্ভিস টার্গেট বিভাগ দেখতে না পান, apigee-remote-service-targets নামের API পণ্যে একটি কাস্টম বৈশিষ্ট্য যোগ করুন এবং এজ API ব্যবহার করে HOSTNAME : PORT মান যোগ করুন। যেমন:

    curl https://api.enterprise.apigee.com/v1/organizations/$ORG/apiproducts/$ENVOY_PRODUCT \
        -X GET \
        -H "Authorization: Bearer $ACCESS_TOKEN" \
        -H "Content-Type:application/json" \
        -d \
    {
        "apiResources": [
            "/echo",
            "/verifyApiKey"
        ],
        "approvalType": "auto",
        "attributes": [
            {
                "name": "access",
                "value": "public"
            },
            {
                "name": "apigee-remote-service-targets",
                "value": "localhost:8080"
            }
        ],
        "createdAt": 1610435989556,
        "createdBy": "---masked---",
        "description": "",
        "displayName": "ENVOY-PRODUCT-1",
        "environments": [
            "test"
        ],
        "lastModifiedAt": 1612234134060,
        "lastModifiedBy": "---masked---",
        "name": "ENVOY-PRODUCT-1",
        "proxies": [
            "remote-service"
        ],
        "scopes": []
    }
  5. একবার উপরের কাজটি সম্পন্ন হলে, এনভয় লগের জন্য Apigee অ্যাডাপ্টার নিরীক্ষণ করুন এবং এনভয়-এর জন্য Apigee অ্যাডাপ্টার আপডেট হওয়া API পণ্যটি আনা পর্যন্ত অপেক্ষা করুন। তারপরে, ফিক্স যাচাই করতে অন্য API অনুরোধ পাঠান।

কারণ: অনুরোধ শিরোনামে API কী অনুপস্থিত

অনুরোধ শিরোনামের অংশ হিসাবে API কী পাস না হলে এই ত্রুটি ঘটবে।

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. দূত লগের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে আপনি Authenticate error বিভাগের অধীনে [missing authentication] বার্তাটি দেখতে পাচ্ছেন।

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T08:20:31.461Z        DEBUG   auth/auth.go:98 Authenticate: key: , claims: map[string]interface {}(nil)
    2021-01-12T08:20:31.461Z        DEBUG   auth/auth.go:159
    Authenticate error: &auth.Context{Context:(*server.Handler)
    (0xc0001a0600), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0,
    loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [missing authentication]
    2021-01-12T08:20:31.461Z        DEBUG   server/authorization.go:205     sending denied: UNAUTHENTICATED
    2021-01-12T08:20:32.448Z        DEBUG   server/header_context.go:68     No context header x-apigee-api, using target header
    : :authority

    উপরে দেখানো নমুনা আউটপুটে বার্তা আছে [missing authentication] । এই বার্তাটি নির্দেশ করে যে API কী অনুরোধ শিরোনামের অংশ হিসাবে পাস করা হয়নি।

  3. যদি দূত লগের জন্য Apigee অ্যাডাপ্টারে Authenticate error বিভাগের অধীনে বার্তা [missing authentication] সহ একটি লগ এন্ট্রি থাকে, তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause: Invalid API কী- তে যান।

রেজোলিউশন

যদি ত্রুটি [missing authentication] দূত লগের জন্য Apigee অ্যাডাপ্টারে প্রদর্শিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. API অনুরোধে ক্লায়েন্ট HTTP হেডার x-api-key ব্যবহার করে API কী পাঠিয়েছে কিনা তা পরীক্ষা করুন। যদি তা না হয়, ক্লায়েন্টকে HTTP শিরোনাম x-api-key এ API কী পাঠাতে অনুরোধ করুন।
  2. এনভয় কনফিগারেশন ফাইলের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে ডিফল্ট API কী শিরোনামের নাম x-api-key পরিবর্তন করা হয়েছে, উদাহরণস্বরূপ:
    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        global:
          tls:
            ...
        tenant:
          ...
        auth:
          target_header: api-key

    উপরের উদাহরণে, ডিফল্ট API কী শিরোনামের নাম api-key তে পরিবর্তন করা হয়েছে। এই ক্ষেত্রে, আপনাকে হেডার api-key এর অংশ হিসাবে API কী পাস করতে হবে।

  3. যদি ডিফল্ট API কী শিরোনামটির নাম পরিবর্তন করা হয়, ক্লায়েন্টকে আপডেট করা API কী শিরোনাম ব্যবহার করার অনুরোধ করুন এবং অন্য API অনুরোধ পাঠান এবং এটি সমস্যার সমাধান করে কিনা তা যাচাই করুন।

কারণ: অবৈধ API কী

অনুরোধ শিরোনামের অংশ হিসাবে অবৈধ API কী পাস করা হলে এই ত্রুটি ঘটবে।

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. দূত লগগুলির জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং যাচাই করুন যে আপনি Authenticate error বিভাগের অধীনে [permission denied] বার্তাটি দেখতে পাচ্ছেন। এটি সাধারণত অ্যাডাপ্টার দ্বারা API কী আনার পরে প্রদর্শিত হয় যা fetchToken fetching: API_KEY

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T05:01:07.198Z        DEBUG   auth/auth.go:98 Authenticate: key: 123, claims: map[string]interface {}(nil)
    2021-01-12T05:01:07.198Z        DEBUG   auth/verify_api_key.go:106      fetchToken fetching: API_KEY
    2021-01-12T05:01:09.102Z        DEBUG   server/header_context.go:68     No context header x-apigee-api, using target header: :authority
    2021-01-12T05:01:09.831Z        DEBUG   auth/auth.go:159        Authenticate error: &auth.Context{Context:(*server.Handler)(0xc0001640c0), ClientID:"", AccessToken:"", Application:"", APIProducts:[]string(nil), Expires:time.Time{wall:0x0, ext:0, loc:(*time.Location)(nil)}, DeveloperEmail:"", Scopes:[]string(nil), APIKey:""} [permission denied]
    2021-01-12T05:01:09.832Z        DEBUG   server/authorization.go:228     sending ok (actual: PERMISSION_DENIED)

    এই উদাহরণে API অনুরোধে পাঠানো API কী বৈধ ছিল না।

  3. যদি এনভয় লগগুলির জন্য Apigee অ্যাডাপ্টারে Authenticate error বিভাগের অধীনে [permission denied] সহ একটি লগ এন্ট্রি থাকে, তবে এটি নির্দেশ করে যে অনুরোধের অংশ হিসাবে পাস করা API কীটি অবৈধ এবং এটি সমস্যার কারণ। যদি না হয়, Cause-এ যান: দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম

রেজোলিউশন

যদি বার্তাটি [permission denied] এনভয় লগের জন্য Apigee অ্যাডাপ্টারের Authenticate error বিভাগের অধীনে পরিলক্ষিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. API পণ্যের সাথে সংযুক্ত অ্যাপ্লিকেশনে পাওয়া API কী মানের বিপরীতে API অনুরোধে পাঠানো API কীটি পরীক্ষা করুন।
  2. ক্লায়েন্ট দ্বারা ব্যবহৃত API কী বৈধ না হলে, ক্লায়েন্টকে বৈধ API কী পাঠাতে অনুরোধ করুন।
  3. যদি ক্লায়েন্টের দ্বারা ব্যবহৃত API কীটি বৈধ হয় এবং আপনি যদি এখনও একটি HTTP 403 ত্রুটি দেখতে পান তবে অনুগ্রহ করে এটি আরও তদন্ত করতে Apigee Edge সহায়তার সাথে যোগাযোগ করুন৷

কারণ: দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম

এই ত্রুটি ঘটবে যদি দূতের জন্য Apigee অ্যাডাপ্টার দূরবর্তী পরিষেবা API প্রক্সির সাথে যোগাযোগ করতে অক্ষম হয় যদি কনফিগার করা দূরবর্তী পরিষেবা হোস্টটি অবৈধ হয়৷

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. উপরে ধাপ 2 এ ব্যাখ্যা করা হিসাবে ডিবাগ লগ সক্রিয় করুন।
  2. দূত লগের জন্য Apigee অ্যাডাপ্টার পরীক্ষা করুন এবং আপনি নিম্নলিখিত বার্তাটি দেখতে পাচ্ছেন তা যাচাই করুন:

    Error retrieving products: REQUEST_URI: no such host

    নমুনা ডিবাগ লগ আউটপুট:

    2021-01-12T08:29:06.499Z        DEBUG   product/manager.go:188  retrieving products from: https://foo/remote-service/products
    2021-01-12T08:29:06.505Z        ERROR   product/manager.go:164  Error retrieving products: GET "https://foo/remote-service/pro
    ducts": dial tcp: lookup foo on 169.254.169.254:53: no such host
    github.com/apigee/apigee-remote-service-golib/product.(*manager).start.func1
            /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/product/manager.go:164
    github.com/apigee/apigee-remote-service-golib/util.(*Looper).Run
            /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:87
    github.com/apigee/apigee-remote-service-golib/util.(*Looper).Start.func1
            /go/pkg/mod/github.com/apigee/apigee-remote-service-golib@v1.4.0/util/looper.go:59

    এই উদাহরণে, দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে সক্ষম হয়নি কারণ রিমোট সার্ভার API প্রক্সি ইউআরএলে প্রদত্ত হোস্টনামটি বৈধ নয় যেমন ত্রুটি দ্বারা নির্দেশিত no such host

  3. যদি এনভয় লগের জন্য Apigee অ্যাডাপ্টারে একটি লগ এন্ট্রি থাকে যাতে no such host , তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause-এ যান: এনভয় প্রক্সি এনভয় এর জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম

রেজোলিউশন

যদি উপরের ত্রুটিগুলি দূত লগের জন্য Apigee অ্যাডাপ্টারে প্রদর্শিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. এনভয় কনফিগারেশন ফাইলের জন্য Apigee অ্যাডাপ্টারটি পরীক্ষা করুন এবং প্রদত্ত রিমোট-সার্ভিস API প্রক্সি URLটি বৈধ কিনা তা যাচাই করুন।

    যদি তা না হয়, Apigee Adapter for Envoy বন্ধ করুন, কনফিগারেশন ফাইলে রিমোট-সার্ভিস API প্রক্সি ইউআরএল ঠিক করুন, এনভয়-এর জন্য Apigee অ্যাডাপ্টার শুরু করুন এবং অন্য API অনুরোধ পাঠান এবং ফিক্স যাচাই করুন।

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

    apiVersion: v1
    kind: ConfigMap
    metadata:
      name: apigee-remote-service-envoy
      namespace: apigee
    data:
      config.yaml: |
        tenant:
          internal_api: https://istioservices.apigee.net/edgemicro
          remote_service_api: https://ORG-ENV.apigee.net/remote-service
          org_name: ORG
          env_name: ENV
          key: KEY
          secret: SECRET
          
  2. remote-service API প্রক্সি প্রাসঙ্গিক এজ পরিবেশে স্থাপন করা হয়েছে তা যাচাই করুন। যদি না হয়, remote-service API প্রক্সিটি প্রাসঙ্গিক এজ পরিবেশে স্থাপন করুন এবং এটি আবার চেষ্টা করুন।
  3. দূতের জন্য Apigee অ্যাডাপ্টার এবং remote-service API প্রক্সি এন্ডপয়েন্টের মধ্যে নেটওয়ার্ক সংযোগ যাচাই করুন। যদি কোন নেটওয়ার্ক সংযোগ সমস্যা পাওয়া যায়, আপনার নেটওয়ার্কিং টিমের সাথে যোগাযোগ করুন এবং সমস্যা সমাধানের চেষ্টা করুন।

কারণ: দূত প্রক্সি দূতের জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম

রোগ নির্ণয়

সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:

  1. আপনি এনভয়-এ ডিবাগ লগ সক্রিয় করেছেন তা নিশ্চিত করুন। যদি না হয়, এনভয় বন্ধ করুন এবং ডিবাগ লগ সক্রিয় করে এটি আবার শুরু করুন। তারপর অন্য API অনুরোধ পাঠান।

    স্বতন্ত্র স্থাপনা:

    envoy -c envoy-config.yaml -l debug

    Kubernetes/Istio ভিত্তিক স্থাপনা:

    kubectl -n=istio-system get pods
    kubectl -n=istio-system exec -it INGRESS_GATEWAY_NAME bash -- curl -X POST localhost:15000/logging?connection=debug
  2. দূত লগের জন্য Apigee অ্যাডাপ্টার পরীক্ষা করুন এবং বার্তা সহ একটি লগ এন্ট্রি আছে কিনা তা যাচাই করুন:
    connecting to APIGEE_ENVOY_ADAPTER_HOST:5000

    যা তারপর অনুসরণ করা হয়:

    upstream connect error or disconnect/reset before headers. reset reason: ACTUAL_REASON

    নমুনা ডিবাগ লগ আউটপুট:

    [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:769] [C4] connecting to 127.0.0.1:5000
    [2021-03-23 05:44:41.867][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:785] [C4] connection in progress
    [2021-03-23 05:44:41.868][1303661][debug][http2] [external/envoy/source/common/http/http2/codec_impl.cc:1173] [C4] updating connection-level initial window size to 268435456
    [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:634] [C4] delayed connection error: 111
    [2021-03-23 05:44:41.869][1303661][debug][connection] [external/envoy/source/common/network/connection_impl.cc:203] [C4] closing socket: 0
    [2021-03-23 05:44:41.869][1303661][debug][client] [external/envoy/source/common/http/codec_client.cc:96] [C4] disconnect. resetting 0 pending requests
    [2021-03-23 05:44:41.869][1303661][debug][pool] [external/envoy/source/common/conn_pool/conn_pool_base.cc:314] [C4] client disconnected, failure reason:
    [2021-03-23 05:44:41.869][1303661][debug][router] [external/envoy/source/common/router/router.cc:1031] [C0][S6149963213555558594] upstream reset: reset reason: connection failure, transport failure reason:
    [2021-03-23 05:44:41.869][1303661][debug][http] [external/envoy/source/common/http/async_client_impl.cc:100] async http request response headers (end_stream=true):
    ':status', '200'
    'content-type', 'application/grpc'
    'grpc-status', '14'
    'grpc-message', 'upstream connect error or disconnect/reset before headers. reset reason: connection failure'

    উপরের উদাহরণটি দেখায় যে connection failure কারণে দূত দূতের জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম ছিলেন।

  3. connection failure একাধিক কারণে হতে পারে. এর প্রতিটি দৃশ্যকল্প তাকান.

দৃশ্য #1: অ্যাডাপ্টার প্রক্রিয়া চলছে না

যদি এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চালু না হয়, তাহলে এই ত্রুটি ঘটতে পারে।

  1. এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার নিম্নোক্ত কমান্ডটি কার্যকর করার মাধ্যমে যাচাই করুন। দূত প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চলমান থাকলে, নিম্নলিখিত কমান্ডের ফলাফলে এটি তালিকাভুক্ত করা উচিত।
    ps -ef | grep apigee-remote-service-envoy
  2. যদি এটি চলমান না হয়, তাহলে এটি সমস্যার কারণ।

রেজোলিউশন

  1. যদি এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চালু না হয়, তাহলে দূতের জন্য Apigee অ্যাডাপ্টার শুরু করুন।
  2. অন্য API অনুরোধ করুন এবং সমস্যাটি ঠিক করা হয়েছে কিনা তা যাচাই করুন।

দৃশ্যকল্প #2: অ্যাডাপ্টার প্রক্রিয়া নির্দিষ্ট পোর্টে শুনছে না

যদি দূত প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার নির্দিষ্ট পোর্টে না শোনে, তাহলে এই ত্রুটি ঘটতে পারে।

যদি এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চলমান থাকে, তাহলে যাচাই করুন যে পোর্ট 5000 এ একটি সকেট লিসেনিং আছে: APIGEE_ENVOY_ADAPTER_HOST :5000 । আপনি এটি যাচাই করতে netstat কমান্ড চালাতে পারেন:

sudo netstat -lnp | grep 5000

নমুনা আউটপুট:

sudo netstat -lnp | grep 5000

tcp6       0      0 :::5000                 :::*                    LISTEN      1596530/./apigee-re

যদি পোর্ট 5000 এ কোন সকেট শোনা না থাকে, তাহলে এটি এই সমস্যার কারণ হতে পারে।

রেজোলিউশন

  1. দূতের জন্য Apigee অ্যাডাপ্টার বন্ধ করুন এবং এটি আবার শুরু করুন।
  2. অন্য API অনুরোধ করুন এবং সমস্যাটি ঠিক করা হয়েছে কিনা তা যাচাই করুন।

পরিস্থিতি #3: দূতের জন্য দূত এবং অ্যাপিজি অ্যাডাপ্টারের মধ্যে নেটওয়ার্ক সংযোগ

  1. দূতের জন্য দূত এবং অ্যাপিজি অ্যাডাপ্টারের মধ্যে নেটওয়ার্ক সংযোগ যাচাই করুন:
    ssh $ENVOY_HOST
    telnet $APIGEE_ENVOY_ADAPTER_HOST 5000

    যদি টেলনেট দূতের জন্য Apigee অ্যাডাপ্টারের সাথে একটি TCP সংযোগ করতে পারে তাহলে নিম্নলিখিতগুলির মতো একটি আউটপুট প্রদর্শিত হবে:

    telnet $APIGEE_ENVOY_ADAPTER_HOST 5000
    
    Trying ::1...
    Connected to localhost.
    Escape character is '^]'.
  2. আপনি যদি ত্রুটিটি লক্ষ্য করেন টেলনেটের সাথে Connection timed out , তাহলে এটি নির্দেশ করে যে এনভয় এবং এপিজি অ্যাডাপ্টারের মধ্যে একটি নেটওয়ার্ক সংযোগ সমস্যা রয়েছে।

রেজোলিউশন

আপনি যদি দূতের জন্য এনভয় এবং এপিজি অ্যাডাপ্টারের মধ্যে কোনও নেটওয়ার্ক সংযোগ সমস্যা দেখতে পান, অনুগ্রহ করে আপনার নেটওয়ার্কিং টিমকে যুক্ত করুন এবং সমস্যাটি সমাধান করার চেষ্টা করুন।

যদি সমস্যা এখনও থেকে যায়, তাহলে ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে

উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সাপোর্টের সাথে যোগাযোগ করুন:

  1. Apigee পণ্য ব্যবহৃত:

    উদাহরণ: Apigee Edge Cloud, Apigee OPDK, Apigee হাইব্রিড, Apigee X

  2. Apigee সংগঠন এবং পরিবেশ
  3. এজ এপিআই ব্যবহার করে এপিআই পণ্যের সংজ্ঞা পড়ুন:

    curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT

    রেফারেন্স: Apigee Edge APIs

  4. Apigee Edge UI ব্যবহার করে remote-service API প্রক্সিতে একটি ট্রেস সেশন শুরু করুন। এই সমস্যাটি পুনরুত্পাদন করুন এবং ট্রেস সেশন XML ফাইলটি ভাগ করুন।

    রেফারেন্স: ট্রেস টুল ব্যবহার করে | এপিজি এজ

  5. দূত লগের জন্য Apigee অ্যাডাপ্টার (প্রদত্ত সময়ের সাথে সম্পর্কিত সম্পূর্ণ লগ)

    স্বতন্ত্র স্থাপনা:

    # by default Apigee Envoy write logs to stdout and stderr, check your deployment configuration and collect logs accordingly

    Kubernetes/Istio ভিত্তিক স্থাপনা:

    kubectl -n=apigee get pods
    kubectl -n=apigee logs APIGEE_REMOTE_SERVICE_ENVOY_POD_NAME > apigee-remote-service-envoy.log
  6. একটি API অনুরোধ একটি curl কমান্ড ব্যবহার করে এনভয় প্রক্সিতে পাঠানো হয়েছে ( curl কমান্ডের সম্পূর্ণ আউটপুট):
    curl -v ENVOY_PROXY_ENDPOINT
  7. একটি এপিআই অনুরোধ একটি curl কমান্ড ব্যবহার করে লক্ষ্য পরিষেবাতে পাঠানো হয়েছে ( curl কমান্ডের সম্পূর্ণ আউটপুট):
    curl -v TARGET_SERVICE_ENDPOINT