Tôi đã làm theo một hướng dẫn tuyệt vời (Serverless Stack) tạo ra một cơ sở hạ tầng không có máy chủ CRUD điển hình với giao diện người dùng phản ứng. Nó đang sử dụng Serverless Framework cho AWS.Frameworkless Server: cách để đạt được đầy đủ "cơ sở hạ tầng như mã"?
Điều tôi không thích là để khởi động thiết lập, có rất nhiều thao tác nhấp bằng tay trong GUI (chủ yếu là giao diện điều khiển của Amazon) có liên quan. I E. thiết lập không phải là phiên bản được kiểm soát và không dễ tái sản xuất. Nó sẽ không dễ dàng để mở rộng nó với một quá trình CI/CD, vv Trong ví dụ này các nguồn lực sau đây cần phải được thiết lập bằng tay:
- AWS Cognito tài Pool
- AWS Cognite tài Pool Application
- AWS Cognito định liên đoàn Pool
- AWS DynamoDB dụ
- xô AWS S3 (x3) (điều này cũng tổ chức các frontend) phân phối
- AWS CloudFront
- Tệp vùng AWS Route53
Tài nguyên duy nhất được xây dựng từ mã là các chức năng không có máy chủ (lambdas), cũng như các trường hợp cổng API. Đây là những gì mà khung máy chủ không sử dụng tệp serverless.yml của nó. Nhưng tất cả các tài nguyên trên là không phải được tạo tự động. Đôi khi chúng cần phải là referenced to sử dụng ARN của chúng, nhưng chúng không được tạo bởi cấu hình serverless.yml. Việc chạy một hệ thống như vậy trong sản xuất (phụ thuộc rất nhiều vào việc tạo ra các dịch vụ thủ công thông qua GUI) sẽ có vẻ nguy hiểm.
Tôi đã nghĩ rằng một giải pháp cho điều này sẽ là sử dụng Terraform hoặc Cloudformation. Nhưng bản thân Serverless Framework đang sử dụng Cloudformation để thiết lập Lambdas, mặc dù không phải cho các tài nguyên khác. Vậy làm thế nào để loại bỏ khoảng cách này? Nói cách khác, làm cách nào để xây dựng lại toàn bộ thiết lập được mô tả tại Serverless Stack trong mã?
Có vẻ lạ, và có lẽ không thể, để thiết lập CloudFormation Serverless, sau đó có các mẫu Cloudformation của riêng nó để thiết lập lambdas. Nó có thể có ý nghĩa hơn để mở rộng Serverless Framework để không chỉ xác định các chức năng và API Gateways cần được tạo trên serverless deploy
, mà còn các tài nguyên khác như DynamoDB hoặc Cognito User Pool. Có bất kỳ ví dụ hoặc nỗ lực nào của những người làm việc này không?