วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย

ที่มาภาพ: Unknown Source

วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย

⚡ สรุป 30 วิ

บทความนี้จะอธิบายวิธีตั้งค่า AWS Lambda ให้ทำงานร่วมกับกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย เราจะครอบคลุมตั้งแต่การเตรียมสิ่งจำเป็น การสร้าง IAM Role ไปจนถึงขั้นตอนการเขียน workflow ในไฟล์…

Overview — Overview

บทความนี้จะอธิบายวิธีตั้งค่า AWS Lambda ให้ทำงานร่วมกับกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย เราจะครอบคลุมตั้งแต่การเตรียมสิ่งจำเป็น การสร้าง IAM Role ไปจนถึงขั้นตอนการเขียน workflow ในไฟล์ `.yml`

เป้าหมายคือให้คุณสามารถอัตโนมัติ Deploy ฟังก์ชัน Lambda ทุกครั้งที่มีการ push โค้ดใหม่โดยไม่เปิดเผยข้อมูลลับหรือทำให้ระบบเสียหาย


สิ่งที่ต้องเตรียม — Prerequisites

ก่อนเริ่มควรตรวจสอบว่ามีสิ่งต่อไปนี้ครบแล้ว

  • บัญชี AWS ที่สามารถสร้าง IAM Role และ Lambda Function ได้
  • Repository บน GitHub พร้อมโค้ดของ Lambda (ภาษา Python, Node.js หรืออื่น ๆ)
  • สิทธิ์จัดการ Secrets ใน repository เพื่อเก็บค่า AWS_ACCESS_KEY_ID และ AWS_SECRET_ACCESS_KEY
  • ความเข้าใจพื้นฐานเกี่ยวกับ YAML และ GitHub Actions
**Tip: หากยังไม่มี IAM User ที่ใช้สำหรับ CI/CD ให้สร้างใหม่โดยกำหนดสิทธิ์เฉพาะที่จำเป็นเท่านั้น

สร้าง IAM Role สำหรับ Lambda — Create IAM Role

IAM Role จะทำหน้าที่ให้ Lambda สามารถเข้าถึงทรัพยากรอื่น ๆ ของ AWS ได้ พร้อมกับใช้ในขั้นตอน Deploy

  • เปิด Console IAM Roles Create role
  • เลือก AWS service Lambda เป็น trusted entity
  • แนบ Policy ที่จำเป็น เช่น `AWSLambdaBasicExecutionRole` และ `AmazonS3ReadOnlyAccess` (หรือเพิ่มตามความต้องการ)
  • ตั้งชื่อ Role ให้สื่อความหมาย เช่น `ci-cd-lambda-deploy-role`
  • บันทึก ARN ของ Role ไว้ใช้ในขั้นตอนต่อไป
**สำคัญ: อย่าใส่ Policy ที่ให้สิทธิ์เต็ม (`AdministratorAccess`) เพื่อลดความเสี่ยงจากการโจมตี

สร้าง Lambda Function เบื้องต้น — Create Lambda Function

เราจะสร้างฟังก์ชันเปล่าว่างเพื่อทดสอบกระบวนการ Deploy

  • ไปที่ Console Lambda Create function
  • เลือก Author from scratch ใส่ชื่อและ Runtime ที่ต้องการ (เช่น Python 3.11)
  • ในส่วน Permissions ให้เลือก “Use an existing role” แล้วเลือก Role ที่สร้างไว้ในข้อก่อนหน้า
  • กด Create function

ตอนนี้คุณมี Function ARN พร้อมใช้งานแล้ว


ตั้งค่า Secrets ใน GitHub — Configure GitHub Secrets

เพื่อให้ Workflow สามารถเข้าถึง AWS ได้อย่างปลอดภัย เราจะเก็บคีย์ใน Secrets ของ Repository

  • ไปที่ Repository Settings Secrets and variables Actions New repository secret
  • สร้าง Secret ชื่อ `AWS_ACCESS_KEY_ID` และใส่ค่า Access Key ID ของ IAM User ที่มีสิทธิ์ `sts:AssumeRole` ไปยัง Role ด้านบน
  • สร้าง Secret ชื่อ `AWS_SECRET_ACCESS_KEY` ใส่ค่า Secret Access Key เดียวกัน
  • เพิ่ม Secret อีกตัวชื่อ `LAMBDA_ROLE_ARN` เพื่อเก็บ ARN ของ IAM Role ที่สร้าง
**Tip: ใช้ IAM User ที่มี policy `sts:AssumeRole` แทนการให้สิทธิ์เต็มแก่ Secrets

เขียน Workflow ใน GitHub Actions — Write GitHub Actions Workflow

