AWS SAM và CDK cho serverless và IaC

Tự động hóa triển khai trên AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Tệp YAML 2.000 dòng

yaml

  • Một Lambda + API Gateway phình thành 2.000 dòng YAML
  • Liệt kê chi tiết mọi IAM role, log group, và permission
  • Gõ sai ngay giữa một permission policy
  • SAM và CDK rút gọn còn vài dòng
Tự động hóa triển khai trên AWS

AWS SAM trong nháy mắt

sam

  • SAM là mở rộng CloudFormation cho serverless
  • Kiểu tài nguyên gọn: AWS::Serverless::Function, ::Api
  • SAM CLI build, package, và deploy
  • Template được chuyển thành CloudFormation thuần
Tự động hóa triển khai trên AWS

Quy trình SAM

workflow

  • sam init: tạo khung dự án từ template
  • sam validate: kiểm tra template trước khi build
  • sam build: biên dịch và đóng gói mã
  • sam deploy: đẩy lên CloudFormation stack
Tự động hóa triển khai trên AWS

AWS CDK trong nháy mắt

  • Viết hạ tầng bằng TypeScript, JavaScript, Python, Java, C#, Go
  • Biên dịch sang CloudFormation với cdk synth
  • Deploy bằng cdk deploy; rebuild khi mã thay đổi
  • Cùng khái niệm stack và resource như CloudFormation

cdk

Tự động hóa triển khai trên AWS

Các cấp construct của CDK

  • L1: bao bọc 1-1 một tài nguyên CloudFormation
  • L2: construct tuyển chọn với mặc định hợp lý
  • L3: pattern gộp nhiều tài nguyên
  • Cấp cao hơn = ít dòng hơn, ít kiểm soát hơn

construct

Tự động hóa triển khai trên AWS

Khi nào dùng từng công cụ

  • CloudFormation thô: kiểm soát đầy đủ, thân thiện vận hành
  • SAM: ứng dụng serverless thuần, nhanh nhất
  • CDK: hạ tầng phức tạp, đội dùng ngôn ngữ lập trình
  • Cả ba đều deploy giống nhau ở lớp dưới

each

Tự động hóa triển khai trên AWS

Cả ba đều deploy dưới dạng CloudFormation

funnel

  • SAM transform sang CloudFormation
  • CDK synth sang CloudFormation
  • Stack tạo ra dùng chung events, drift, change set
  • Rollback hoạt động giống nhau, bất kể công cụ
Tự động hóa triển khai trên AWS

Cùng luyện tập nào!

Tự động hóa triển khai trên AWS

Preparing Video For Download...