การใช้ฟังก์ชัน Lambda กับ Custom User Applications
เราสามารถใช้ฟังก์ชัน AWS lambda เพื่อประมวลผลโดยใช้เหตุการณ์ที่สร้างขึ้นโดยแอปพลิเคชันของผู้ใช้ในสองวิธีต่อไปนี้ -
- การใช้ AWS Console
- การใช้ AWS CLI
การใช้ AWS Console
จากคอนโซล AWS เราจะทำงานกับเหตุการณ์และ AWS Lambda เพื่อจุดประสงค์นี้ไปที่คอนโซล AWS และสร้างฟังก์ชันแลมบ์ดา
ต่อไปให้เราเพิ่มรหัสสำหรับ AWS Lambda -
exports.handler = (event, context, callback) => {
// TODO implement
console.log("Hello => "+ event.name);
console.log("Address =>"+ event.addr);
callback(null, 'Hello '+event.name +" and address is "+ event.addr);
};
โปรดทราบว่าในรหัสด้านบนเรากำลังพิมพ์ชื่อและที่อยู่โดยใช้เหตุการณ์
รายละเอียดของกิจกรรมจะได้รับโดยใช้เหตุการณ์ทดสอบที่สร้างขึ้นดังต่อไปนี้ -
ตอนนี้บันทึกเหตุการณ์และทดสอบ
เอาต์พุตบันทึกที่สอดคล้องกันดังแสดงที่นี่ -
การใช้ AWS CLI
เราสามารถเรียกใช้ฟังก์ชันข้างต้นโดยใช้ AWS CLI ได้ดังนี้ -
aws lambda invoke --function-name "lambdauserevent" --log-type Tail --
payload file://C:\clioutput\input.txt C:\clioutput\outputfile.txt
รายละเอียดเหตุการณ์ถูกกำหนดให้กับ payload และเอาต์พุตจะถูกเก็บไว้ที่ C:\clioutput\outputfile.txt. ดังต่อไปนี้ -
input.txt
{"name":"Roy Singh", "addr":"Mumbai"}
ในการเรียกใช้ Lambda โดยใช้ AWS CLI คุณจะเห็นผลลัพธ์ดังนี้ -
ในทำนองเดียวกันในกรณีที่คุณต้องการทดสอบ AWS Lambda สำหรับบริการ AWS อื่น ๆ คุณสามารถทำได้โดยใช้เหตุการณ์ทดสอบในคอนโซล AWS และ AWS CLI ตัวอย่างเหตุการณ์สำหรับบริการ SNS แสดงอยู่ด้านล่าง -
{
"Records": [{
"EventVersion": "1.0",
"EventSubscriptionArn": "arnid",
"EventSource": "aws:sns",
"Sns": {
"SignatureVersion": "1",
"Timestamp": "1970-01-01T00:00:00.000Z",
"Signature": "EXAMPLE",
"SigningCertUrl": "EXAMPLE",
"MessageId": "95df01b4-ee98-5cb9-9903-4c221d41eb5e",
"Message": "Hello from SNS!",
"MessageAttributes": {
"Test": {
"Type": "String",
"Value": "TestString"
},
"TestBinary": {
"Type": "Binary",
"Value": "TestBinary"
}
},
"Type": "Notification",
"UnsubscribeUrl": "EXAMPLE",
"TopicArn": "topicarn",
"Subject": "TestInvoke"
}
}]
}
ให้เราเพิ่มเหตุการณ์ตัวอย่างที่แสดงด้านบนและทดสอบตามที่แสดง -
ใน AWS Lambda โค้ดจะพิมพ์ข้อความ SNS ดังที่แสดงในตัวอย่างด้านล่าง -
exports.handler = (event, context, callback) => {
// TODO implement
console.log(event.Records[0].Sns.Message);
callback(null, event.Records[0].Sns.Message);};
ให้เราเรียกสิ่งเดียวกันโดยใช้ AWS CLI ให้เราบันทึกเหตุการณ์ลงในไฟล์และใช้สำหรับเพย์โหลดโดยใช้คำสั่งที่แสดง -
aws lambda invoke --function-name "lambdauserevent" --log-type Tail --
payload file://C:\clioutput\sns.txt C:\clioutput\snsoutput.txt