7

आप एक क्लाउड फ़ंक्शन अलार्म को लैम्ब्डा फ़ंक्शन आमंत्रण से कैसे कनेक्ट करते हैं?क्लाउडवॉच अलार्म को लैम्ब्डा फ़ंक्शन से कनेक्ट करने के लिए कैसे करें

मैं ईएलबी को क्लाउड घड़ी अलार्म प्रोग्रामेटिक रूप से जोड़ रहा हूं जिसे हम एडब्ल्यूएस क्लाउडफॉर्मेशन टेम्पलेट्स के माध्यम से क्लाउड गठन स्टैक के हिस्से के रूप में बनाते हैं। मैं अलर्ट्स को एक लैम्ब्डा फ़ंक्शन में भेजना चाहता हूं जो संदेश को स्लैक पर पोस्ट करेगा। हालांकि अलर्ट काम करता है, और एसएनएस कॉन्फ़िगरेशन मेरे लिए सही लगता है, लैम्ब्डा फ़ंक्शन कभी नहीं बुलाया जाता है।

लैम्ब्डा समारोह इन उदाहरणों इस प्रकार है:

https://medium.com/cohealo-engineering/how-set-up-a-slack-channel-to-be-an-aws-sns-subscriber-63b4d57ad3ea#.x2j9apedu

http://inopinatus.org/2015/07/13/hook-aws-notifications-into-slack-with-a-lambda-function/

लैम्ब्डा समारोह काम करता है, और मैं इसे एडब्ल्यूएस सांत्वना संदेश सुस्त पर पोस्ट किए गए, जिसके परिणामस्वरूप के माध्यम से डेटा का परीक्षण भेज सकते हैं।

लोड संतुलन एक सही दिखने बादल घड़ी अलार्म के साथ बनाई गई है:

enter image description here

अलार्म सही एसएनएस विषय सूचना भेजने के लिए कॉन्फ़िगर किया गया है:

enter image description here enter image description here

उस विषय के लिए एक एसएनएस सदस्यता है, लैम्ब्डा फ़ंक्शन के साथ यह एंडपॉइंट है:

enter image description here

अलार्म ट्रिगर कर रहे हैं और संदेश सही विषय के लिए भेजा जब अलार्म आग:

enter image description here

लेकिन लैम्ब्डा समारोह लागू कभी नहीं किया गया है:

enter image description here

हालांकि , अगर मैं लैम्बडा फ़ंक्शन पर मैन्युअल रूप से SNS विषय को "ईवेंट स्रोत" के रूप में जोड़ता हूं, तो यह है अलार्म आग लगने पर और स्लेक संदेश पोस्ट किए जाने पर आह्वान किया जाता है।

enter image description here

एम आई गलतफहमी एक लैम्ब्डा कार्य करने के लिए एक बादल घड़ी अलार्म कनेक्ट करने के लिए कैसे? या क्या मुझे कोई छोटा सा विवरण याद आ रहा है?

यदि यह दृष्टिकोण काम नहीं कर सकता है, और क्लाउड घड़ी अलार्म में लैम्ब्डा फ़ंक्शन को जोड़ने का एकमात्र तरीका एसएनएस विषय को "ईवेंट स्रोत" के रूप में जोड़ना है, तो एडब्ल्यूएस क्लाउडफॉर्मेशन टेम्पलेट्स के माध्यम से ऐसा करने का उचित तरीका क्या है? मुझे एक मौजूदा संसाधन को संशोधित करने का एक स्पष्ट तरीका नहीं दिखता है जैसे कि एक निश्चित लैम्ब्डा फ़ंक्शन।

"GenericSlackAlertSNSTopic" : { 
    "Type" : "AWS::SNS::Topic", 
    "Properties" : { 
     "Subscription" : [ { 
      "Endpoint" : "arn:aws:lambda:us-east-1:[...]:function:snsToSlack", 
      "Protocol" : "lambda" 
     } ] 
    } 
}, 
"ELBNoTrafficAlarm": { 
    "Type": "AWS::CloudWatch::Alarm", 
    "Properties": { 
     "Namespace" : "AWS/ELB", 
     "AlarmDescription": "Alarm for no apparent traffic on an ELB.", 
     "AlarmActions": [{ 
      "Ref": "GenericSlackAlertSNSTopic" 
     }], 
     "InsufficientDataActions": [{ 
      "Ref": "GenericSlackAlertSNSTopic" 
     }], 
     "MetricName": "RequestCount", 
     "Statistic": "Sum", 
     "Dimensions" : [ { 
      "Name" : "LoadBalancerName", 
      "Value" : { "Ref" : "ElasticLoadBalancer" } 
     } ], 
     "Period": "60", 
     "EvaluationPeriods": "3", 
     "Threshold" : "10", 
     "ComparisonOperator": "LessThanOrEqualToThreshold" 
    } 
} 

