Skip to content
Go back

[AWS] AWS Lambda

Published:  at  11:45 AM

Bài viết được tham khảo và tổng hợp lại từ Jayendra’s Blog, xem bài viết gốc ở đây: https://jayendrapatil.com/aws-lambda.

Table of contents

Open Table of contents

Tính năng chính của AWS Lambda

Serverless – Không cần quản lý hạ tầng, AWS tự động cung cấp tài nguyên.

Sự kiện kích hoạt (Event-driven) – Kích hoạt từ S3, DynamoDB, API Gateway, SNS, SQS, v.v.

Tự động scale – AWS Lambda tự động mở rộng theo số lượng request.

Thanh toán theo thời gian chạy thực tế – Trả phí dựa trên số lần gọi và thời gian thực thi.

Hỗ trợ nhiều ngôn ngữ – Python, Node.js, Java, C#, Go, Ruby, v.v.

Tích hợp với AWS Services – S3, DynamoDB, API Gateway, Step Functions, SNS, SQS, v.v.

Kiến trúc và Cách hoạt động

AWS Lambda hoạt động theo mô hình sự kiện – phản hồi, tức là một event sẽ kích hoạt một hàm Lambda thực thi.

🔹 Trigger (Nguồn sự kiện): Các dịch vụ AWS hoặc HTTP/API Gateway có thể kích hoạt Lambda.

🔹 Lambda Function: Chứa mã nguồn để xử lý logic.

🔹 Execution Role: Lambda sử dụng IAM Role để có quyền truy cập các tài nguyên AWS khác.

🔹 Destination (Kết quả xử lý): Kết quả có thể được lưu vào S3, DynamoDB, SNS, CloudWatch, v.v.

📌 Ví dụ quy trình hoạt động:

  1. Người dùng tải file lên S3.
  2. S3 kích hoạt Lambda Function.
  3. Lambda xử lý file và lưu kết quả vào DynamoDB hoặc gửi thông báo qua SNS.

Cấu hình AWS Lambda

Khi tạo một hàm Lambda, cần quan tâm đến các tham số sau:

🔹 Memory (RAM) – 128MB đến 10GB (ảnh hưởng đến CPU & hiệu suất).

🔹 Timeout – Thời gian tối đa để thực thi (tối đa 15 phút).

🔹 Concurrency – Số lượng thực thi đồng thời (mặc định 1.000, có thể tăng lên).

🔹 Environment Variables – Các biến môi trường để cấu hình ứng dụng.

🔹 VPC Integration – Cho phép Lambda truy cập tài nguyên trong VPC.

Các cách kích hoạt AWS Lambda

🔹 Synchronous Invocation (Gọi đồng bộ) – Gọi trực tiếp và chờ phản hồi, ví dụ từ API Gateway hoặc SDK.

🔹 Asynchronous Invocation (Gọi bất đồng bộ) – Lambda xử lý trong nền, ví dụ từ S3, SNS.

🔹 Event Source Mapping – Lambda tự động nhận sự kiện từ SQS, DynamoDB Streams, Kinesis.

🔹 Cron Jobs (Scheduled Events) – Lambda có thể chạy theo lịch với EventBridge.

AWS Lambda Scaling & Concurrency

AWS Lambda có khả năng tự động mở rộng dựa trên số lượng request.

🔹 Concurrency Limit – Mặc định 1.000 request đồng thời, có thể tăng lên theo nhu cầu.

🔹 Provisioned Concurrency – Dự trữ tài nguyên để đảm bảo độ trễ thấp.

🔹 Throttling – Nếu vượt giới hạn, Lambda sẽ bị giới hạn và có thể trả lỗi 429 Too Many Requests.

🔹 Retries & DLQ (Dead Letter Queue) – Với lỗi bất đồng bộ, Lambda sẽ retry hoặc gửi lỗi vào SQS hoặc SNS.

AWS Lambda Security

IAM Role – Lambda cần IAM Role để truy cập các dịch vụ AWS khác.

VPC Support – Lambda có thể chạy trong VPC, truy cập RDS hoặc tài nguyên private.

KMS Encryption – Hỗ trợ mã hóa dữ liệu với AWS KMS.

Lambda Layer – Chia sẻ thư viện hoặc code chung giữa nhiều hàm Lambda.

AWS Lambda Use Cases

🔹 Xử lý file – Khi upload file vào S3, Lambda tự động resize ảnh, chuyển đổi định dạng video.

🔹 API Backend – Kết hợp với API Gateway để xây dựng API Serverless.

🔹 IoT Data Processing – Xử lý dữ liệu từ thiết bị IoT theo thời gian thực.

🔹 ETL & Data Transformation – Xử lý dữ liệu từ S3, DynamoDB, Redshift.

🔹 Automated Scaling – Kết hợp với Auto Scaling để tự động xử lý tác vụ nền.

🔹 Chatbot & AI – Kết hợp với Lex, Polly, SageMaker để triển khai AI.

📌 Ví dụ Lambda xử lý file từ S3 và lưu kết quả vào DynamoDB:

import json
import boto3

s3 = boto3.client('s3')
dynamodb = boto3.client('dynamodb')

def lambda_handler(event, context):
    bucket = event['Records'][0]['s3']['bucket']['name']
    key = event['Records'][0]['s3']['object']['key']

    response = s3.get_object(Bucket=bucket, Key=key)
    content = response['Body'].read().decode('utf-8')

    dynamodb.put_item(
        TableName='MyTable',
        Item={'FileName': {'S': key}, 'Content': {'S': content}}
    )

    return {"statusCode": 200, "body": json.dumps("Success")}

Ưu điểm và Nhược điểm của AWS Lambda

Ưu điểm 🟢Nhược điểm 🔴
Không cần quản lý serverGiới hạn timeout 15 phút
Tự động scaleKhông thể chạy các ứng dụng stateful
Trả phí theo số requestCold Start có thể gây độ trễ
Hỗ trợ nhiều ngôn ngữKhông phù hợp với workload lớn cần GPU
Tích hợp với nhiều dịch vụ AWSDung lượng package bị giới hạn

Tổng kết


Suggest Changes

Previous Post
[AWS] AWS Auto Scaling
Next Post
[AWS] EC2 Security