การใช้ฟังก์ชัน Lambda กับ Amazon S3

บริการ Amazon S3 ใช้สำหรับจัดเก็บไฟล์ซึ่งคุณสามารถอัปโหลดหรือลบไฟล์ได้ เราสามารถทริกเกอร์ AWS Lambda บน S3 เมื่อมีการอัปโหลดไฟล์ในบัคเก็ต S3 AWS Lambda มีฟังก์ชันตัวจัดการซึ่งทำหน้าที่เป็นจุดเริ่มต้นสำหรับฟังก์ชัน AWS Lambda ตัวจัดการมีรายละเอียดของเหตุการณ์ ในบทนี้ให้เราดูวิธีใช้ AWS S3 เพื่อเรียกใช้ฟังก์ชัน AWS Lambda เมื่อเราอัปโหลดไฟล์ในที่เก็บข้อมูล S3

ขั้นตอนในการใช้ฟังก์ชัน AWS Lambda กับ Amazon S3

ในการเริ่มใช้ AWS Lambda กับ Amazon S3 เราจำเป็นต้องมีสิ่งต่อไปนี้ -

  • สร้างถัง S3
  • สร้างบทบาทที่ได้รับอนุญาตให้ทำงานกับ s3 และ lambda
  • สร้างฟังก์ชันแลมด้าและเพิ่ม s3 เป็นทริกเกอร์

ตัวอย่าง

ให้เราดูขั้นตอนเหล่านี้ด้วยความช่วยเหลือของตัวอย่างซึ่งแสดงการโต้ตอบพื้นฐานระหว่าง Amazon S3 และ AWS Lambda

  • ผู้ใช้จะอัปโหลดไฟล์ในที่เก็บข้อมูล Amazon S3

  • เมื่ออัปโหลดไฟล์แล้วไฟล์จะเรียกใช้ฟังก์ชัน AWS Lambda ในพื้นหลังซึ่งจะแสดงผลลัพธ์ในรูปแบบของข้อความคอนโซลที่อัปโหลดไฟล์

  • ผู้ใช้จะสามารถเห็นข้อความในบันทึกของ Cloudwatch เมื่ออัปโหลดไฟล์แล้ว

แผนภาพบล็อกที่อธิบายการไหลของตัวอย่างแสดงไว้ที่นี่ -

การสร้าง S3 Bucket

ให้เราเริ่มต้นด้วยการสร้างที่เก็บข้อมูล s3 ในคอนโซล AWS โดยใช้ขั้นตอนที่ระบุด้านล่าง -

ขั้นตอนที่ 1

ไปที่บริการของ Amazon แล้วคลิก S3 ในส่วนการจัดเก็บตามที่ไฮไลต์ในภาพด้านล่าง -

ขั้นตอนที่ 2

คลิก S3 storage และ Create bucket ซึ่งจะจัดเก็บไฟล์ที่อัปโหลด

ขั้นตอนที่ 3

เมื่อคุณคลิก Create bucket คุณจะเห็นหน้าจอดังนี้ -

ขั้นตอนที่ 4

ป้อนรายละเอียด Bucket name, Select the Region แล้วคลิก Createที่ด้านล่างซ้าย ดังนั้นเราจึงสร้างถังที่มีชื่อ:workingwithlambdaands3.

ขั้นตอนที่ 5

ตอนนี้คลิกชื่อที่เก็บข้อมูลและจะขอให้คุณอัปโหลดไฟล์ดังที่แสดงด้านล่าง -

ดังนั้นเราจึงเสร็จสิ้นด้วยการสร้างที่เก็บข้อมูลใน S3

สร้างบทบาทที่ทำงานร่วมกับ S3 และ Lambda

ในการสร้างบทบาทที่ใช้ได้กับ S3 และ Lambda โปรดทำตามขั้นตอนที่ระบุด้านล่าง -

ขั้นตอนที่ 1

ไปที่บริการของ AWS และเลือก IAM ตามที่แสดงด้านล่าง -

ขั้นตอนที่ 2

ตอนนี้คลิก IAM -> Roles ดังแสดงด้านล่าง -

ขั้นตอนที่ 3

ตอนนี้คลิก Create roleและเลือกบริการที่จะใช้บทบาทนี้ เลือก Lambda แล้วคลิกPermission ปุ่ม.

ขั้นตอนที่ 4

เพิ่มสิทธิ์จากด้านล่างและคลิก Review.

ขั้นตอนที่ 5

สังเกตว่าเราได้เลือกสิทธิ์ต่อไปนี้ -

สังเกตว่านโยบายที่เราเลือกคือ AmazonS3FullAccess, AWSLambdaFullAccess และ CloudWatchFullAccess.

ขั้นตอนที่ 6

ตอนนี้ป้อนชื่อบทบาทคำอธิบายบทบาทแล้วคลิก Create Role ปุ่มด้านล่าง

ดังนั้นบทบาทของเราจึงมีชื่อว่า lambdawiths3service ถูกสร้างขึ้น

สร้างฟังก์ชัน Lambda และเพิ่ม S3 Trigger

