
ที่มาภาพ: 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



