Amazon cloudformation 无服务器框架:实现完整“的方法”;“基础设施作为代码”吗;?
我遵循了一个优秀的指南(),该指南创建了一个典型的CRUD无服务器基础架构,其中包含react前端。它正在使用AWS的 我不喜欢的是,要引导设置,需要在GUI(主要是Amazon的控制台界面)中进行大量手动单击。即,设置不受版本控制,且不易复制。使用CI/CD进程等扩展它并不容易。在本例中,需要手动设置以下资源:Amazon cloudformation 无服务器框架:实现完整“的方法”;“基础设施作为代码”吗;?,amazon-cloudformation,terraform,serverless-framework,serverless,Amazon Cloudformation,Terraform,Serverless Framework,Serverless,我遵循了一个优秀的指南(),该指南创建了一个典型的CRUD无服务器基础架构,其中包含react前端。它正在使用AWS的 我不喜欢的是,要引导设置,需要在GUI(主要是Amazon的控制台界面)中进行大量手动单击。即,设置不受版本控制,且不易复制。使用CI/CD进程等扩展它并不容易。在本例中,需要手动设置以下资源: AWS Cognito用户池 AWS Cognite用户池应用程序 AWS Cognito联合身份池 AWS DynamoDB实例 AWS S3存储桶(x3)(该存储桶还承载 云前分
- AWS Cognito用户池
- AWS Cognite用户池应用程序
- AWS Cognito联合身份池
- AWS DynamoDB实例
- AWS S3存储桶(x3)(该存储桶还承载
- 云前分布
- AWS路由53区域文件
将CloudFormation设置为Serverless似乎很奇怪,而且可能不可能,而后者有自己的CloudFormation模板来设置lambdas。扩展Serverless框架,不仅定义需要在
Serverless deploy
上创建的函数和API网关,而且还定义其他资源(如DynamoDB或Cognito用户池),可能更有意义。有没有人已经这样做的例子或尝试?我同意关于这方面的文档将是一个很好的例子
您是对的,serverless
正在引擎盖下使用CloudFormation。该框架通过serverless.yml
的resources
键向您公开了底层的CloudFormation机制
我认为您应该将这些资源的其余部分(Cognito stuff、S3等)放在resources:
部分的serverless.yml
文件中,使用
例如,除了serverless函数外,该文件还将创建一个DynamoDB表和S3 bucket:
service: aws-nodejs # NOTE: update this with your service name
provider:
name: aws
runtime: nodejs6.10
functions:
hello:
handler: handler.deletecustomer
events:
- http:
path: /deletecustomer
method: post
cors: true
resources:
Resources:
tablenotes:
Type: AWS::DynamoDB::Table
Properties:
AttributeDefinitions:
- AttributeName: noteId
AttributeType: S
- AttributeName: userId
AttributeType: S
KeySchema:
- AttributeName: userId
KeyType: HASH
- AttributeName: noteId
KeyType: RANGE
ProvisionedThroughput:
ReadCapacityUnits: '5'
WriteCapacityUnits: '5'
mysamplebucket:
Type: AWS::S3::Bucket
Properties:
WebsiteConfiguration:
IndexDocument: index.html
ErrorDocument: error.html
AccessControl: Private
VersioningConfiguration:
Status: Suspended
如果您是CloudFormation新手,我还建议您看一看。基于@Mike Patrick的选项,增加我对无服务器框架和其他类似无服务器聚焦工具的理解 正如您所提到的,对于无服务器项目,涉及到很多资源。把它们结合在一起不是一件简单的工作。因此,选择正确的工具是很困难的 比较
Serverless框架
与Cloudformation
和Terraform
,Serverless框架是Serverless专家,Cloudformation和Terraform是GP
Cloudformation和terraform是完全的基础设施,覆盖了大部分资源
无服务器框架是一个中间层,仅用于生成Cloudformation模板,该模板主要用于无服务器相关资源
您可以直接在Cloudformation中编写所有模板,但是模板文件会很大,很难用它的JSON/Yaml模板来维护。通过使用serverless.yml
中的几十行代码,serverless框架可以生成一千或几千行的cloudformation模板。它节省了大量的时间来处理云形成代码
让无服务器框架处理所有AWS资源是没有意义的,其他工具已经做得最好了
无服务器框架仍在开发中,由于它的流行,许多开发人员每天都会参与到添加功能中。也许有一天你可以得到你所需要的,但现在你必须在某些情况下将无服务器框架与Cloudformation、Terraform或其他工具混合在一起 您肯定已经可以使用各种部署工具将几乎所有内容部署为IaC(事实上,我们每天都在工作中这样做)
如果您碰巧主要使用Serverless;,然后,您可以选择类似无服务器框架(SF)的东西来抽象使用CloudFormation(CF)时固有的复杂性/灵活性。无论CF可以做什么,SF都可以做,但SF有一个插件系统,允许运行代码来校准API(例如,可以允许您创建CF不支持的资源)