Skip to main content
0
AWS

AWS Lambda คืออะไร? ใช้ยังไง?

จากบทความที่แล้วเราได้เรียนรู้วิธีการ Deploy เว็บในรูปแบบของการสร้าง VM ขึ้นมาผ่านบริการ AWS EC2 ไปกันแล้ว สำหรับวันนี้จะมาอยู่กับอีกบริการที่เป็นในรูปแบบไร้เซิร์ฟเวอร์ หรือ Serverless ด้วยบริการที่ชื่อว่า AWS Lambda มันเป็นยังไง ใช้งานยังไง ไปดูกัน!

AWS Lambda คืออิหยัง?


AWS Lambda เป็นบริการประมวลผลแบบไร้เซิร์ฟเวอร์จาก Amazon Web Services (AWS) หรือที่เรียกว่า “Serverless” บริการนี้ช่วยให้เราสามารถเรียกใช้โค้ด (ฟังก์ชัน) โดยไม่ต้องจัดการเซิร์ฟเวอร์ หมายถึงไม่ต้องจัดการดูแลพวกระบบเอง รองรับภาษาที่หลากหลาย เช่น Python, JavaScript, Java, Go, Ruby, C# ช่วยให้เราเอาเวลาไปโฟกัสที่โค้ด ลอจิกของฟังก์ชัน ไม่ต้องมาจัดการกังวลเรื่องของ Infra เหมาะสำหรับงานที่ทำงานแบบสั้นๆ เช่น การประมวลผลข้อมูล การตอบสนองต่อ event การเชื่อมต่อกับบริการอื่นๆ และที่สำคัญถ้าทำดีๆ ประหยัดค่าใช้จ่ายไปมาก ซึ่งเจ้าชื่อ Lambda เนี่ย เค้าได้แรงบันดาลใจมาจาก Lambda Calculus นั่นเอง!

แล้วมันใช้ยังไง?

โดยการที่เราจะเริ่มต้นใช้ AWS Lambda เราจะต้องมีบัญชี AWS และมีสิทธิ์ต้องเป็น administrator ด้วยนะครับ

1. เปิด Lambda console: เข้าไปที่เมนู Services ของ AWS แล้วเลือก Lambda

2. สร้างฟังก์ชันใหม่: คลิก “Create function”

3.ตั้งชื่อฟังก์ชัน: ตั้งชื่อตามที่ต้องการ เช่น “calculateArea

4.เลือก Runtime: เลือกภาษาที่คุณจะใช้ เช่น Node.js หรือ Python

ด้านบนเราจะเห็นตัวเลือกในการสร้าง Function ในภาพนี้

ซึ่งตัวเลือกต่าง ๆ มีความหมายดังนี้

Author from scratch : เริ่มจากศูนย์ เหมาะสำหรับสร้างฟังก์ชันแบบพื้นฐาน

Use a blueprint: ใช้แบบที่มีอยู่แล้ว เหมาะสำหรับงานที่มีเทมเพลตอยู่แล้ว

Container image: ใช้คอนเทนเนอร์ในการ deploy ฟังก์ชัน

วิธีการแก้ไขโค้ด Lambda ผ่านหน้าเว็บ console

โดยการเปิดแท็บ Code เพื่อเข้าไปยัง code editor

ให้เข้าไปไฟล์ชื่อ “index.mjs” ลองเอาโค้ดด้านล่างไปวางแทนที่

export const handler = async (event, context) => {
  
  const length = event.length;
  const width = event.width;
  let area = calculateArea(length, width);
  console.log(`The area is ${area}`);
        
  console.log('CloudWatch log group: ', context.logGroupName);
  
  let data = {
    "area": area,
  };
    return JSON.stringify(data);
    
  function calculateArea(length, width) {
    return length * width;
  }
};

การทำงานของโค้ดนี้

  1. Lambda function เริ่มทำงานที่ฟังก์ชัน “handler function”
  2. ฟังก์ชันรับค่าจากตัวแปร “event” ซึ่งจะมีข้อมูลสองตัวคือ “length” (ความยาว) และ “width” (ความกว้าง)
  3. ค่าความยาวและความกว้างจะถูกส่งไปยังฟังก์ชัน “calculateArea” เพื่อทำการคำนวณหาพื้นที่
  4. คำสั่ง console.log จะแสดงผลลัพธ์การคำนวณพื้นที่ลงในล็อก (เช่น The area is 42)
  5. คำสั่ง console.logอี กอัน ก็จะแสดงข้อมูลลงในล็อกเช่นกัน คือแสดงชื่อ log group ใน CloudWatch (ระบบเก็บล็อกของ AWS)
  6. สร้างข้อมูลแบบ JSON ที่ชื่อว่า “data” โดยเก็บค่าพื้นที่ที่คำนวณได้เอาไว้
  7. คำสั่ง JSON.stringify จะแปลงข้อมูล JSON ให้เป็นรูปแบบตัวอักษร (string)
  8. ฟังก์ชันส่งค่า string นี้ออกไปเป็นผลลัพธ์ (response) ของการทำงานทั้งหมด

เสร็จแล้วสามารถกดปุ่ม “Deploy” เพื่อเซฟค่าใหม่และอัพเดทโค้ดบนเว็บ

ทดสอบโค้ด Lambda ผ่าน console

โดยตัวอย่างเราจะสร้าง Event โดยการคลิกที่ “Test” เพื่อสร้าง Event จำลองมาก่อน โดยเราจะส่งข้อมูลไปที่ฟังก์ชันในรูปแบบ JSON

  • ตั้งชื่อเทสง่ายๆ เช่น “myTestEvent”
  • ใส่ค่า JSON เช่น { “length”: 6, “width”: 7 }
  • กด Save: กดปุ่ม “Save”
  • กดปุ่ม “Test” เพื่อรัน Lambda function ของเราได้เลย

หลังจากรันเสร็จ เราก็จะเห็นผลลัพธ์ (response) และล็อกการทำงานในแท็บ “Execution results” และหากต้องการดู logs ที่เก็บไว้ก่อนหน้านี้ ให้เข้าไปยัง CloudWatch Logs ได้เลย

ลบ Lambda function

หากเราต้องการลบ Lambda function สามารถไปที่หน้า “Functions” ใน Lambda console เลือก function ที่ต้องการลบ กด “Actions” แล้วเลือก “Delete” แล้วลบได้เลย!

สำหรับตอนนี้เราก็ได้ลองใช้งาน AWS Lambda เบื้องต้นไปกันแล้ว ซึ่งมันยังสามารถเอาไปต่อกับ service อื่นๆ ได้เช่น Amazon API Gateway สำหรับสร้าง API เพื่อให้คนอื่นเรียกใช้ Lambda function ของเราได้ หรือจะไปต่อกับ Amazon RDS เพื่อสร้าง Lambda function ที่สามารถเขียนหรืออ่านข้อมูลจากฐานข้อมูล Amazon RDS ได้



สามารถอ่านต่อเพิ่มเติมได้ที่



Tutorial: Using Lambda with API Gateway : https://docs.aws.amazon.com/lambda/latest/dg/services-apigateway-tutorial.html

Tutorial: Using a Lambda function to access an Amazon RDS database: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/rds-lambda-tutorial.html

Sirasit Boonklang

Author Sirasit Boonklang

More posts by Sirasit Boonklang

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

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • คุกกี้ที่จำเป็น
    เปิดใช้งานตลอด

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

  • คุกกี้สำหรับการติดตามทางการตลาด

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

บันทึกการตั้งค่า