我遵循了一个出色的指南(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用户池。人们是否有过这样的例子或企图?