আপনি 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 অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম৷ | এজ পাবলিক এবং প্রাইভেট ক্লাউড ব্যবহারকারীরা |
আপনি শুরু করার আগে
- আপনি এনভয় প্রক্সি থেকে
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
ডিবাগ লগ সক্রিয় করুন:
আপনি ত্রুটি সম্পর্কে আরও বিশদ বিবরণ ক্যাপচার করার জন্য দূতের জন্য Apigee অ্যাডাপ্টারে ডিবাগ লগ সক্রিয় করেছেন তা নিশ্চিত করুন৷ যদি না হয়, দূতের জন্য Apigee অ্যাডাপ্টার বন্ধ করুন এবং নিম্নলিখিত কমান্ডটি ব্যবহার করে ডিবাগ লগ সক্রিয় করে এটি আবার শুরু করুন:
apigee-remote-service-envoy -c config.yaml -l debug
কারণ: API পণ্য সক্ষম করা নেই
এই ত্রুটিটি ঘটবে যদি এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যটি নির্দিষ্ট পরিবেশে সক্রিয় না থাকে যেখানে API কলগুলি আহ্বান করা হয়৷
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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 অ্যাডাপ্টার সম্পর্কে আরও তথ্যের জন্য, লগিং দেখুন।
- যদি আপনি API অনুরোধ অনুমোদন করার সময় এই বার্তাটি দেখতে পান, তাহলে এটি সম্ভবত নির্দেশ করে যে নির্দিষ্ট API পণ্যটি একটি নির্দিষ্ট পরিবেশের জন্য সক্ষম করা নেই যেখানে আপনি API কল করছেন।
- এটি যাচাই করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- এজ UI এ লগ ইন করুন।
- Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
- যাচাই করুন যে নির্দিষ্ট পরিবেশে আপনি API অনুরোধ করছেন, API পণ্যে সক্ষম করা আছে।
- যদি API পণ্যে নির্দিষ্ট পরিবেশ সক্ষম না করা হয়, তাহলে এটি এই সমস্যার কারণ।
- যদি নির্দিষ্ট এনভায়রনমেন্ট ইতিমধ্যেই সক্ষম করা থাকে, তাহলে Cause-এ যান: API পণ্যে লক্ষ্য পরিষেবা URI পাথ অনুপস্থিত ।
রেজোলিউশন
API পণ্যে নির্দিষ্ট পরিবেশ সক্ষম না থাকলে, সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- এজ UI এ লগ ইন করুন।
- Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
- API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
- প্রাসঙ্গিক পরিবেশ চেকবক্স নির্বাচন করে আপনি API অনুরোধ করতে চান এমন নির্দিষ্ট পরিবেশ সক্রিয় করুন।
- Save এ ক্লিক করুন।
কারণ: API পণ্যে লক্ষ্য পরিষেবা URI পাথ অনুপস্থিত৷
এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যে লক্ষ্যের URI পাথ নির্দিষ্ট না হলে এই ত্রুটি ঘটবে।
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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
এ পাওয়া যায়নি।- আপনি যদি এনভয় ডিবাগ লগের জন্য Apigee অ্যাডাপ্টারে
no path: REQUEST_URI_PATH
দেখতে পান, তাহলে এটি এই সমস্যার কারণ। যদি না হয়, Cause-এ যান: API পণ্যে হোস্টনাম অনুপস্থিত ।
রেজোলিউশন
যদি নির্দিষ্ট লক্ষ্যের জন্য API পণ্যে নির্দিষ্ট অনুরোধ URI যোগ করা না হয়, তাহলে সমস্যা সমাধানের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- এজ UI এ লগ ইন করুন।
- Publish > API পণ্য পৃষ্ঠাতে, নির্দিষ্ট API পণ্যটিতে ক্লিক করুন যা আপনি দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য ব্যবহার করেছেন।
- API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
- API সংস্থান ফলকে, API পণ্যে API অনুরোধ URI যোগ করুন।
- এনভয় লগের জন্য Apigee অ্যাডাপ্টার নিরীক্ষণ করুন এবং এনভয়-এর জন্য Apigee অ্যাডাপ্টার আপডেট হওয়া API পণ্য আনা পর্যন্ত অপেক্ষা করুন। তারপরে, ফিক্স যাচাই করতে অন্য API অনুরোধ পাঠান।
কারণ: API পণ্যে হোস্টনাম অনুপস্থিত
এনভয় প্রক্সি দ্বারা ব্যবহৃত নির্দিষ্ট API পণ্যে টার্গেট হোস্টনাম এবং পোর্টের সমন্বয় যোগ করা না হলে এই ত্রুটি ঘটবে।
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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
এ পাওয়া যায়নি।- যদি এনভয় লগের জন্য Apigee অ্যাডাপ্টারে একটি এন্ট্রি থাকে যাতে
no targets: HOSTNAME : PORT
অনুরোধ অনুমোদন করার সময়, তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause: অনুপস্থিত API কী অনুরোধ শিরোনামে যান।
রেজোলিউশন
যদি লক্ষ্য হোস্টনাম এবং পোর্ট সমন্বয় API পণ্যে যোগ না করা হয়, তাহলে সমস্যা সমাধানের জন্য নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- এজ UI এ লগ ইন করুন।
- Publish > API পণ্য পৃষ্ঠায়, দূতের জন্য Apigee অ্যাডাপ্টার কনফিগার করার জন্য আপনি যে নির্দিষ্ট API পণ্যটি ব্যবহার করেছেন সেটিতে ক্লিক করুন।
- API পণ্য > পণ্যের নাম পৃষ্ঠায়, সম্পাদনা ক্লিক করুন।
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": [] }
- একবার উপরের কাজটি সম্পন্ন হলে, এনভয় লগের জন্য Apigee অ্যাডাপ্টার নিরীক্ষণ করুন এবং এনভয়-এর জন্য Apigee অ্যাডাপ্টার আপডেট হওয়া API পণ্যটি আনা পর্যন্ত অপেক্ষা করুন। তারপরে, ফিক্স যাচাই করতে অন্য API অনুরোধ পাঠান।
কারণ: অনুরোধ শিরোনামে API কী অনুপস্থিত
অনুরোধ শিরোনামের অংশ হিসাবে API কী পাস না হলে এই ত্রুটি ঘটবে।
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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 কী অনুরোধ শিরোনামের অংশ হিসাবে পাস করা হয়নি। - যদি দূত লগের জন্য Apigee অ্যাডাপ্টারে
Authenticate error
বিভাগের অধীনে বার্তা[missing authentication]
সহ একটি লগ এন্ট্রি থাকে, তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause: Invalid API কী- তে যান।
রেজোলিউশন
যদি ত্রুটি [missing authentication]
দূত লগের জন্য Apigee অ্যাডাপ্টারে প্রদর্শিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- API অনুরোধে ক্লায়েন্ট HTTP হেডার
x-api-key
ব্যবহার করে API কী পাঠিয়েছে কিনা তা পরীক্ষা করুন। যদি তা না হয়, ক্লায়েন্টকে HTTP শিরোনামx-api-key
এ API কী পাঠাতে অনুরোধ করুন। - এনভয় কনফিগারেশন ফাইলের জন্য 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 কী পাস করতে হবে। - যদি ডিফল্ট API কী শিরোনামটির নাম পরিবর্তন করা হয়, ক্লায়েন্টকে আপডেট করা API কী শিরোনাম ব্যবহার করার অনুরোধ করুন এবং অন্য API অনুরোধ পাঠান এবং এটি সমস্যার সমাধান করে কিনা তা যাচাই করুন।
কারণ: অবৈধ API কী
অনুরোধ শিরোনামের অংশ হিসাবে অবৈধ API কী পাস করা হলে এই ত্রুটি ঘটবে।
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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 কী বৈধ ছিল না।
- যদি এনভয় লগগুলির জন্য Apigee অ্যাডাপ্টারে
Authenticate error
বিভাগের অধীনে[permission denied]
সহ একটি লগ এন্ট্রি থাকে, তবে এটি নির্দেশ করে যে অনুরোধের অংশ হিসাবে পাস করা API কীটি অবৈধ এবং এটি সমস্যার কারণ। যদি না হয়, Cause-এ যান: দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম ৷
রেজোলিউশন
যদি বার্তাটি [permission denied]
এনভয় লগের জন্য Apigee অ্যাডাপ্টারের Authenticate error
বিভাগের অধীনে পরিলক্ষিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- API পণ্যের সাথে সংযুক্ত অ্যাপ্লিকেশনে পাওয়া API কী মানের বিপরীতে API অনুরোধে পাঠানো API কীটি পরীক্ষা করুন।
- ক্লায়েন্ট দ্বারা ব্যবহৃত API কী বৈধ না হলে, ক্লায়েন্টকে বৈধ API কী পাঠাতে অনুরোধ করুন।
- যদি ক্লায়েন্টের দ্বারা ব্যবহৃত API কীটি বৈধ হয় এবং আপনি যদি এখনও একটি HTTP
403
ত্রুটি দেখতে পান তবে অনুগ্রহ করে এটি আরও তদন্ত করতে Apigee Edge সহায়তার সাথে যোগাযোগ করুন৷
কারণ: দূতের জন্য Apigee অ্যাডাপ্টার রিমোট-সার্ভিস API প্রক্সির সাথে যোগাযোগ করতে অক্ষম
এই ত্রুটি ঘটবে যদি দূতের জন্য Apigee অ্যাডাপ্টার দূরবর্তী পরিষেবা API প্রক্সির সাথে যোগাযোগ করতে অক্ষম হয় যদি কনফিগার করা দূরবর্তী পরিষেবা হোস্টটি অবৈধ হয়৷
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
- উপরে ধাপ 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
।- যদি এনভয় লগের জন্য Apigee অ্যাডাপ্টারে একটি লগ এন্ট্রি থাকে যাতে
no such host
, তাহলে এটিই সমস্যার কারণ। যদি না হয়, Cause-এ যান: এনভয় প্রক্সি এনভয় এর জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম ।
রেজোলিউশন
যদি উপরের ত্রুটিগুলি দূত লগের জন্য Apigee অ্যাডাপ্টারে প্রদর্শিত হয়, তাহলে সমস্যাটি সমাধান করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
এনভয় কনফিগারেশন ফাইলের জন্য 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
-
remote-service
API প্রক্সি প্রাসঙ্গিক এজ পরিবেশে স্থাপন করা হয়েছে তা যাচাই করুন। যদি না হয়,remote-service
API প্রক্সিটি প্রাসঙ্গিক এজ পরিবেশে স্থাপন করুন এবং এটি আবার চেষ্টা করুন। - দূতের জন্য Apigee অ্যাডাপ্টার এবং
remote-service
API প্রক্সি এন্ডপয়েন্টের মধ্যে নেটওয়ার্ক সংযোগ যাচাই করুন। যদি কোন নেটওয়ার্ক সংযোগ সমস্যা পাওয়া যায়, আপনার নেটওয়ার্কিং টিমের সাথে যোগাযোগ করুন এবং সমস্যা সমাধানের চেষ্টা করুন।
কারণ: দূত প্রক্সি দূতের জন্য Apigee অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম
রোগ নির্ণয়
সমস্যাটি নির্ণয় করতে নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করুন:
আপনি এনভয়-এ ডিবাগ লগ সক্রিয় করেছেন তা নিশ্চিত করুন। যদি না হয়, এনভয় বন্ধ করুন এবং ডিবাগ লগ সক্রিয় করে এটি আবার শুরু করুন। তারপর অন্য 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
- দূত লগের জন্য 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 অ্যাডাপ্টারের সাথে যোগাযোগ করতে অক্ষম ছিলেন। -
connection failure
একাধিক কারণে হতে পারে. এর প্রতিটি দৃশ্যকল্প তাকান.
দৃশ্য #1: অ্যাডাপ্টার প্রক্রিয়া চলছে না
যদি এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চালু না হয়, তাহলে এই ত্রুটি ঘটতে পারে।
- এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার নিম্নোক্ত কমান্ডটি কার্যকর করার মাধ্যমে যাচাই করুন। দূত প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চলমান থাকলে, নিম্নলিখিত কমান্ডের ফলাফলে এটি তালিকাভুক্ত করা উচিত।
ps -ef | grep apigee-remote-service-envoy
- যদি এটি চলমান না হয়, তাহলে এটি সমস্যার কারণ।
রেজোলিউশন
- যদি এনভয় প্রক্রিয়ার জন্য Apigee অ্যাডাপ্টার চালু না হয়, তাহলে দূতের জন্য Apigee অ্যাডাপ্টার শুরু করুন।
- অন্য 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 এ কোন সকেট শোনা না থাকে, তাহলে এটি এই সমস্যার কারণ হতে পারে।
রেজোলিউশন
- দূতের জন্য Apigee অ্যাডাপ্টার বন্ধ করুন এবং এটি আবার শুরু করুন।
- অন্য API অনুরোধ করুন এবং সমস্যাটি ঠিক করা হয়েছে কিনা তা যাচাই করুন।
পরিস্থিতি #3: দূতের জন্য দূত এবং অ্যাপিজি অ্যাডাপ্টারের মধ্যে নেটওয়ার্ক সংযোগ
- দূতের জন্য দূত এবং অ্যাপিজি অ্যাডাপ্টারের মধ্যে নেটওয়ার্ক সংযোগ যাচাই করুন:
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 '^]'.
- আপনি যদি ত্রুটিটি লক্ষ্য করেন টেলনেটের সাথে
Connection timed out
, তাহলে এটি নির্দেশ করে যে এনভয় এবং এপিজি অ্যাডাপ্টারের মধ্যে একটি নেটওয়ার্ক সংযোগ সমস্যা রয়েছে।
রেজোলিউশন
আপনি যদি দূতের জন্য এনভয় এবং এপিজি অ্যাডাপ্টারের মধ্যে কোনও নেটওয়ার্ক সংযোগ সমস্যা দেখতে পান, অনুগ্রহ করে আপনার নেটওয়ার্কিং টিমকে যুক্ত করুন এবং সমস্যাটি সমাধান করার চেষ্টা করুন।
যদি সমস্যা এখনও থেকে যায়, তাহলে ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে ।
ডায়াগনস্টিক তথ্য সংগ্রহ করতে হবে
উপরের নির্দেশাবলী অনুসরণ করার পরেও যদি সমস্যাটি থেকে যায়, তাহলে নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন এবং তারপর Apigee Edge সাপোর্টের সাথে যোগাযোগ করুন:
Apigee পণ্য ব্যবহৃত:
উদাহরণ: Apigee Edge Cloud, Apigee OPDK, Apigee হাইব্রিড, Apigee X
- Apigee সংগঠন এবং পরিবেশ
এজ এপিআই ব্যবহার করে এপিআই পণ্যের সংজ্ঞা পড়ুন:
curl -i -u $USER:$PASSWORD $MANAGEMENT_SERVER_ENDPOINT/v1/organizations/$ORGANIZATION/apiproducts/$API_PRODUCT
রেফারেন্স: Apigee Edge APIs
Apigee Edge UI ব্যবহার করে
remote-service
API প্রক্সিতে একটি ট্রেস সেশন শুরু করুন। এই সমস্যাটি পুনরুত্পাদন করুন এবং ট্রেস সেশন XML ফাইলটি ভাগ করুন।রেফারেন্স: ট্রেস টুল ব্যবহার করে | এপিজি এজ
দূত লগের জন্য 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
- একটি API অনুরোধ একটি
curl
কমান্ড ব্যবহার করে এনভয় প্রক্সিতে পাঠানো হয়েছে (curl
কমান্ডের সম্পূর্ণ আউটপুট):curl -v ENVOY_PROXY_ENDPOINT
- একটি এপিআই অনুরোধ একটি
curl
কমান্ড ব্যবহার করে লক্ষ্য পরিষেবাতে পাঠানো হয়েছে (curl
কমান্ডের সম্পূর্ণ আউটপুট):curl -v TARGET_SERVICE_ENDPOINT