Part นี้เราจะมาดู data จาก event ที่เกิดขึ้นจาก S3 trigger ว่าเราได้อะไรมาบ้าง แล้วเราจะเอาข้อมูลที่ได้มานั้นไปทำอะไรต่อได้บ้าง มาดูกันเลยครับ
Extract event data หน้าตาของ Event ที่ได้จะเป็น json หน้าตาแบบนี้ ซึ่งจะเป็นข้อมูลของ s3 bucket และข้อมูลของ object ที่ถูก put ขึ้นมา
ซึ่งเราสามารถเขียน function ที่เอาข้อมูลตรงนี้ไปใช้งานต่อได้ตามต้องการ
{
"Records": [
{
"eventVersion": "2.1",
"eventSource": "aws:s3",
"awsRegion": "ap-southeast-2",
"eventTime": "2023-07-03T14:29:21.312Z",
"eventName": "ObjectCreated:Put",
"userIdentity": {
"principalId": "AWS:AIDAZUCIUTFRB3BHPR4XJ"
},
"requestParameters": {
"sourceIPAddress": "101.xx.xx.88"
},
"responseElements": {
"x-amz-request-id": "SNSZ03TRTTG46K50",
"x-amz-id-2": "0TI91FeYnhr1amJc2AzkzigG9ffaye8wioS0AImzmJ/tWCK9DSNmORK3zpP3RUUje6xtcrwUG3PTDMIPgv0rfFvktRvNRc6SHbN9aNqqbzc="
},
"s3": {
"s3SchemaVersion": "1.0",
"configurationId": "49568e80-5b86-4101-8df4-5e7000f9f654",
"bucket": {
"name": "vultureprime-demo",
"ownerIdentity": {
"principalId": "A3NJIP6EHSCRAA"
},
"arn": "arn:aws:s3:::vultureprime-demo"
},
"object": {
"key": "requirement.txt",
"size": 6238,
"eTag": "ee889f8a9cd16b5429f6596172cfe4ac",
"sequencer": "0064A2DB4149722D73"
}
}
}
]
}
Process the event จาก event data ที่ได้เราจะมาทำการ process ข้อมูลนั้นแบบง่ายๆ โดยใช้ Python ทำการ Print object name ไปใน log และนี่คือ script ตัวอย่างที่ใช้ และผลลัพธ์ที่ออกมา
import json
import os
def lambda_handler(event, context):
items = event['Records']
for item in items:
object_key = item['s3']['object']['key']
print("This is my object : "object_key)
เราก็จะได้ key ที่เป็นชื่อของ object ตามที่เราต้องการ
Summary การทำงานแบบนี้เราจะเรียกว่า event driven หรือถ้าจะเรียกบ้านๆให้เข้าใจง่ายหน่อยคือ การใช้ event ที่เกิดขึ้นเป็นตัว trigger การทำงานต่อไปโดยอัตโนมัติ ตัวอย่างนี้เราใช้ put event จาก s3 ในการสั่งให้ lambda function ทำงาน แค่จากการตัวอย่างนี้เราสามารถนำไปต่อยอดได้อีกหลายอย่าง เช่น การ resize รูปทันทีเมือ upload เสร็จ, การจัดการไฟล์ที่อัพโหลดเข้ามาผ่าน suffix ของไฟล์, แจ้งเตือนเมื่อพบว่ามีการตั้งชื่อไฟล์ไม่ถูกต้อง เป็นต้น เพิ่มรูปแบบและ solution การทำงานได้อีกมากมาย