Lambda function with S3 trigger (Part 2)

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 การทำงานได้อีกมากมาย

Aa

© 2023, All Rights Reserved, VulturePrime co., ltd.