aws CI/CD 工作流程的最佳路径是啥? Cloudformation、SAM 还是无服务器框架?

Posted

技术标签:

【中文标题】aws CI/CD 工作流程的最佳路径是啥? Cloudformation、SAM 还是无服务器框架?【英文标题】:Which is the best path to take for aws CI/CD workflow? Cloudformation, SAM or Serverless framework?aws CI/CD 工作流程的最佳路径是什么? Cloudformation、SAM 还是无服务器框架? 【发布时间】:2020-02-25 03:47:59 【问题描述】:

需要使用 cloudformation、sam 和 serverless 框架来部署 nodejs 应用程序的专家的意见。

请告知最佳路径我使用了无服务器框架,但没有使用 sam 或 cloudformation,虽然我同意它简化了流程,但我希望了解更多有关底层配置的信息。

我倾向于 cloudformation 只是因为这两个框架都将代码转换为 cloudformation 模板。如果我错了,请纠正我,并感谢学习相同内容的最佳资源。

【问题讨论】:

【参考方案1】:

SAM 基本上是 Cloudformation 的扩展。如果您了解 SAM,则您基本上了解 Cloudformation。 SAM 可以而且应该与 Cloudformation 结合使用以进行本地测试。

无服务器是 Cloudformation 之上的一个抽象层。它有助于加快应用程序的创建和部署。如果你在做更高级的配置,那就不够了

我总是倾向于 Cloudformation(或 SAM),因为它是由 CSP(即 AWS)提供的。这意味着所有新事物都将自动可用,而不是等待抽象层(如无服务器)获得支持。

【讨论】:

我会警告这一点,通常立即可用。我知道 AWS cli 上的某些功能仍然无法通过 Cloudformation 获得(即某些 Cognito 属性)【参考方案2】:

我推荐无服务器框架。优点有几个:

语法比 CloudFormation 简单得多 比 CloudFormation 更便携(您可以在云提供商之间进行更改) 如果需要,可以在 serverless.yml 中编写原始 CloudFormation 内联 易于部署(只需运行sls deploy

如果您有兴趣,我的 gitlab 个人资料中有一个示例项目(适用于 GoLang,但原理与其他运行时相同)https://gitlab.com/montao/aws-lambda-go-gitlab-sls

【讨论】:

OP 希望了解更多底层配置,并且已经熟悉 serverless 框架。抽象层在某种程度上掩盖了幕后发生的事情。【参考方案3】:

LostJon 是绝对正确的,因为 CloudFormation 和 SAM 的支持立即可用,因为它是由 AWS 本机提供的。我倾向于 CloudFormation,因为它具有确定性的结果,这在 DevOps 环境中是需要的。除非您向 CloudFormation 堆栈显式添加转换,否则不会有任何转换。

当您使用 SAM 部署 CloudFormation 模板时,您将能够在 AWS 控制台中查看 CloudFormation 模板,但您也可以选择显示呈现的模板(例如在转换后),以便了解 SAM 的用途你在水下。您可以复制呈现的资源并将它们用作纯 CloudFormation。这使您可以加快开发速度,同时不会失去了解底层配置的好处。

【讨论】:

不能再同意了。 Cloudformation 也非常简单,只需执行几次即可。

以上是关于aws CI/CD 工作流程的最佳路径是啥? Cloudformation、SAM 还是无服务器框架?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Nx 在 Jenkins 中进行 CI/CD 的最佳方式

Gitlab CI/CD 中设置 Python 虚拟环境的最佳实践是啥

在 gitlab CI/CD 中使用 GOOGLE_APPLICATION_CREDENTIALS 的最佳实践

Amazon EKS 与 JFrog Artifactory容器化CI/CD发布的最佳实践

AWS中ETL流程的最佳方式是啥

Redshift 的最佳加载路径是啥?