ไฟล์ workflow จะอยู่ในโฟลเดอร์ `.github/workflows/ci-cd-lambda.yml`

```yaml name: Deploy Lambda CI/CD

on: push: branches: [ main ]

jobs: deploy: runs-on: ubuntu-latest

steps:

  • name: Checkout code

uses: actions/checkout@v3

  • name: Set up Python

uses: actions/setup-python@v4 with: python-version: '3.11'

  • name: Install AWS CLI

run: | pip install --upgrade awscli

  • name: Configure AWS credentials

env: AWS_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }} AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }} run: | aws configure set default.region us-east-1 aws configure set default.output json

  • name: Package Lambda code

run: | zip -r function.zip . -x "*.git*"

  • name: Deploy to AWS Lambda

env: LAMBDA_ROLE_ARN: ${{ secrets.LAMBDA_ROLE_ARN }} run: | aws lambda update-function-code \ --function-name your-lambda-name \ --zip-file fileb://function.zip

  • name: Verify deployment

run: | aws lambda get-function-configuration \ --function-name your-lambda-name \ | grep 'LastModified' ```

รายละเอียดขั้นตอนสำคัญ

  • Checkout code ดึงโค้ดจาก repository
  • Set up Python หรือ Runtime ที่ตรงกับ Lambda ของคุณ
  • Install AWS CLI เพื่อติดต่อ AWS จาก runner
  • Configure AWS credentials ใช้ Secrets เพื่อกำหนดค่าแบบชั่วคราว
  • Package Lambda code ทำการบีบอัดไฟล์ทั้งหมดเป็น zip
  • Deploy to AWS Lambda ใช้คำสั่ง `aws lambda update-function-code` อัพเดทฟังก์ชันโดยตรง
  • Verify deployment ตรวจสอบว่าเวอร์ชันใหม่ถูกโหลดเรียบร้อย
**Tip: หากต้องการสร้างหรืออัปเดต Function พร้อม Role ให้ใช้ `aws lambda create-function` แทน `update-function-code`

การตรวจสอบและทดสอบหลัง Deploy — Post‑Deployment Test

เมื่อ Workflow รันสำเร็จ ควรทำการตรวจสอบเพื่อยืนยันว่าฟังก์ชันทำงานตามที่คาดหวัง

  • ตรวจสอบ Log ของ Lambda ใน CloudWatch เพื่อดูว่าไม่มีข้อผิดพลาดใด ๆ
  • สร้าง test event ผ่าน Console หรือใช้ CLI: `aws lambda invoke --function-name your-lambda-name out.txt`
  • เปรียบเทียบผลลัพธ์กับ expectation และทำการแก้ไขโค้ดต่อไป
ขั้นตอนวิธีตรวจสอบ
Deploy สำเร็จตรวจดูสถานะของ Job ใน GitHub Actions (green)
ฟังก์ชันทำงานดู Log ใน CloudWatch หรือผลลัพธ์จาก `invoke`
ความปลอดภัยตรวจสอบ IAM Role มี Policy ที่จำกัดอย่างเหมาะสม

เคล็ดลับความปลอดภัยเพิ่มเติม — Security Tips

  • ใช้ MFA บน IAM User ที่สร้าง Secrets เพื่อป้องกันการเข้าถึงโดยไม่ได้รับอนุญาต
  • ตั้งค่า IP allow‑list ใน GitHub Actions runner (เช่นใช้ self‑hosted runner) เพื่อลดการเปิดเผยคีย์สู่สาธารณะ
  • เปิดใช้งาน AWS CloudTrail ตรวจสอบทุกกิจกรรม AssumeRole และ Deploy Lambda
  • กำหนด Secret rotation อย่างน้อยเดือนละ 1 ครั้ง เพื่อจำกัดผลกระทบหาก Secrets รั่วไหล
**สำคัญ: อย่าเก็บไฟล์ `aws_credentials` ไว้ใน repository แม้ว่าจะอยู่ใน `.gitignore` ก็ตาม

Summary — Summary

สรุปขั้นตอนหลักที่ควรจำเพื่อทำ CI/CD ของ AWS Lambda ผ่าน GitHub Actions อย่างปลอดภัย

  • สร้าง IAM Role ที่มีสิทธิ์ขั้นต่ำและบันทึก ARN
  • ตั้งค่า Secrets ใน GitHub ด้วยคีย์ที่มีการ AssumeRole ไปยัง Role นั้น
  • เขียน workflow ที่ติดตั้ง AWS CLI, แพ็คโค้ดเป็น zip และใช้ `aws lambda update-function-code`
  • ตรวจสอบผลลัพธ์ด้วย CloudWatch และ CLI หลัง Deploy เสร็จ
  • ปรับเพิ่มมาตรการความปลอดภัย เช่น MFA, IP allow‑list, CloudTrail และ rotation ของ Secrets

