我遵循了一個出色的指南(Serverless Stack),它創建了一個典型的帶無響應前端的CRUD無服務器基礎結構。它使用AWS的Serverless Framework。無服務器框架:如何實現完整的「基礎架構作爲代碼」?
我不喜歡的是,引導安裝程序,有很多手動點擊圖形用戶界面(主要是亞馬遜的控制檯界面)涉及。即該設置不受版本控制,不易重現。這是不容易將其與CI/CD過程等延伸。在這個例子中,以下資源需要手動設置:
- AWS Cognito用戶羣
- AWS Cognite用戶羣的應用
- AWS Cognito聯合身份游泳池
- AWS DynamoDB例如
- AWS S3桶(X3)(這還舉辦frontend)
- AWS CloudFront的分佈
- AWS Route53區域文件
從代碼構建的唯一資源是無服務器函數(lambdas)本身以及API網關實例。這就是無服務器框架使用其文件serverless.yml的原因。但是以上所有資源都是而不是自動創建的。他們有時需要使用他們的ARN爲referenced to,但他們不是由serverless.yml配置創建的。在生產環境中運行這樣的系統(主要依賴通過GUI手動創建服務)看起來有風險。
我在想這個解決方案是使用Terraform或Cloudformation。但是無服務器框架本身已經在使用Cloudformation來設置Lambda,但不是用於其他資源。那麼如何消除這種差距呢?換句話說,如何在代碼中重建Serverless Stack中描述的整個設置?
將CloudFormation設置爲無服務器,然後使用自己的Cloudformation模板來設置lambdas似乎很奇怪,也許不可能。擴展無服務器框架可能更有意義,不僅可以定義需要在serverless deploy
上創建的函數和API網關,還可以定義其他資源,如DynamoDB或Cognito用戶池。人們是否有過這樣的例子或企圖?