2016-04-05 10 views
12

Regions.getCurrentRegion() एक एडब्ल्यूएस लैम्ब्डा फ़ंक्शन के भीतर से शून्य लौटाता है। ऐसा लगता है कि Regions.getCurrentRegion() एडब्ल्यूएस लैम्ब्डा फ़ंक्शन के भीतर से समर्थित नहीं है। क्या यह निर्धारित करने का एक वैकल्पिक तरीका है कि लैम्ब्डा फ़ंक्शन किस क्षेत्र में चल रहा है?एडब्ल्यूएस लैम्ब्डा फ़ंक्शन के भीतर वर्तमान क्षेत्र को कैसे निर्धारित किया जा सकता है?

नोट: एडब्ल्यूएस लैम्ब्डा फ़ंक्शन जावा में लिखा गया है।

उत्तर

8

context ऑब्जेक्ट जो आपके लैम्ब्डा फ़ंक्शन को पास किया गया है, में invokedFunctionArn नामक एक विशेषता है। ARN स्वरूप की है:

arn:aws:<service>:<region>:<account_id>:<resource>

तो तुम : चरित्र पर इस स्ट्रिंग विभाजित है और लैम्ब्डा समारोह के साथ जुड़े क्षेत्र पा सके।

नोट: जावा में आप संदर्भ वस्तु के getInvokedFunctionArn() गेटर को कॉल करेंगे।

+0

यह बहुत अच्छी तरह से काम करता है के रूप में इसे का उपयोग कर सकते है। धन्यवाद! –

+1

'AWS_DEFAULT_REGION' पर्यावरण चर भी उपलब्ध है। यह हैंडलर के बाहर उपलब्ध है और इसे पार्स करने की कोई आवश्यकता नहीं है। कोड के लिए मेरा जवाब देखें। – sihil

+1

ध्यान दें कि यह पर्यावरण चर सभी रनटाइम वातावरण में मौजूद नहीं है। जैसा कि आप दिखाते हैं, यह जावा के लिए काम करता है। – garnaat

20

आप AWS_DEFAULT_REGION पर्यावरण चर को पढ़ सकते हैं और Regions.fromName फ़ंक्शन का उपयोग किसी उपयोग करने योग्य क्षेत्र में पार्स करने के लिए कर सकते हैं।

Regions.fromName(System.getenv("AWS_DEFAULT_REGION")) 

ARN पार्स दृष्टिकोण पर इस का लाभ यह है कि आप एक संदर्भ वस्तु जिसका मतलब है कि आप अपने हैंडलर समारोह के बाहर उपयोग कर सकते हैं की जरूरत नहीं है है।

स्रोत: AWS's Lambda environment variables docs

+1

यह https://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html#lambda-environment-variables – pba

+0

में प्रलेखित है धन्यवाद @pba - मैंने अपना जवाब अपडेट करने के लिए अद्यतन किया है एक बेहतर स्रोत के रूप में। – sihil

4

सभी लैम्ब्डा कंटेनर वातावरण चर Lambda.You में जावा कोड से $ AWS_REGION

सेट नीचे

System.getenv ("AWS_REGION")

+2

लम्बाडा के लिए नोडजेस पर, यह "process.env.AWS_REGION" है –

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