เลือกฟอนต์:

ข้อที่ 6 การสร้าง Lambda Function เพื่อตรวจจับการเพิ่มวัตถุใหม่ใน S3 Bucket และแสดงชื่อไฟล์บน Console โดยใช้ IAM Role ที่กำหนด


🧠 เป้าหมาย


🧰 บริการที่เกี่ยวข้อง


🛠️ ขั้นตอนการทำ (แบบละเอียด)

1. สร้าง S3 Bucket (ถ้ายังไม่มี)


2. สร้าง Lambda Function

  1. ไปที่ AWS Console → Lambda
  2. Click Create function

    • Function name: lambdaxxxxyyyy
    • Runtime: Python 3.12 (หรือ Node.js ได้)
    • Permissions: เลือก Use an existing role → เลือก LabRole
  3. Click Create function

3. เขียนโค้ดใน Lambda

✅ ตัวอย่างโค้ด (Python):

def lambda_handler(event, context):
    for record in event['Records']:
        bucket = record['s3']['bucket']['name']
        key = record['s3']['object']['key']
        print(f"New file uploaded: {key} in bucket: {bucket}")

และกด Deploy


4. เพิ่ม Trigger จาก S3

  1. ในหน้าของ Lambda function → เลือกแท็บ Configuration > Triggers
  2. คลิก Add trigger

    • Select source: S3
    • Bucket: เลือก bucket ที่เตรียมไว้
    • Event type: PUT (All object create events)
    • Prefix/Suffix: ปล่อยว่างก็ได้
    • ติ๊ก I acknowledge that using the same S3 bucket for both ...
    • กด “Add”

📌 ถ้าเจอ error ว่า S3 ไม่มี permission → ให้แน่ใจว่า LabRole มี policy เช่นนี้:

{
  "Effect": "Allow",
  "Action": "s3:GetObject",
  "Resource": "arn:aws:s3:::your-bucket-name/*"
}

5. ทดสอบโดยการอัปโหลดไฟล์ใหม่

  1. ไปที่ S3 bucket → กด Upload → เลือกไฟล์ .txt หรือ .jpg
  2. รอสักครู่

6. ตรวจผลลัพธ์ใน CloudWatch Logs

  1. กลับไปที่ Lambda → เลือกแท็บ Monitor > View CloudWatch logs
  2. เปิด log ล่าสุด → คุณจะเห็นข้อความ:
New file uploaded: mypic.jpg in bucket: trigger1234abcd

📸 สิ่งที่ต้องแคปส่ง

จับภาพหน้าจอเดียว ให้เห็น:

  1. ชื่อ Lambda function: lambdaxxxxyyyy
  2. โค้ดใน Lambda ที่พิมพ์ชื่อไฟล์
  3. ผลลัพธ์จาก CloudWatch Logs ที่แสดงว่าไฟล์ถูกอัปโหลด และชื่อไฟล์ถูกพิมพ์ออกมา หน้า Log events

ตัวอย่างรูปภาพที่ต้องส่ง

Example Image 2