การเข้าถึงทรัพยากรส่วนตัวใน VPC

Serverless Applications with AWS Lambda

Claudio Canales

Senior DevOps Engineer

VPC คืออะไร?

  • VPC คือเครือข่ายส่วนตัวของคุณใน AWS
  • มีทั้งพื้นที่ที่อยู่ การกำหนดเส้นทาง และการควบคุม Firewall
  • คุณเป็นผู้กำหนดว่าทรัพยากรจะเชื่อมต่อกันอย่างไร

ภาพรวมองค์ประกอบของ VPC

Serverless Applications with AWS Lambda

การเปรียบเทียบ: หมู่บ้านแบบมีประตูรั้ว

  • Subnet คือโซนย่อยของเครือข่าย
  • Security group คือกฎควบคุมการเข้าออก
  • NAT คือทางออกสู่อินเทอร์เน็ตสาธารณะ

การเปรียบเทียบกับหมู่บ้านแบบมีประตูรั้ว

Serverless Applications with AWS Lambda

ทำไมต้องรัน Lambda ใน VPC?

  • เข้าถึงทรัพยากรส่วนตัว เช่น บริการภายในหรือฐานข้อมูล
  • Security group ควบคุมว่า Lambda เชื่อมต่อกับอะไรได้บ้าง

การเข้าถึงส่วนตัวของ Lambda ใน VPC

Serverless Applications with AWS Lambda

สิ่งที่ต้องกำหนดค่า

  • เลือก subnets
  • เลือก security group
  • Lambda จะได้รับ IP ภายใน VPC เพื่อเข้าถึง endpoint ส่วนตัว

การตั้งค่า VPC และผลลัพธ์ที่ได้

Serverless Applications with AWS Lambda

Subnet: ตำแหน่งที่ฟังก์ชันทำงาน

  • Subnet กำหนดตำแหน่งของฟังก์ชันบนเครือข่าย
  • Private subnet ไม่มีเส้นทางตรงสู่อินเทอร์เน็ต
  • เลือก subnet ที่เข้าถึงสิ่งที่ handler ต้องการได้

ผลกระทบจากการเลือก Subnet

Serverless Applications with AWS Lambda

Security group: กฎ Firewall

  • Security group คือกฎ Firewall สำหรับ network interface
  • ควบคุม Traffic ขาเข้าและขาออก
  • กฎขาออกมักเป็นตัวกำหนดว่า Lambda เข้าถึงฐานข้อมูลได้หรือไม่

การเปรียบเทียบ Security group กับยาม

Serverless Applications with AWS Lambda

ENI และ Cold Start

  • ENI = Elastic Network Interface
  • Lambda อาจต้องสร้างและแนบ ENI ก่อนเรียก handler
  • การตั้งค่าเครือข่ายเพิ่มเติมนี้อาจเพิ่ม Latency ของ Cold Start

ลำดับ Cold Start ของ ENI

Serverless Applications with AWS Lambda

การเปรียบเทียบ ENI: การเสียบสายเครือข่าย

  • ENI = การเชื่อมต่อเครือข่ายของฟังก์ชัน
  • สร้างขึ้นใน subnet ที่เลือก
  • ขั้นตอนการตั้งค่าที่มากขึ้นอาจทำให้ Cold Start ช้าลง

การเปรียบเทียบ ENI กับการเสียบสายเครือข่าย

Serverless Applications with AWS Lambda

การเข้าถึงอินเทอร์เน็ตขาออก

  • Private subnet มักเข้าถึงอินเทอร์เน็ตสาธารณะไม่ได้
  • หากไม่มีเส้นทางขาออก การเรียก Public API จะหมดเวลา
  • วิธีทั่วไป: ใช้ NAT gateway

การไหลของ Traffic ขาออกผ่าน NAT Gateway

Serverless Applications with AWS Lambda

เมื่อไรจึงต้องใช้ NAT?

  • ต้องใช้ NAT เมื่อเรียก endpoint บนอินเทอร์เน็ตสาธารณะ
  • หากใช้เฉพาะทรัพยากรส่วนตัวใน VPC อาจไม่จำเป็นต้องมี NAT

แผนภาพการตัดสินใจว่าต้องใช้ NAT หรือไม่

Serverless Applications with AWS Lambda

อาการที่พบบ่อยเมื่อเครือข่ายมีปัญหา

  • Timeout บ่งชี้ว่าอาจขาด Route หรือ NAT
  • การปฏิเสธการเชื่อมต่อชี้ให้เห็นปัญหาที่กฎ Security group

รายการตรวจสอบอาการปัญหาเครือข่าย

Serverless Applications with AWS Lambda

แนวทางปฏิบัติที่ดี

  • ใช้ VPC เฉพาะเมื่อต้องการการเชื่อมต่อส่วนตัว
  • ทำให้การตั้งค่าเรียบง่ายที่สุด
  • ติดตาม Latency ของ Cold Start และข้อผิดพลาดในการเชื่อมต่อ

แนวทางปฏิบัติที่ดีสำหรับ VPC

Serverless Applications with AWS Lambda

สรุปสาระสำคัญ

  • VPC มอบเครือข่ายส่วนตัวให้กับ Lambda
  • ต้องกำหนดค่า Subnet และ Security group
  • ENI อาจเพิ่มค่าใช้จ่ายของ Cold Start
  • Private subnet ต้องใช้ NAT เพื่อเข้าถึงอินเทอร์เน็ตขาออก

การแลกเปลี่ยนของการเชื่อมต่อ VPC

Serverless Applications with AWS Lambda

มาฝึกกันเถอะ!

Serverless Applications with AWS Lambda

Preparing Video For Download...