我需要创建一个集成项目,它在执行时应该启动所有 aws mock 服务,例如S3、API 网关、SQS、Dynamo db和SSM。我们使用serverless.com 框架在内部使用上述 AWS 服务的 Node.js 中开发 lambda。此外,这些 lambda 使用 API Gateway 调用另一个 lambda,其中 X 调用类型是异步调用的事件。
关于我应该选择哪种方法在本地运行这些 lambda 的任何建议:
- 我应该创建一个无服务器项目,其中无服务器离线插件如
- serverless- s3 -local
- 无服务器-发电机-本地
- 无服务器离线-ssm
- 无服务器离线 - dynamodb
所以当这个项目被执行时,它将在本地机器的特定端口上运行这些服务。
使用SAM 本地。
- 为此,我需要编写一个 sam 模板,因为目前我使用的是 serverless.com 框架,其中有 serverless.yml 而不是 sam 模板。
- 还有 serverless-sam 插件可以将 serverless.yml 导出到 sam 模板,但是,对于 serverless.yml 中的少数部分,它会引发错误,因为对于少数基础构建,我们使用 serverless.yml 中的 terraform 执行输出。
- 此 terraform 不适用于本地。所以基本上我没有选择使用 serverless-sam 插件的导出功能。我需要创建一个单独的项目,该项目将具有包含所有相关 AWS 服务规范的 sam 模板。
使用 Python Moto 库:https ://github.com/spulec/moto#stand-alone-server-mode
提前致谢