2016-03-09 12 views
15

द्वारा ट्रिगर किए गए लैम्ब्डा फ़ंक्शन को सेट करने के लिए टेराफॉर्म का उपयोग करें, मैं हर पांच मिनट में एक एडब्ल्यूएस लैम्ब्डा फ़ंक्शन चलाने के लिए चाहता हूं। एडब्लूएस प्रबंधन कंसोल में लैम्ब्डा फ़ंक्शन के "इवेंट स्रोत" टैब के तहत सेट अप करना आसान है, लेकिन मैं इसे Terraform के साथ कैसे सेट अप करूं?एक निर्धारित कार्यक्रम स्रोत

मैंने an aws_lambda_event_source_mapping resource का उपयोग करने का प्रयास किया, लेकिन यह पता चला है कि the API it uses केवल Kinesis और DynamoDB से ईवेंट का समर्थन करता है। जब मैं इसे अनुसूचित घटना स्रोत, निर्माण समय के साथ उपयोग करने का प्रयास करता हूं।

उत्तर

28

आप अपने लैम्ब्डा फ़ंक्शन में शेड्यूल किए गए ईवेंट स्रोत (ईवेंट नियम) को टाई करने के लिए aws_cloudwatch_event_target संसाधन का उपयोग कर सकते हैं। आपको इसे अपने लैम्ब्डा फ़ंक्शन को आमंत्रित करने की अनुमति देना होगा; आप इसके लिए aws_lambda_permission संसाधन का उपयोग कर सकते हैं।

उदाहरण:

resource "aws_lambda_function" "check_foo" { 
    filename = "check_foo.zip" 
    function_name = "checkFoo" 
    role = "arn:aws:iam::424242:role/something" 
    handler = "index.handler" 
} 

resource "aws_cloudwatch_event_rule" "every_five_minutes" { 
    name = "every-five-minutes" 
    description = "Fires every five minutes" 
    schedule_expression = "rate(5 minutes)" 
} 

resource "aws_cloudwatch_event_target" "check_foo_every_five_minutes" { 
    rule = "${aws_cloudwatch_event_rule.every_five_minutes.name}" 
    target_id = "check_foo" 
    arn = "${aws_lambda_function.check_foo.arn}" 
} 

resource "aws_lambda_permission" "allow_cloudwatch_to_call_check_foo" { 
    statement_id = "AllowExecutionFromCloudWatch" 
    action = "lambda:InvokeFunction" 
    function_name = "${aws_lambda_function.check_foo.function_name}" 
    principal = "events.amazonaws.com" 
    source_arn = "${aws_cloudwatch_event_rule.every_five_minutes.arn}" 
} 
+0

समस्या निवारण पर कोई युक्तियाँ? मैं कंसोल में देख सकता हूं कि क्लाउडवॉच इवेंट नियम सही दिखता है और लैम्ब्डा कंसोल में इसे ट्रिगर के रूप में सूचीबद्ध किया जाता है। ऐसा लगता है जैसे टाइमर फायरिंग कर रहा है लेकिन चालान सफल नहीं होते हैं और मुझे क्लाउडवॉच लॉग में लम्बाडा के आने का कोई सबूत नहीं दिखता है। क्या क्लाउडवॉच इवेंट टाइमर के लिए कोई लॉग है? –

1

कंसोल में, मैं निम्नलिखित देख सकते हैं:

enter image description here

भले ही यह कहते हैं नियम राज्य है "सक्षम", मैं अभी भी सक्षम करने के लिए खुद को ट्रिगर करें। निश्चित नहीं है कि टेराफॉर्म यह क्यों नहीं कर रहा है।

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