ในส่วนนี้ให้เราดูวิธีสร้างฟังก์ชัน Lambda และเพิ่มทริกเกอร์ S3 ลงไป เพื่อจุดประสงค์นี้คุณจะต้องทำตามขั้นตอนที่ระบุด้านล่าง -

ขั้นตอนที่ 1

ไปที่ AWS Services และเลือก Lambda ตามที่แสดงด้านล่าง -

ขั้นตอนที่ 2

คลิก Lambda และทำตามขั้นตอนการเพิ่ม Name. เลือกRuntime, Roleฯลฯ และสร้างฟังก์ชัน ฟังก์ชัน Lambda ที่เราสร้างขึ้นแสดงอยู่ในภาพหน้าจอด้านล่าง -

ขั้นตอนที่ 3

ตอนนี้ให้เราเพิ่มทริกเกอร์ S3

ขั้นตอนที่ 4

เลือกทริกเกอร์จากด้านบนและเพิ่มรายละเอียดตามที่แสดงด้านล่าง -

ขั้นตอนที่ 5

เลือกที่เก็บข้อมูลที่สร้างจากเมนูแบบเลื่อนลงที่เก็บข้อมูล ประเภทกิจกรรมมีรายละเอียดดังต่อไปนี้ -

เลือก Object Created (All)เนื่องจากเราต้องการทริกเกอร์ AWS Lambda เมื่อไฟล์ถูกอัปโหลดลบ ฯลฯ

ขั้นตอนที่ 6

คุณสามารถเพิ่มคำนำหน้าและรูปแบบไฟล์ที่ใช้ในการกรองไฟล์ที่เพิ่ม ตัวอย่างเช่นเพื่อทริกเกอร์แลมด้าสำหรับภาพ. jpg เท่านั้น ให้เราเว้นว่างไว้ก่อนเพราะเราต้องทริกเกอร์ Lambda สำหรับไฟล์ทั้งหมดที่อัปโหลด คลิกAdd ปุ่มเพื่อเพิ่มทริกเกอร์

ขั้นตอนที่ 7

คุณสามารถค้นหาการแสดงทริกเกอร์สำหรับฟังก์ชัน Lambda ดังที่แสดงด้านล่าง -

มาเพิ่มรายละเอียดสำหรับฟังก์ชัน aws lambda ที่นี่เราจะใช้โปรแกรมแก้ไขออนไลน์เพื่อเพิ่มโค้ดของเราและใช้ nodejs เป็นสภาพแวดล้อมรันไทม์

ขั้นตอนที่ 8

ในการทริกเกอร์ S3 ด้วย AWS Lambda เราจะต้องใช้เหตุการณ์ S3 ในโค้ดดังที่แสดงด้านล่าง -

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

โปรดสังเกตว่าพารามิเตอร์เหตุการณ์มีรายละเอียดของ S3event เราได้ยืนยันชื่อที่เก็บข้อมูลและชื่อไฟล์ซึ่งจะถูกบันทึกเมื่อคุณอัปโหลดภาพใน S3bucket

ขั้นตอนที่ 9

ตอนนี้ให้เราบันทึกการเปลี่ยนแปลงและทดสอบฟังก์ชันแลมบ์ดาด้วย S3upload ต่อไปนี้เป็นรายละเอียดโค้ดที่เพิ่มใน AWS Lambda -

ขั้นตอนที่ 10

ตอนนี้ให้เราเพิ่มบทบาทหน่วยความจำและระยะหมดเวลา

ขั้นตอนที่ 11

ตอนนี้บันทึกฟังก์ชัน Lambda เปิด S3 จากบริการของ Amazon และเปิดที่เก็บข้อมูลที่เราสร้างไว้ก่อนหน้านี้คือworkingwithlambdaands3.

อัพโหลดภาพตามที่แสดงด้านล่าง -

ขั้นตอนที่ 12

คลิก Upload ปุ่มเพิ่มไฟล์ดังภาพ -

ขั้นตอนที่ 13

คลิก Add filesเพื่อเพิ่มไฟล์ คุณยังสามารถลากและวางไฟล์ ตอนนี้คลิกUpload ปุ่ม.

ดังนั้นเราจึงอัปโหลดภาพหนึ่งภาพในที่เก็บข้อมูล S3 ของเรา

ขั้นตอนที่ 14

หากต้องการดูรายละเอียดทริกเกอร์ไปที่บริการ AWS แล้วเลือก CloudWatch. เปิดบันทึกสำหรับฟังก์ชัน Lambda และใช้รหัสต่อไปนี้ -

exports.handler = function(event, context, callback) {
   console.log("Incoming Event: ", event);
   const bucket = event.Records[0].s3.bucket.name;
   const filename = decodeURIComponent(event.Records[0].s3.object.key.replace(/\+/g, ' '));
   const message = `File is uploaded in - ${bucket} -> ${filename}`;
   console.log(message);
   callback(null, message);
};

ผลลัพธ์ที่คุณสามารถสังเกตได้ใน Cloudwatch เป็นดังที่แสดง -

ฟังก์ชัน AWS Lambda จะถูกทริกเกอร์เมื่อไฟล์ถูกอัปโหลดในถัง S3 และรายละเอียดจะถูกบันทึกใน Cloudwatch ดังที่แสดงด้านล่าง -