首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用单独的无服务器脱机包或AWS SAM本地或Moto库在本地运行lambdas

使用单独的无服务器脱机包或AWS SAM本地或Moto库在本地运行lambdas
EN

Stack Overflow用户
提问于 2020-03-16 10:05:39
回答 1查看 2.6K关注 0票数 1

我需要创建一个集成项目,在执行时,它应该启动所有aws模拟服务,如S3、API网关、SQS、Dynamo SSM。我们使用serverless.com框架在Node.js中开发在内部使用上述AWS服务的lambda。此外,这些lambda使用API网关调用另一个lambda,其中X调用类型是异步调用的事件。

对于在本地运行这些lambda,我应该选择哪种方法的任何建议:

  1. 我是否应该创建一个无服务器的项目,其中包括这样的无服务器离线插件
    • serverless-s3-local
    • serverless-dynamo-local
    • serverless-offline-ssm
    • serverless-offline-dynamodb

因此,当该项目被执行时,它将在本地机器中的特定端口上运行这些服务。

  1. 使用SAM本地
代码语言:javascript
复制
- For this i need to write a sam template as currently i have used serverless.com framework where  there is serverless.yml rather than sam template.
- There is also serverless-sam plugin to export the serverless.yml to sam template, However, it throws  an error for few parts in serverless.yml as for few infra build we use the output of terraform  execution in serverless.yml.
- This terraform is not available for local. So basically i dont have option to use export feature of  serverless-sam plugin. I would need to create a separate project that will have sam template  containing specification of all dependent AWS service.

  1. 使用Python库:https://github.com/spulec/moto#stand-alone-server-mode

提前感谢

EN

回答 1

Stack Overflow用户

发布于 2020-04-07 06:19:58

这听起来是局部堆栈的一个很好的用法

Local堆栈将生成一个本地Docker实例,该实例可以充当本地AWS端点,并支持大量服务和功能。

积极方面:

  • 使用单个框架,而不是找出多个插件
  • 语言无关--如果您决定在某个时候不再使用Serverless插件
  • 它支持您提到的所有服务: S3、API网关、SQS、Dynamo和SSM。
  • 它还可以执行AWS Lambda的。

底片:

  • AWS Lambdas将在他们自己的临时码头容器中执行。这意味着它将无法直接访问总体Local堆栈Docker。 换句话说,通过Local堆栈执行Lambda函数将无法立即调用Localstack网关。为此,必须显式地将AWS中的端点参数设置为http:/localhost:xxxx (而不是https://apigateway.amazonaws.com)。

(请参阅此代码作为示例,其中Lambda运行在自己的Docker容器中,但需要在测试期间访问脱机EC2实例:lambda.py#L55)

完全披露:我是一个Moto合作者,这是使用的地方堆栈下的引擎盖。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60703916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档