เมื่อทำตามขั้นตอนเหล่านี้ คุณจะได้ระบบ CI/CD ที่อัตโนมัติ ลดข้อผิดพลาดจากการ Deploy ด้วยตนเอง พร้อมรักษาความปลอดภัยของข้อมูลและโครงสร้างพื้นฐานบน AWS อย่างเข้มงวด.

แชร์บทความนี้:

ชอบบทความแบบนี้?

สมัคร AI Automate Weekly Newsletter — รับเคล็ดลับ AI + how-to ใหม่
ทุกสัปดาห์ตรงถึง inbox ฟรี ไม่มีสแปม

แหล่งข่าวต้นฉบับ

ชื่อต้นฉบับ
วิธีกำหนดค่าและใช้งาน AWS Lambda ในกระบวนการ CI/CD ผ่าน GitHub Actions อย่างปลอดภัย
ผู้เขียน
กองบรรณาธิการ Thai Tech News
แหล่ง
บทความต้นฉบับ Thai Tech News · ช่วยร่างด้วย AI, เรียบเรียง/ตรวจสอบโดยกองบรรณาธิการ
วันที่เผยแพร่
7 สิงหาคม 2569 เวลา 17:51

Related

บทความที่เกี่ยวข้อง

วิธีสร้างระบบตรวจจับฟิชชิงอีเมลด้วยโมเดล AI บนเซิร์ฟเวอร์ Linux อย่างปลอดภัยGrowth
7 สิงหาคม 2569 เวลา 19:00

วิธีสร้างระบบตรวจจับฟิชชิงอีเมลด้วยโมเดล AI บนเซิร์ฟเวอร์ Linux อย่างปลอดภัย

การตรวจจับฟิชชิงอีเมลด้วยโมเดล AI เป็นวิธีที่มีประสิทธิภาพในการปกป้ององค์กรจากการโจมตีแบบ Social Engineering ระบบนี้ต้องทำงานบนเซิร์ฟเวอร์ Linux ที่มั่นคงและปลอดภัย บทความนี้จะสรุปขั้นตอนตั้งแต่เตรียม…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีตั้งค่าและใช้ Rclone สำรองข้อมูลจาก macOS ไปยัง คลาวด์สตอเรจ อย่างปลอดภัยGrowth
7 สิงหาคม 2569 เวลา 11:30

วิธีตั้งค่าและใช้ Rclone สำรองข้อมูลจาก macOS ไปยัง คลาวด์สตอเรจ อย่างปลอดภัย

การสำรองข้อมูลจาก macOS ไปยังคลาวด์สตอเรจโดยใช้ **Rclone** เป็นวิธีที่ปลอดภัยและยืดหยุ่น เนื่องจาก Rclone รองรับบริการเก็บข้อมูลหลากหลายแบบเช่น Google Drive, Amazon S3, Backblaze B2 ฯลฯ บทความนี้จะพาไ…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
วิธีตั้งค่า GitHub Actions Matrix Build เพื่อตรวจสอบความเข้ากันได้ของแอปหลายแพลตฟอร์มอย่างปลอดภัยGrowth
6 สิงหาคม 2569 เวลา 20:30

วิธีตั้งค่า GitHub Actions Matrix Build เพื่อตรวจสอบความเข้ากันได้ของแอปหลายแพลตฟอร์มอย่างปลอดภัย

GitHub Actions ให้คุณสร้าง *workflow* อัตโนมัติสำหรับการทดสอบและปล่อยซอฟต์แวร์ การใช้ **Matrix Build** ช่วยให้รันชุดเทสเดียวกันบนหลายแพลตฟอร์ม (Windows, macOS, Linux) พร้อมตรวจสอบความเข้ากันได้ในครั้ง…

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ7 นาที
วิธีใช้ eBPF เพื่อมอนิเตอร์ประสิทธิภาพและความปลอดภัยของระบบ Linux แบบเรียลไทม์อย่างปลอดภัยGrowth
6 สิงหาคม 2569 เวลา 19:00

วิธีใช้ eBPF เพื่อมอนิเตอร์ประสิทธิภาพและความปลอดภัยของระบบ Linux แบบเรียลไทม์อย่างปลอดภัย

**บทความนี้จะสอนคุณใช้ eBPF เพื่อติดตามประสิทธิภาพและความปลอดภัยของระบบ Linux แบบเรียลไทม์อย่างปลอดภัย**

ต้นฉบับ TTN · ร่างด้วย AI ตรวจโดยบรรณาธิการ8 นาที
คัดลอกลิงก์แล้ว!