2016-07-09 10 views
7

क्लाउडवॉच अनुसूचित घटनाओं द्वारा ट्रिगर किए गए एडब्लूएस जावा लैम्ब्डा फ़ंक्शन को लिखते समय, कौन सा ईवेंट ऑब्जेक्ट लैम्ब्डा हैंडलर फ़ंक्शन में पास हो जाता है?एडब्ल्यूएस लैम्ब्डा - क्लाउडवॉच इवेंट प्रकार

उदाहरण के लिए, एक एस 3 घटना द्वारा ट्रिगर समारोह के लिए, एडब्ल्यूएस फ़ंक्शन को आमंत्रित करता है और एक S3Event ऑब्जेक्ट पास करता है। इसी प्रकार, यह एक एसएनएसईवेंट ऑब्जेक्ट को एसएनएस संदेश द्वारा ट्रिगर किए गए फ़ंक्शन पर पास कर देगा।

public class LambdaHandler { 

    public void eventHandler(S3Event event, Context context) { 
    } 

या

public class LambdaHandler { 

    public void eventHandler(SNSEvent event, Context context) { 
    } 

एक Cloudwatch अनुसूचित घटना संचालित समारोह के लिए, क्या SNSEvent/S3Event के स्थान पर हो सकता है?

public class LambdaHandler { 

    public void eventHandler(__________ event, Context context) { 
    } 

मैं नहीं करने के लिए मुझे के जीवन एडब्ल्यूएस Lambda प्रकार्य जावा में लिखा है कि Cloudwatch अनुसूचित ईवेंट से ट्रिगर कर रहे हैं की किसी भी उदाहरण मिल सकते हैं ...

एक नमूना समारोह के लिए बोनस अंक मिलेंगे।

संपादित करें 1 अभी तक इस के लिए कोई सही जवाब नहीं है (हालांकि मैं नहीं जानता कि कि एडब्ल्यूएस एसडीके कि लैम्ब्डा समारोह के लिए पारित किया जाएगा में एक उचित 'घटना' वस्तु जारी किया है), इसलिए वहाँ नहीं हो सकता वास्तव में एक उत्तर है जिसे मैं ढूंढ रहा था।

यह प्रश्न यहां पूछा गया था: What is the parameter type passed to a Lambda function by a CloudWatch Events - Schedule trigger? और किसी ने ऑब्जेक्ट का उपयोग करके और कक्षा के नाम को प्रिंट करने का सुझाव दिया। एक LinkedHashMap बन गया। जैसा कि मैं प्राप्त करने जा रहा हूं, एक उत्तर के रूप में सही लगता है ...

+0

आप [इस] के लिए देख रहे है (http://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/EventTypes.html#schedule_event_type)? –

+0

@ माइकल-एसक्लबॉट शायद, हालांकि यह JSON है। मुझे यकीन है कि जवाब मेरे सामने सही है, लेकिन वास्तविक जावा इवेंट क्लास क्या है जो लैम्ब्डा हैंडलर फ़ंक्शन को पास कर दी गई है? – Brooks

उत्तर

1

com.amazonaws.services.lambda.runtime.events.ScheduledEvent वर्तमान जवाब है।

मैं देख सकता हूं कि aws-lambda-java-events लाइब्रेरी के 2.0.2 संस्करण में यह उपलब्ध है। संहिता 2.0 संस्करण पर here और अधिक जानकारी दी जा here

+0

हां! बहुत बढ़िया है कि उन्होंने आखिरकार इसे बनाया है! – Brooks

1

दुर्भाग्य से इस प्रकार की घटनाओं के लिए कोई विशिष्ट वर्ग नहीं है।

लेकिन आप स्वतंत्र रूप से अपने स्वयं के POJO बना सकते हैं और उन्हें ईवेंट पैरामीटर के वर्ग के रूप में निर्दिष्ट कर सकते हैं। उदाहरण के लिए, CloudWatchEvent वर्णित किया जा सकता है:

public class CloudWatchEvent { 

    private String version; 
    private String id; 
    private String detailType; 
    private String source; 
    private String account; 
    private Date time; 
    private String region; 
    private List<String> resources; 
    ... 
    // getters and setters 
} 

एडब्ल्यूएस लैम्ब्डा इंजन स्वचालित रूप से किसी वर्ग की वस्तु में इनपुट क्रमानुसार करने की कोशिश करता है।

संरचना आप प्रकार निर्दिष्ट कर सकते हैं पता करने के लिए "मानचित्र" और यह लॉग इन करने के प्रिंटआउट:

public void eventHandler(Map event, Context context) { 
     log.debug(event); // or System.out.... 
    } 
संबंधित मुद्दे