Skip to content
Khoá học AWSServerless trong AWSLambda Execution & Deployment

Execution Environment trong Lambda

Khi một Lambda function được gọi, AWS sẽ tạo một Execution Environment (môi trường thực thi) để chạy code. Đây là một container nhẹ chứa:

  • Runtime (Node.js, Python, Java, Go, v.v.)
  • Bộ nhớ (memory) và CPU được phân bổ theo cấu hình
  • Thư viện và code của bạn

Cold Start vs Warm Start

  • Cold Start: xảy ra khi Lambda cần khởi tạo Execution Environment mới. Bao gồm việc tải code, runtime và khởi động function → thường gây độ trễ cao hơn.
  • Warm Start: nếu môi trường thực thi vẫn chưa bị thu hồi (Warm), Lambda sẽ tái sử dụng → response nhanh hơn nhiều.

Best practice:

  • Dùng Provisioned Concurrency để giảm thiểu cold start.
  • Giữ code nhỏ gọn, hạn chế dependency không cần thiết.

Deployment Options

Có nhiều cách để triển khai Lambda function, tuỳ thuộc vào workflow của bạn:

1. Upload trực tiếp

  • Viết code trên AWS Console hoặc upload file .zip.
  • Phù hợp với thử nghiệm hoặc function nhỏ.

2. S3 Deployment Package

  • Upload code (ZIP) lên S3 rồi tham chiếu trong Lambda.
  • Phù hợp khi function lớn hơn 10MB hoặc khi CI/CD.

3. IaC (Infrastructure as Code)

  • AWS SAM (Serverless Application Model): template chuyên biệt cho Lambda & Serverless.
  • Serverless Framework: Framework open-source, rất phổ biến
  • AWS CDK (Cloud Development Kit): code-first IaC, hỗ trợ TypeScript, Python, Java.
  • Terraform / Pulumi: công cụ IaC của bên thứ ba.

4. Container Image

  • Lambda hỗ trợ container image lên đến 10GB.
  • Dùng khi ứng dụng có nhiều dependency phức tạp.
  • Triển khai qua Amazon ECR.

Lambda Layers là gì?

  • Layers cho phép tách biệt thư viện và dependency ra khỏi function code.
  • Giúp giảm kích thước package, tái sử dụng cho nhiều function.
    • Layers có thể chứa “shared utils” để có thể tái sử dụng
  • Ví dụ: một layer chứa pandas hoặc numpy, nhiều Lambda có thể dùng chung.
  • Một function có thể attach tối đa 5 Layers.
  • Một Layer có nhiều version khác nhau, bạn có thể attach các version một cách linh hoạt

Versioning và Aliases

  • Version: mỗi lần deploy có thể tạo ra một Version Immutable (bất biến) của function.
    • Đây là Snapshot của Function ở một thời điểm nhất định
    • Giúp có thể rollback nhanh khi deploy lỗi
  • Alias: trỏ đến một version cụ thể, giống như là Tag của Function giúp dễ dàng quản lý môi trường (dev, test, prod).
    • VD: Prod -> Version 5, Stag -> Version 4
    • Khi đó, nếu muốn gọi đến Prod thì sẽ là ARN:
    • arn:aws:lambda:region:account-id:function:sampleFunc:Prod
  • Hỗ trợ Traffic Shifting (triển khai dần dần - canary release). Thay vì tất cả sẽ đề chạy trên version X thì có thể:
    • 90% request → version cũ (ổn định).
    • 10% request → version mới (đang thử nghiệm).

Tóm tắt

  • Lambda chạy trong Execution Environment, có cold start & warm start.
  • Nhiều cách triển khai: Console, S3, IaC, Container.
  • Lambda Layers giúp quản lý dependency tốt hơn.
  • Version & Alias hỗ trợ kiểm soát release an toàn.