Chúng ta sẽ thao tác với CDK chủ yếu qua AWS CDK Toolkit (công cụ đã được cài đặt ở phần trước). AWS CDK Toolkit sẽ chạy code của bạn, sinh ra 1 template CloudFormation và triển khai template đó. CDK Toolkit cung cấp cho người dùng khả năng có thể triển khai, so sánh, xoá và tìm lỗi trong một đoạn mã CDK. Tham khảo tài liệu chính thức của AWS về CDK
Trong phần này, chúng ta sẽ thử triển khai một VPC và public subnet tương ứng, sử dụng Python trong CDK
mkdir cdk-workshop
cd cdk-workshop
python
, tuy nhiên bạn hoàn toàn có thể chỉnh sửa thành Typescript, Javascript, Java hoặc C#cdk init app --language python
Sau khi chạy xong, bạn có thể xem qua kiến trúc thư mục vừa được khởi tạo. Chú ý đến 2 file chính là app.py và cdk_workshop/cdk_workshop_stack.py
cdk_workshop/cdk_workshop_stack.py
from aws_cdk import (
Stack,
aws_ec2 as ec2,
aws_iam as iam
)
from aws_cdk.aws_s3_assets import Asset
import os
from constructs import Construct
Trong file cdk_workshop/cdk_workshop_stack.py
, khai báo 1 VPC và 2 public subnet nằm trong VPC bằng việc thêm đoạn mã sau vào hàm __init__
# VPC
vpc = ec2.Vpc(self, "CDK-Workshop-App-VPC",
nat_gateways=0,
subnet_configuration=[ec2.SubnetConfiguration(name="public",subnet_type=ec2.SubnetType.PUBLIC)]
)
cdk init
source .venv/bin/activate
python -m pip install -r requirements.txt
cdk bootstrap
Trong lần chạy đầu tiên, chúng ta sẽ cần phải bootstrap ứng dụng CDK. Việc bootstrap này sẽ
cdk deploy
Lệnh trên tương đương với việc chạy cdk deploy –app ./app.py. Khi chạy, code trong file app.py sẽ được gọi. Đoạn code này sẽ import tài nguyên từ cdk_workshop/cdk_workshop_stack.py, và sinh ra CloudFormation template tương ứng trong thư mục cdk.out. Sau đó, CloudFormation template này sẽ được triển khai trên AWS.
Nếu bạn đã làm đến bước này, chúc mừng bạn đã triển khai thành công resource của AWS thông qua CDK!
Ở phần tiếp theo, chúng ta sẽ sử dụng VPC và subnet đã tạo để triển khai một máy chủ EC2 và cài đặt Apache server trên máy chủ đó. Chúng ta cũng sẽ làm quen với một vài tính năng khác của CDK như sinh cấu hình CloudFormation từ CDK sử dụng cdk synch
hoặc kiểm tra ChangeSet sử dụng cdk diff