2016-04-22 35 views
12

से वापसी प्रतिक्रिया कैसे प्राप्त करें मेरे पास एक साधारण लैम्ब्डा फ़ंक्शन है जो एक dict प्रतिक्रिया देता है और दूसरा लैम्ब्डा फ़ंक्शन उस कार्य को आमंत्रित करता है और प्रतिक्रिया प्रिंट करता है।एडब्ल्यूएस लैम्ब्डा फ़ंक्शन

लैम्ब्डा समारोह एक

def handler(event,context): 
    params = event['list'] 
    return {"params" : params + ["abc"]} 

लैम्ब्डा समारोह बी लागू एक

a=[1,2,3] 
x = {"list" : a} 
invoke_response = lambda_client.invoke(FunctionName="monitor-workspaces-status", 
             InvocationType='Event', 
             Payload=json.dumps(x)) 
print (invoke_response) 

invoke_response

{u'Payload': <botocore.response.StreamingBody object at 0x7f47c58a1e90>, 'ResponseMetadata': {'HTTPStatusCode': 202, 'RequestId': '9a6a6820-0841-11e6-ba22-ad11a929daea'}, u'StatusCode': 202} 

प्रतिक्रिया स्थिति 202 क्यों? साथ ही, invoke_response से प्रतिक्रिया डेटा कैसे प्राप्त करें? मुझे यह कैसे करना है इसका स्पष्ट दस्तावेज नहीं मिला।

उत्तर

21

202 प्रतिक्रिया का अर्थ Accepted है। यह एक सफल प्रतिक्रिया है लेकिन आपको बता रही है कि आपके द्वारा अनुरोधित कार्रवाई शुरू की गई है लेकिन अभी तक पूरा नहीं हुआ है। 202 प्राप्त करने का कारण यह है कि आपने लैम्ब्डा फ़ंक्शन को असीमित रूप से बुलाया था। आपका InvocationType पैरामीटर Event पर सेट है। यदि आप एक सिंक्रोनस कॉल करना चाहते हैं, तो इसे RequestResponse पर बदलें।

एक बार जब आप ऐसा करते हैं, तो आप इस तरह दिए गए डेटा प्राप्त कर सकते हैं:

data = invoke_response['Payload'].read() 
+1

मेरा दिन बना दिया! बहुत बहुत धन्यवाद। इसे कहीं भी –

+2

'.read()' रिटर्न टाइप 'बाइट्स' में नहीं मिला है, इसलिए यदि आप स्ट्रिंग, JSON इत्यादि की अपेक्षा कर रहे थे, तो आपको उन्हें '.decode()' करना होगा। जैसे प्रतिक्रिया ['पेलोड']। पढ़ें()। डीकोड() ' –

+2

और चूंकि 'json.dumps (obj)' उद्धृत स्ट्रिंग देता है, (** यदि आपने उस ** का उपयोग '' lambda_handler') यदि आप 'json.loads (प्रतिक्रिया [' पेलोड '] करते हैं तो आप एक स्ट्रिंग प्राप्त करने जा रहे हैं।()। decode())' और इसके आस-पास एक और 'json.loads() 'लपेटना होगा। तो, अपने लैम्ब्डा फ़ंक्शन में स्पष्ट रूप से JSON में कनवर्ट न करें। –

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