धन्यवाद:

यहाँ मेरी CloudFormation खाका है!

-neil

+0

मैं इसे आज अपने आप स्थापित कर रहा था, इसलिए यह पुष्टि कर सकता है कि यह काम करता है। मैं नहीं देखता कि आपने जो किया है वह नहीं है। –

+0

धन्यवाद। यह क्लाउडफॉर्मेशन सृजन हिचकी नहीं है, मैंने एक स्टैक ~ 10 गुना बढ़ाया है, और नतीजा वही है (यानी, कोई लैम्ब्डा फ़ंक्शन आमंत्रण नहीं।) –

+0

कंसोल में क्लाउडफॉर्मेशन में जाएं और सत्यापित करें कि एसएनएस विषय स्थापित है। अगर कोई त्रुटि हुई तो उसे वहां दिखाना चाहिए। इसके अलावा यह मेरे लिए सही लग रहा है ... –

उत्तर

4

जारी किया एडब्ल्यूएस (~ 3 दिन पहले) दोनों अजगर में और NodeJS लैम्ब्डा का उपयोग कर एडब्ल्यूएस Cloudwatch साथ ढीला एकीकरण के लिए एक खाका: https://aws.amazon.com/blogs/aws/new-slack-integration-blueprints-for-aws-lambda/

होने के नाते कहा कि, मैं भी यही समस्या थी जैसा कि आप ब्लूप्रिंट में उल्लिखित चरणों का पालन करते हैं, मुझे अलार्म नहीं मिलते हैं जब तक कि मैं लैम्बडा फ़ंक्शन पर मैन्युअल रूप से SNS विषय को "ईवेंट स्रोत" के रूप में नहीं जोड़ता। आगे की जांच के लिए मुझे इस सवाल का नेतृत्व: Can't create a SNS Event source on a Lambda function using CloudFormation

और अंत में एडब्ल्यूएस प्रलेखन पढ़ने: 1) http://docs.aws.amazon.com/lambda/latest/dg/intro-core-components.html

अमेज़न एसएनएस विषय सदस्यता विन्यास के माध्यम से घटना स्रोत मानचित्रण (वहाँ के लिए कोई एडब्ल्यूएस लैम्ब्डा एपीआई है का कहना है इस मैपिंग को कॉन्फ़िगर करें)।

2) http://docs.aws.amazon.com/sns/latest/dg/sns-lambda.html

एडब्ल्यूएस प्रबंधन कंसोल

साथ लैम्ब्डा Endpoints साथ अमेज़न एसएनएस का विन्यास समाप्त उस पल में सदस्यता एडब्ल्यूएस प्रबंधन कंसोल के माध्यम से किया जाना चाहिए

सारांश: फिलहाल लैम्ब्डा एंडपॉइंट्स के साथ अमेज़ॅन एसएनएस को कॉन्फ़िगर करने का एकमात्र तरीका एडब्ल्यूएस के माध्यम से है प्रबंधन कंसोल

बोनस: एक ही उत्तर के समान प्रश्न: AWS Lambda scheduled event source via cloudformation

0

CloudWatch अनुसूचित घटना अब लैम्ब्डा एक एक देशी लक्ष्य है। enter image description here

इसके अलावा, आप लैम्ब्डा

EventListFunction: 
    Type: 'AWS::Serverless::Function' 
    Properties: 
    ... 
    Events: 
     Schedule1: 
     Type: Schedule 
     Properties: 
      Schedule: rate(1 day) 
0

के लिए cloudformation को सुनिश्चित करें कि आप अपने लैम्ब्डा समारोह आह्वान करने के लिए एसएनएस विषय अनुमति देते हैं एक अनुसूचित घटना जोड़ सकते हैं। अनुमति के लिए क्लाउडफॉर्मेशन इस तरह कुछ दिखाई देगा:

"LambdaInvokePermission": { 
    "Type": "AWS::Lambda::Permission", 
    "Properties": { 
     "FunctionName" : "arn:aws:lambda:us-east-1:[...]:function:snsToSlack", 
     "Action": "lambda:InvokeFunction", 
     "Principal": "sns.amazonaws.com", 
     "SourceArn": { "Ref": "GenericSlackAlertSNSTopic" } 
    } 
} 
संबंधित मुद्दे