我遵循了一个优秀的指南(无服务器堆栈),它创建了一个带有反应前端的典型 CRUD 无服务器基础架构。它使用 AWS 的无服务器框架。
我不喜欢的是,为了引导设置,需要在 GUI(主要是亚马逊的控制台界面)中进行大量手动点击。即设置不受版本控制并且不容易重现。使用 CI/CD 流程等进行扩展并不容易。在此示例中,需要手动设置以下资源:
- AWS Cognito 用户池
- AWS Cognite 用户池应用程序
- AWS Cognito 联合身份池
- AWS DynamoDB 实例
- AWS S3 存储桶 (x3)(这也托管了前端)
- AWS CloudFront 分布
- AWS Route53 区域文件
从代码构建的唯一资源是无服务器函数 (lambda) 本身以及 API 网关实例。这就是无服务器框架使用其serverless.yml文件所做的事情。但上述所有资源都不会自动创建。有时需要引用它们以使用它们的 ARN,但它们不是由 serverless.yml 配置创建的。在生产中运行这样的系统(严重依赖于通过 GUI 手动创建服务)似乎是有风险的。
我在想一个解决方案是使用 Terraform 或 Cloudformation。但是无服务器框架本身已经在使用 Cloudformation 来设置 Lambda,尽管还没有用于其他资源。那么如何消除这种差距呢?换句话说,如何在代码中重建无服务器堆栈中描述的整个设置?
让 CloudFormation 设置 Serverless 看起来很奇怪,而且可能是不可能的,然后它有自己的 Cloudformation 模板来设置 lambdas。扩展无服务器框架可能更有意义,不仅可以定义需要在serverless deploy
. 有没有人这样做的例子或尝试?