[P2] Hướng dẫn Khởi tạo CDK App với Python trên AWS

Sun, November 10, 2024 - 4 min read View Count
AWS CDK with Python Setup Guide

Xem những bài viết cùng series

Giới thiệu

AWS CDK (Cloud Development Kit) hỗ trợ nhiều ngôn ngữ lập trình khác nhau để xây dựng infrastructure. Trong bài này, chúng ta sẽ tập trung vào việc khởi tạo một CDK app sử dụng Python và các bước thiết lập môi trường cần thiết.

Ngôn ngữ được CDK Hỗ trợ

AWS CDK hiện hỗ trợ chính thức các ngôn ngữ lập trình sau:

  • Python (≥ 3.6)
  • TypeScript (≥ 3.8)
  • JavaScript (Node.js)
  • Java (≥ Java 8)
  • C# (.NET Core ≥ 3.1)
  • Go (≥ 1.18)

Thiết lập Môi trường Python

1. Cài đặt Python

Trước khi bắt đầu với CDK, bạn cần đảm bảo môi trường Python được cài đặt đúng cách:

  • Tải Python từ python.org

  • Đối với Windows: Đảm bảo check option “Add python to PATH”

  • Kiểm tra cài đặt:

    # Windows
    python --version
     
    # Mac/Linux
    python3 --version

2. Cài đặt pip

Pip là package manager của Python, cần thiết để cài đặt các dependencies:

# Kiểm tra phiên bản pip
pip --version  # Windows
pip3 --version # Mac/Linux
 
# Nâng cấp pip
python -m pip install --upgrade pip

Khởi tạo CDK App

1. Tạo Project Folder

mkdir my_first_cdk_app
cd my_first_cdk_app

2. Khởi tạo CDK App với Template

cdk init sample-app --language python

Cấu trúc Project CDK

1. Thư mục chính

Project CDK với Python có cấu trúc chuẩn như sau:

my_first_cdk_app/
├── .venv/                  # Python virtual environment
├── my_first_cdk_app/      # Package chứa code CDK
│   ├── __init__.py
│   └── my_first_cdk_app_stack.py
├── tests/                  # Package chứa unit tests
│   └── unit/
│       └── test_my_first_cdk_app_stack.py
└── app.py                 # Entry point của CDK app

2. Files Config Quan Trọng

  • cdk.json: Cấu hình cho CDK app

    {
      "app": "python3 app.py",
      "watch": {
        "include": ["**"],
        "exclude": ["README.md", "cdk*.json", "requirements*.txt", "source.bat", "**/__pycache__"]
      }
    }
  • requirements.txt: Dependencies cho production

    aws-cdk-lib==2.x.x
    constructs>=10.0.0,<11.0.0
  • requirements-dev.txt: Dependencies cho development

    pytest==6.2.5

Thiết lập Môi trường Phát triển

1. Kích hoạt Virtual Environment

# Windows PowerShell
.venv\Scripts\Activate.ps1
 
# Mac/Linux
source .venv/bin/activate

2. Cài đặt Dependencies

pip install -r requirements.txt
pip install -r requirements-dev.txt  # cho development

Điểm Chính Cần Nắm

  1. CDK App Templates

    Khi bạn sử dụng lệnh cdk init để khởi tạo dự án CDK, bạn có thể chọn một trong các template ứng dụng bằng tùy chọn --template hoặc -t:

    cdk init app --language python          # Sử dụng template 'app' trống cơ bản
    cdk init lib --language python          # Sử dụng template 'lib' cho custom construct
    cdk init sample-app --language python   # Sử dụng template 'sample-app' với demo code
    
    • app:
      • Đây là template trống cơ bản, cung cấp cấu trúc nền tảng cho một ứng dụng CDK.
      • Nó bao gồm các tệp cấu hình cần thiết và một stack chính rỗng, nơi bạn có thể bắt đầu thêm các resource AWS.
      • Sử dụng template này khi bạn muốn xây dựng ứng dụng từ đầu mà không có bất kỳ code mẫu nào.
    • lib: Template cho custom construct
      • Template này được thiết kế để tạo các custom construct – tức là các construct tùy chỉnh có thể tái sử dụng.
      • Nó thiết lập cấu trúc dự án phù hợp cho việc phát triển và đóng gói các custom construct, giúp bạn dễ dàng chia sẻ chúng giữa các dự án hoặc publish như một thư viện.
      • Sử dụng template này nếu bạn muốn tạo các sẵn construct logic hạ tầng phức tạp, nhằm tái sử dụng hoặc chia sẻ với cộng đồng.
    • sample-app: Template với demo code
      • Đây là template bao gồm code demo và các tài nguyên mẫu được định nghĩa sẵn.
      • Nó giúp bạn hiểu cách định nghĩa các stack và tài nguyên trong CDK thông qua ví dụ thực tế.
      • Đây là điểm bắt đầu khá ổn nếu bạn mới làm quen với CDK và muốn xem cách triển khai infra bằng code.
  2. Các ưu điểm của Virtual Environment

    • Tách biệt dependencies giữa các projects
    • Tránh conflicts về versions
    • Dễ dàng reproduce môi trường development
  3. Project Structure

    • Tuân theo chuẩn Python package
    • Dễ dàng mở rộng và maintain
    • Hỗ trợ testing từ đầu

Lưu ý Quan trọng

1. Về Python Version

  • Windows thường sử dụng lệnh pythonpip
  • Mac/Linux thường sử dụng python3pip3
  • Đảm bảo sử dụng đúng version cho môi trường của bạn

2. Virtual Environment Best Practices

  • Luôn active virtual environment trước khi làm việc với project

  • Kiểm tra virtual environment đang active:

    # Kiểm tra pip đang sử dụng
    pip -V
     
    # Kiểm tra python đang sử dụng
    which python  # Mac/Linux
    where python  # Windows

3. Common Issues và Giải pháp

  • Permission Denied: Sử dụng sudo cho Mac/Linux hoặc run as Administrator trên Windows
  • Module Not Found: Kiểm tra virtual environment và cài đặt lại dependencies
  • Version Conflicts: Xem xét sử dụng pip freeze để lock versions

Kết luận

Thiết lập một CDK app với Python là bước đầu tiên quan trọng trong hành trình sử dụng Infrastructure as Code trên AWS. Với môi trường được cấu hình đúng cách, bạn có thể tận dụng sức mạnh của Python để định nghĩa infrastructure một cách hiệu quả và maintainable.

Trong các bài tiếp theo, chúng ta sẽ tìm hiểu cách xây dựng các CDK constructs và triển khai infrastructure thực tế trên AWS.