5

एक किनेसिस स्ट्रीम के लिए, मैंने एडब्ल्यूएस एपीआई गेटवे का उपयोग करके प्रॉक्सी एपीआई बनाया। मैंने प्रॉक्सी के लिए पायथन लैम्ब्डा का उपयोग करके एक कस्टम प्राधिकरण जोड़ा। लैम्ब्डा फ़ंक्शन और एपीआई के तैनाती के प्रकाशित होने के बाद, मैं गेटवे टेस्ट कार्यक्षमता का उपयोग करके एपीआई का सफलतापूर्वक परीक्षण करने में सक्षम था। मैं क्लाउडवॉच में लॉग देख सकता था जिसमें कस्टम ऑथ लैम्ब्डा फ़ंक्शन से विस्तृत प्रिंट थे। सफल प्रमाणीकरण के बाद, एपीआई गेटवे मेरी Kinesis धारा में रिकॉर्ड धक्का दिया

हालांकि जब मैं क्रोम डाकिया ग्राहक से एक ही एपीआई कहते हैं, मैं 500 आंतरिक सर्वर त्रुटि और प्रतिक्रिया हेडर CloudFront से, एक्स एक्स-कैश → त्रुटि शामिल हो जाओ -amzn-errorType → AuthorizerConfigurationException
एडब्ल्यूएस एपीआई गेटवे कस्टम ऑथरिज़र प्राधिकरण कॉन्फ़िगरेशन एक्सेप्शन

लैम्बडा ऑथ फ़ंक्शन पॉलिसी देता है जो मेरे एपीआई के लिए निष्पादन अनुरोध की अनुमति देता है। पॉलिसी दस्तावेज लौटाया गया है:

 
      { 
       "policyDocument": { 
       "Version": "2012-10-17", 
       "Statement": [ 
        { 
        "Action": "execute-api:Invoke", 
        "Resource": [ 
         "arn:aws:execute-api:us-east-1:1234567:myapiId/staging/POST/*" 
        ], 
        "Effect": "Allow" 
        } 
       ] 
       }, 
       "principalId": "Foo" 
      } 

अनुरोध क्रोम या कर्ल से क्यों विफल रहता है लेकिन एक ही एपीआई परीक्षण एपीआई गेटवे से ठीक काम करता है?

+0

यह अनिवार्य मतलब है कि आपके authorizer एक नीति या ने अमान्य नीति वापस नहीं किया था या कोई नीति एपीआई अनुरोध unauthorizing लौट आए। पॉलिसी वापस नहीं लौटाए जाने पर कुछ कारणों से प्राधिकरण कोड विफल हो गया होगा ... – Prabhat

उत्तर

1

यह पता लगाया कि समस्या का कारण क्या था। पायथन लैम्ब्डा फ़ंक्शन से, मैं एक जेसन स्ट्रिंग उदाहरण लौटा रहा था। इसके बजाय यह जेसन ऑब्जेक्ट होना चाहिए। यह अजीब बात है कि जब मैं एपीआई गेटवे "टेस्ट" सुविधा से एपीआई का परीक्षण करता हूं तो वही लैम्ब्डा फ़ंक्शन त्रुटि नहीं करता है। लेकिन जब एपीआई को इंटरनेट (कर्ल या क्रोम) से बुलाया गया तो यह असफल रहा।

#return policy_string ... this is incorrect. 
return json.loads(policy_string) 
5

AuthorizerConfigurationException आमतौर पर एक संकेत है कि एपीआई गेटवे आपके प्राधिकरण को अनुमति त्रुटि के कारण कॉल करने में विफल रहा।

कृपया या तो सुनिश्चित करें कि आपने एपीआई गेटवे द्वारा आपके फ़ंक्शन को ठीक से कॉन्फ़िगर किया है। इसे रीसेट करने में आसान है अपने लेखक को फ़ंक्शन को हटाकर और फिर से जोड़ना। कंसोल तब आपको आवश्यक अनुमतियों को जोड़ने के लिए संकेत देगा।

+0

हे बॉब, क्या आप थोड़ा और विस्तार कर सकते हैं कि मैं "एपीआई गेटवे द्वारा मेरे फ़ंक्शन को कैसे लागू किया जाए", कृपया? – Stretch

+0

@Stretch आपको एपीआई गेटवे को अपने फ़ंक्शन का आह्वान करने की अनुमति देना है। एडब्ल्यूएस सीएलआई का उपयोग करके एक उदाहरण के लिए [यह प्रश्न] देखें (http://stackoverflow.com/questions/38027414/giving-aws-api-gateway-permission-to-invoke-lambda-function-using-boto3)। –

+0

[यह प्रलेखन पृष्ठ विवरण में गहराई से चला जाता है] (http://docs.aws.amazon.com/apigateway/latest/developerguide/integrating-api-with-aws-services-lambda.html)। संक्षेप में, आपके एपीआई-जीडब्ल्यू को लैम्ब्डा/अनुमतियों को शामिल करने की आवश्यकता है। यदि आप अपने कस्टम प्राधिकरण को स्वैगर के माध्यम से परिभाषित कर रहे हैं, तो सुनिश्चित करें कि प्राधिकरण में भूमिकाएं प्रमाण पत्रों में लैम्ब्डा/आक्रमण है और एपीआई-जीडब्ल्यू (विश्वसनीय संस्थाओं में) द्वारा माना जा सकता है। – deddu

संबंधित मुद्दे