[P6] L2 Constructs: Hiểu Về AWS CDK Level 2 Constructs Qua Ví Dụ Thực Tế

Sat, November 16, 2024 - 3 min read View Count
AWS CDK Deployment Process

L2 Construct: Hiểu Về AWS CDK Level 2 Constructs Qua Ví Dụ Thực Tế

Giới thiệu

AWS CDK (Cloud Development Kit) cung cấp hai loại construct chính: L1 và L2. Trong khi L1 constructs là các wrapper đơn giản cho CloudFormation resources, L2 constructs mang đến một cách tiếp cận cao cấp hơn với nhiều tính năng tự động và best practices được tích hợp sẵn.

L2 Constructs là gì?

L2 constructs là các thành phần first-class của CDK, cung cấp:

  • Cấu hình mặc định theo AWS best practices
  • Tính đóng gói (encapsulation) cao
  • Các helper methods hữu ích
  • Tự động cấu hình các L1 constructs phía sau

Đặc điểm nhận dạng: L2 constructs không bắt đầu bằng prefix ‘Cfn’ trong CDK Construct Library.

So sánh L1 và L2 Constructs

L1 ConstructsL2 Constructs
Yêu cầu hiểu biết chi tiết về resourcesChỉ cần cung cấp thông tin cơ bản
Cần cấu hình mọi thứ thủ côngTự động áp dụng best practices
Mapping 1-1 với CloudFormationCó thể tạo nhiều resources liên quan
Ít tính năng tự độngNhiều tính năng tự động và helper methods

Ví dụ Thực Tế: Tạo VPC với L2 Construct

1. Code Mẫu

import aws_cdk as cdk
import aws_cdk.aws_ec2 as ec2
 
class MyStack(cdk.Stack):
    def __init__(self, scope: cdk.App, id: str, **kwargs) -> None:
        super().__init__(scope, id, **kwargs)
        
        # Tạo VPC với L2 construct
        my_vpc = ec2.Vpc(self, "MyVpc",
            nat_gateways=0  # Tạo isolated subnets thay vì NAT gateways
        )

2. Những gì được tự động tạo ra

  • VPC với CIDR range được tính toán tự động
  • 2 public subnets và 2 isolated subnets (mặc định cho environment-agnostic stacks)
  • Internet Gateway và VPC Gateway Attachment
  • Route tables cho mỗi subnet
  • Security group mặc định với các rules được optimize
  • Custom resource để restrict default security group (best practice)

3. Các tính năng tự động của L2 VPC construct

  • Tự động chia CIDR blocks cho các subnets
  • Tự động cấu hình routing
  • Tự động áp dụng security best practices
  • Hỗ trợ multi-AZ deployment

Best Practices khi sử dụng L2 Constructs

  1. Đọc documentation kỹ:

    • Xem overview của package (ví dụ: aws_ec2)
    • Tham khảo construct reference để hiểu các parameters
    • Chú ý các deprecated parameters
  2. Sử dụng defaults khi có thể:

    • L2 constructs được thiết kế với các defaults theo best practices
    • Chỉ override khi thực sự cần thiết
  3. Tận dụng helper methods:

    • Sử dụng các methods có sẵn để cấu hình permissions, security groups, alarms
    • Tránh cấu hình thủ công không cần thiết

Kết luận

L2 constructs là một trong những tính năng mạnh mẽ nhất của AWS CDK, cho phép developers tạo ra infrastructure phức tạp với ít code hơn và tuân thủ best practices. Thay vì phải cấu hình từng resource một như với L1 constructs, L2 constructs cho phép bạn tập trung vào business logic và để AWS CDK lo phần còn lại.

Tips Thực Tế

  1. Khi nào dùng L2 thay vì L1:

    • Khi bạn muốn nhanh chóng setup infrastructure theo best practices
    • Khi không cần customize quá nhiều
    • Khi muốn giảm thiểu boilerplate code
  2. Debug và Troubleshooting:

    • Sử dụng cdk synth để xem CloudFormation template được generate
    • Check CloudFormation console để xem các resources được tạo ra
    • Đọc kỹ error messages khi deploy fails