【问题标题】:How to test cloudformation lambda functions locally?如何在本地测试 cloudformation lambda 函数?
【发布时间】:2019-07-28 09:29:12
【问题描述】:

用例

我有大约 25 个 lambda 函数的 cloudformation 堆栈。在部署到生产环境之前,我需要在本地测试所有功能。

我知道 aws 有 SAM Cli 来测试与 cloudformation lambda 相比具有完全不同语法的无服务器函数。

aws 是否有任何可能的工具可以解决我的用例?

因为将 cfn lambda 转换为 sam 语法需要花费大量时间,而且 sam 没有 cloudformation 那么多的选项。

任何帮助表示赞赏 谢谢

【问题讨论】:

  • 所有函数的处理程序、rte 和事件触发器是否相同?您始终可以使用 aws 控制台来测试您的 lambda 函数。 medium.com/@reginald.johnson/…
  • @SushantSonker ,是的,你是对的,我们总是可以使用 aws 控制台,但是为了在那里进行测试,我们需要部署 lambda 函数。在 SAM 中,我们不部署在 aws 中,但它是在 docker 容器中完成的,我想问的是 cloudformation lambdas 是否存在任何那种类型的工具。
  • 据我所知,您有 2 个选项 - 1. 您在问题中已经提到过(编写无服务器 yaml)2. 与 @SushantSonker 相同
  • @ASR 你是对的。现在我正在使用Option 1。但希望我能找到比这更好的选择:)
  • @ASR 用于将 cloudformation lambda 转换为 sam 我正在使用 lambda 控制台 export 功能。目前 SAM 本地运行良好..

标签: aws-lambda amazon-cloudformation aws-sam-cli


【解决方案1】:

我知道您选择了 SAM cli 来构建您的模板,但我建议您迁移到无服务器 (npm i serverless -g),因为它们更高级。 Serverless 是一个由工程师构建的框架,没有附加/依赖于它的云提供商,因此您可以轻松地从您的模板从 Azure 切换到 AWS。

因为它得到了一个大型开发社区的支持,所以该框架有各种各样的插件,包括无服务器离线插件,它允许你在本地运行你的 API,就像你只是在运行 node index.js。还有用于单元测试的“serverless-jest”或“serverless-mocha”之类的插件,但我最终使用了正常的“Jest”运行集成测试(我使用 cognito 用户池并且需要检查身份验证令牌)。

如果你真的想测试你的cloudformation架构代码,你可以有一个带有你的函数的JS文件并在本地使用node运行它,而不是将代码放在你的cloudformation模板中,你需要压缩ip,上传S3,然后通知你模板上的路径。

总之,我知道您问过如何测试您的 SAM Serverless,但由于您希望有一个适当的开发流程(本地执行、单元测试、管道等),因此切换到 Serverless 框架将是解决方案。您可以通过节点模拟功能,但这会增加您对框架已经做的事情的手动管理。

【讨论】:

    猜你喜欢
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 2019-11-02
    • 2019-01-17
    • 2019-06-03
    • 1970-01-01
    相关资源
    最近更新 更多