2016-01-12 8 views
5

मैं विभिन्न उपयोगों के लिए लैम्ब्डा कार्यों को अधिकृत करने के बारे में अमेज़ॅन से निम्नलिखित ब्लॉग पोस्ट का पालन कर रहा हूं (परिदृश्य 3: किसी अन्य खाते में एक अमेज़ॅन एस 3 बाल्टी अधिसूचना से लैम्ब्डा फ़ंक्शन ट्रिगर करना)। मैं बाहरी खातों से एसएनएस संदेशों को स्वीकार करने के लिए एक लैम्ब्डा फ़ंक्शन सेट करना चाहता हूं (लैम्ब्डा फ़ंक्शन के साथ एक्ट के बाहर)।बाहरी खाते से एसएनएस का उपयोग करके लैम्ब्डा को आमंत्रित करें

https://aws.amazon.com/blogs/compute/easy-authorization-of-aws-lambda-functions/

मैं दूर से इस प्रकार समारोह को लागू करने की अनुमति जोड़ने के लिए उम्मीद कर रहा था:

$ aws lambda add-permission \ 
    --function-name MyFunction \ 
    --region us-west-2 \ 
    --statement-id Id-123 \ 
    --action "lambda:InvokeFunction" \ 
    --principal sns.amazonaws.com \ 
    --source-arn arn:aws:sns:::<topic name> \ 
    --source-account <account number> \ 
    --profile adminuser 

मैं तो मेरे एसएनएस विषय में जाने की कोशिश और लैम्ब्डा समाप्ति बिंदु के रूप में स्थापित है, और में टाइप पहले खाते में लैम्ब्डा फ़ंक्शन के लिए दूरस्थ एआरएन। यह इतनी अच्छी तरह से काम नहीं करता है के रूप में अंत बिंदु खाते में एक समारोह के लिए एक अर्न उम्मीद ...

प्लान बी: ​​ कंसोल में सीमा नाकाम करने के लिए CLI के माध्यम से सदस्यता बनाने का प्रयास करें ...

aws sns --profile adminuser \ 
    --region us-west-2 subscribe 
    --topic-arn arn:aws:sns:us-west-2:<account #>:<topic name> 
    --protocol lambda 
    --notification-endpoint arn:aws:lambda:us-west-2:<account id>:function:<lambda function name> 

प्रतिक्रिया:
A client error (AuthorizationError) occurred when calling the Subscribe operation: The account <account id> is not the owner of the lambda function arn:aws:lambda:us-west-2:<account id>:function:<function name>

किसी को भी किसी दूसरे खाते में एक "दूरस्थ" एसएनएस से एक लैम्ब्डा समारोह आह्वान करने में सक्षम हो गया है? मैं करने के लिए जहाँ मैं गलत हो गया है हो सकता है ... ब्लॉग पोस्ट में टिप्पणी के आधार पर के रूप में एक छोटे से स्टंप्डया हूँ, मैं पूरी तरह से उम्मीद एक दूरस्थ एसएनएस काम करने के लिए:
Note: Amazon SNS (Simple Notification Service) events sent to Lambda works the same way, with “sns.amazonaws.com” replacing “s3.amazonaws.com” as the principal.

+0

क्या आपको ढूंढ और समाधान मिला? –

+0

नहीं, अभी भी दुर्भाग्य से यहां अटक गया है। – CloudTreading

उत्तर

3

आप प्रदाता खाते को अधिकृत किया जा सकता है अगर उपभोक्ता खाता जो एसएनएस विषय की सदस्यता लेने के लिए लैम्ब्डा का मालिक है। यह topics page के तहत "विषय नीति संपादित करें" में किया जा सकता है।

ये कदम उठाएँ का एक सारांश एक लैम्ब्डा एक बाहरी खाते से एक एसएनएस विषय को सुनने के लिए अनुमति देने के लिए है:

  1. उपभोक्ता खाते लैम्ब्डा बनाता है,
  2. उपभोक्ता के खाते के अनुसार एडब्ल्यूएस कंसोल में लैम्ब्डा को घटना स्रोत कहते हैं प्रदाता के एसएनएस विषय एआरएन को निर्दिष्ट करना (यहां त्रुटि संदेशों के बारे में चिंता न करें),
  3. प्रदाता खाता तीसरे पक्ष के एडब्ल्यूएस खाते में बनाए गए उपभोक्ता आईएएम खाते में एसएनएस सदस्यता अनुमतियां जोड़ता है (उपरोक्त वर्णित "संपादित विषय नीति" के माध्यम से किया जाता है) ,
  4. उपभोक्ता एडब्ल्यूएस सीएलआई का उपयोग कर प्रदाता खाते में सदस्यता जोड़ने के लिए चरण 2 से आईएएम खाते का उपयोग करता है।

उदाहरण आदेश है कि चरण 4 के लिए पहले से मेरे लिए काम किया:

aws sns subscribe --topic-arn <provider_sns_arn> --protocol lambda --notification-endpoint <consumer_lambda_arn> --profile consumer-IAM-account 
+0

विस्मयकारी, उल्लिखित चरणों के लिए धन्यवाद।जिज्ञासा से, क्या सब्सक्रिप्शन को स्वचालित रूप से पुष्टि करने के कोई तरीके हैं, या क्या उस तर्क को लैम्ब्डा फ़ंक्शन के भीतर संभालने की आवश्यकता है? – CloudTreading

+0

आपको सदस्यता की पुष्टि करने की आवश्यकता नहीं है। यह 'aws sns subscribe' आदेश चलाने के बाद परीक्षण के लिए तैयार है। –

+0

मैं वही काम करने की कोशिश कर रहा हूं ... लेकिन प्रदाता एसएनएस विषय हमारे-पश्चिम -2 में है और हमारे खाते में लक्ष्य लैम्ब्डा कार्य-पूर्व-1 दूसरे खाते में है। क्या वह समाधान काम कर सकता है? –

1

एडब्ल्यूएस लैम्ब्डा डेवलपर मार्गदर्शिका में वहाँ है एक tutorial जहां एडब्ल्यूएस CLI आदेश एसएनएस से एक लैम्ब्डा समारोह की एक मंगलाचरण स्थापित करने के लिए उपयोग किया जाता है जो किसी अन्य खाते से संबंधित है।

प्रक्रिया स्वीकृत उत्तर की प्रक्रिया के समान ही है। सदस्यता की पुष्टि नहीं की जानी चाहिए। यह aws sns subscribe कमांड के बाद सही परीक्षण के लिए तैयार था।

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