【发布时间】:2018-04-02 08:49:26
【问题描述】:
我遵循了一个出色的指南 (Serverless Stack),该指南创建了一个带有反应前端的典型 CRUD 无服务器基础架构。它为 AWS 使用 Serverless Framework。
我不喜欢引导设置,涉及到大量手动单击 GUI(主要是 Amazon 的控制台界面)。 IE。该设置不受版本控制,不易重现。使用 CI/CD 流程等进行扩展并不容易。在此示例中,需要手动设置以下资源:
- AWS Cognito 用户池
- AWS Cognite 用户池应用程序
- AWS Cognito 联合身份池
- AWS DynamoDB 实例
- AWS S3 存储桶 (x3)(这也托管 frontend)
- AWS CloudFront 分布
- AWS Route53 区域文件
使用代码构建的唯一资源是无服务器函数 (lambda) 本身以及 API Gateway 实例。这就是无服务器框架使用其serverless.yml 文件所做的事情。但上述所有资源不是自动创建的。它们有时需要使用其 ARN 为 referenced to,但它们不是由 serverless.yml 配置创建的。在生产环境中运行这样一个系统(很大程度上依赖于通过 GUI 手动创建服务)似乎有风险。
我认为解决方案是使用 Terraform 或 Cloudformation。但是无服务器框架本身已经在使用 Cloudformation 来设置 Lambda,尽管还没有用于其他资源。那么如何消除这种差距呢?换句话说,如何在代码中重建Serverless Stack 中描述的整个设置?
让 CloudFormation 设置 Serverless 似乎很奇怪,而且可能是不可能的,然后它有自己的 Cloudformation 模板来设置 lambda。扩展无服务器框架可能更有意义,不仅可以定义需要在 serverless deploy 上创建的函数和 API 网关,还可以定义其他资源,例如 DynamoDB 或 Cognito 用户池。有没有人这样做的例子或尝试?
【问题讨论】:
标签: amazon-cloudformation terraform serverless-framework serverless