AWS

Ôn thi AWS DVA-C02: AWS Lambda deployment

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:

  1. Source: Lấy code từ GitHub, CodeCommit, S3…
  2. Build: Sử dụng CodeBuild để biên dịch, test, package
  3. 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:

  1. Publish phiên bản mới
  2. Tạo/cập nhật alias với traffic split
  3. Giám sát metrics
  4. 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.

13 Views

Leave a Reply

Your email address will not be published. Required fields are marked *