I. Tổng quan về AWS Lambda trong đề thi DVA-C02
AWS Lambda là một trong những dịch vụ chính được đề cập trong kỳ thi AWS Certified Developer – Associate (DVA-C02). Phần triển khai (deployment) của Lambda chiếm một tỷ lệ đáng kể trong nội dung kiểm tra. Hiểu rõ về cách triển khai, cập nhật và quản lý các Lambda function là yếu tố quan trọng để vượt qua kỳ thi này.
II. Các phương pháp triển khai Lambda
1. Triển khai trực tiếp qua AWS Management Console
Các bước triển khai:
- Tạo function mới trong console
- Upload code dưới dạng ZIP hoặc viết code trực tiếp
- Cấu hình môi trường thực thi, memory, timeout
- Thiết lập IAM role và quyền truy cập
- Cấu hình trigger và destination
Kiến thức kiểm tra:
- Giới hạn kích thước deployment package (.zip): 50 MB (nén), 250 MB (giải nén)
- Các tùy chọn runtime: Node.js, Python, Java, .NET, Go, Ruby, etc.
- Hiểu về IAM permissions cần thiết cho Lambda
2. Triển khai qua AWS CLI
Các lệnh quan trọng:
# Tạo function mới
aws lambda create-function \
--function-name my-function \
--runtime python3.9 \
--role arn:aws:iam::123456789012:role/lambda-role \
--handler app.lambda_handler \
--zip-file fileb://function.zip
# Cập nhật code
aws lambda update-function-code \
--function-name my-function \
--zip-file fileb://function.zip
# Cập nhật cấu hình
aws lambda update-function-configuration \
--function-name my-function \
--timeout 30 \
--memory-size 256
Kiến thức kiểm tra:
- Cú pháp và tham số của các lệnh CLI
- Hiểu về quy trình cập nhật code và cấu hình
- Xử lý lỗi phổ biến trong deployment
3. Triển khai sử dụng AWS SAM (Serverless Application Model)
Cấu trúc SAM template:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Resources:
MyFunction:
Type: AWS::Serverless::Function
Properties:
Handler: index.handler
Runtime: nodejs14.x
CodeUri: ./my-function/
MemorySize: 128
Timeout: 3
Policies:
- AWSLambdaBasicExecutionRole
Events:
ApiEvent:
Type: Api
Properties:
Path: /hello
Method: get
Các lệnh SAM quan trọng:
# Đóng gói ứng dụng
sam package --template-file template.yaml --output-template packaged.yaml --s3-bucket my-bucket
# Triển khai ứng dụng
sam deploy --template-file packaged.yaml --stack-name my-app --capabilities CAPABILITY_IAM
Kiến thức kiểm tra:
- Cú pháp và cấu trúc SAM template
- Hiểu về SAM CLI và quy trình triển khai
- Các tùy chọn sự kiện trong SAM
4. Triển khai với AWS CloudFormation
Ví dụ CloudFormation template:
Resources:
MyLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: MyFunction
Handler: index.handler
Role: !GetAtt LambdaExecutionRole.Arn
Code:
S3Bucket: my-bucket
S3Key: function.zip
Runtime: nodejs14.x
Timeout: 30
MemorySize: 128
Environment:
Variables:
ENV_VAR_1: value1
ENV_VAR_2: value2
Kiến thức kiểm tra:
- Hiểu về resource types liên quan đến Lambda
- Quy trình cập nhật Lambda function qua CloudFormation
- Các thuộc tính và tùy chọn quan trọng
III. Lambda Deployment Packages
1. Các loại deployment package
1.1 .zip file archive:
- Code function và dependencies
- Up to 50MB (nén), 250MB (giải nén)
- Phù hợp với hầu hết các ứng dụng
1.2 Container images:
- Dựa trên Docker image format
- Up to 10GB
- Phù hợp với ứng dụng phức tạp hoặc có nhiều dependencies
Kiến thức kiểm tra:
- So sánh ưu/nhược điểm của mỗi loại package
- Giới hạn kích thước và tài nguyên
- Khi nào sử dụng mỗi loại package
2. Lambda Layers
Đặc điểm:
- Tách biệt code và dependencies
- Chia sẻ libraries giữa nhiều functions
- Tối đa 5 layers cho mỗi function
Các bước triển khai layer:
# Tạo layer mới
aws lambda publish-layer-version \
--layer-name my-layer \
--description "My dependencies" \
--license-info "MIT" \
--content S3Bucket=my-bucket,S3Key=layer.zip \
--compatible-runtimes python3.8 python3.9
# Cấu hình function sử dụng layer
aws lambda update-function-configuration \
--function-name my-function \
--layers arn:aws:lambda:region:account-id:layer:my-layer:1
Kiến thức kiểm tra:
- Cấu trúc thư mục của layer cho từng runtime
- Giới hạn và cách kết hợp layers
- Permission và version control cho layers
IV. Phiên bản và Alias trong Lambda
1. Lambda Versions
Đặc điểm:
- Mỗi function có một phiên bản $LATEST có thể chỉnh sửa
- Các phiên bản đã publish là bất biến (immutable)
- ARN format:
arn:aws:lambda:region:account-id:function:function-name:version
Các lệnh làm việc với versions:
# Publish phiên bản mới
aws lambda publish-version \
--function-name my-function \
--description "Version 1"
# Gọi phiên bản cụ thể
aws lambda invoke \
--function-name my-function:1 \
--payload '{}' \
output.txt
2. Lambda Aliases
Đặc điểm:
- Pointers đến phiên bản cụ thể
- Có thể thay đổi routing configuration
- ARN format:
arn:aws:lambda:region:account-id:function:function-name:alias-name
Các lệnh làm việc với aliases:
# Tạo alias mới
aws lambda create-alias \
--function-name my-function \
--name production \
--function-version 1 \
--description "Production environment"
# Cập nhật alias (thực hiện canary deployment)
aws lambda update-alias \
--function-name my-function \
--name production \
--function-version 2 \
--routing-config AdditionalVersionWeights={"1"=0.9}
Kiến thức kiểm tra:
- Traffic splitting giữa các phiên bản
- Blue/green deployment với aliases
- Các trường hợp sử dụng phù hợp
V. Lambda Deployment với CI/CD
1. AWS CodePipeline và CodeBuild
Quy trình CI/CD chung:
- Source: Lấy code từ GitHub, CodeCommit, S3…
- Build: Sử dụng CodeBuild để biên dịch, test, package
- Deploy: Triển khai function qua CloudFormation/SAM
Ví dụ buildspec.yml:
version: 0.2
phases:
install:
runtime-versions:
nodejs: 14
pre_build:
commands:
- npm install
build:
commands:
- npm test
- npm run build
post_build:
commands:
- aws cloudformation package --template-file template.yaml --s3-bucket ${S3_BUCKET} --output-template-file packaged.yaml
artifacts:
files:
- packaged.yaml
- appspec.yml
Kiến thức kiểm tra:
- Quy trình tích hợp và triển khai liên tục
- Các tệp cấu hình quan trọng
- Xử lý lỗi và rollback
2. AWS CodeDeploy cho Lambda
Các chiến lược triển khai:
- AllAtOnce: Chuyển 100% traffic sang phiên bản mới ngay lập tức
- Canary: Chuyển theo từng phần (10%, sau đó 90%)
- Linear: Chuyển từng bước theo tỷ lệ đều
Ví dụ appspec.yml:
version: 0.0
Resources:
- myLambdaFunction:
Type: AWS::Lambda::Function
Properties:
Name: myFunction
Alias: myAlias
CurrentVersion: 1
TargetVersion: 2
Hooks:
- BeforeAllowTraffic: PreTrafficHook
- AfterAllowTraffic: PostTrafficHook
Kiến thức kiểm tra:
- Các hook points trong quá trình triển khai
- Cấu hình deployment preferences
- Giám sát và rollback tự động
VI. Các cấu hình và tối ưu hóa quan trọng
1. Cấu hình cơ bản
Memory và CPU:
- Memory: 128MB – 10GB
- CPU: Tỷ lệ với memory (vCPU = memory / 1,769)
Timeout:
- Tối đa: 900 seconds (15 phút)
- Mặc định: 3 seconds
Concurrency:
- Reserved concurrency: Giới hạn số lượng instances
- Provisioned concurrency: Khởi tạo instances sẵn
Kiến thức kiểm tra:
- Tác động của memory đến performance
- Cách tính toán và quản lý concurrency
- Xử lý các lỗi liên quan đến concurrency limits
2. VPC Integration
Cấu hình VPC:
- Subnet IDs
- Security Group IDs
- Tạo Elastic Network Interface (ENI)
Ví dụ cấu hình:
{
"VpcConfig": {
"SubnetIds": ["subnet-071f712345678e7c8", "subnet-07fd123456789deaf"],
"SecurityGroupIds": ["sg-085912345678492fb"]
}
}
Kiến thức kiểm tra:
- IAM permissions cần thiết cho Lambda trong VPC
- Tác động của VPC configuration lên cold start
- Kết nối từ Lambda đến resources trong VPC
3. Environment Variables
Đặc điểm:
- Cặp key-value truyền vào function
- Mã hóa với KMS
- Thay đổi không yêu cầu cập nhật code
Kiến thức kiểm tra:
- Bảo mật environment variables
- Truy cập và sử dụng environment variables trong code
- Thực hành tốt nhất khi quản lý biến môi trường
VII. Các tình huống phổ biến trong đề thi
1. Deployment failures
Nguyên nhân thường gặp:
- IAM permissions không đủ
- Vượt quá giới hạn kích thước package
- Lỗi trong code function
- Thiếu dependencies
Kiến thức kiểm tra:
- Cách xác định và khắc phục lỗi
- CloudWatch Logs để debug
- Rollback strategy
2. Cold start optimization
Các phương pháp tối ưu:
- Provisioned Concurrency
- Keep-warm functions
- Tối ưu kích thước package
- Chọn memory size phù hợp
Kiến thức kiểm tra:
- So sánh các chiến lược giảm cold start
- Chi phí và lợi ích của mỗi phương pháp
- Use cases phù hợp
3. Canary deployments
Quy trình triển khai:
- Publish phiên bản mới
- Tạo/cập nhật alias với traffic split
- Giám sát metrics
- Chuyển đổi hoàn toàn hoặc rollback
Kiến thức kiểm tra:
- Cấu hình traffic split qua aliases
- Best practices cho canary testing
- Lợi ích so với các phương pháp khác
VIII. Chiến lược ôn tập
1. Tài liệu chính thức
Các phần quan trọng:
Các chủ đề ưu tiên:
- Lambda Deployment Models
- Package Types
- Versions and Aliases
- Deployment Strategies
2. Thực hành Labs
Các lab quan trọng:
- Tạo và triển khai Lambda function qua nhiều cách
- Cấu hình Canary Deployment
- Sử dụng Lambda Layers
- Thiết lập CI/CD pipeline cho Lambda
3. Câu hỏi thực hành
Tập trung vào các loại câu hỏi:
- Các phương thức triển khai Lambda
- Xử lý lỗi trong deployment
- Cấu hình versions và aliases
- Các chiến lược CI/CD với Lambda
IX. Tổng kết
Để ôn thi hiệu quả phần AWS Lambda deployment trong kỳ thi DVA-C02, cần hiểu sâu về các phương pháp triển khai (Console, CLI, SAM, CloudFormation), nắm vững các khái niệm về deployment package, versions, aliases và các cấu hình quan trọng. Thực hành triển khai Lambda theo nhiều cách khác nhau sẽ giúp củng cố kiến thức và tăng khả năng vượt qua kỳ thi.
Ngoài ra, cần chú ý đến các tình huống thường gặp trong thực tế như xử lý lỗi deployment, tối ưu cold start và các chiến lược triển khai nâng cao như canary deployment.