从本地机器发布 SNS 消息并测试 Lambda
Posted
技术标签:
【中文标题】从本地机器发布 SNS 消息并测试 Lambda【英文标题】:Publish SNS message and test Lambda from local machine 【发布时间】:2022-01-03 06:32:19 【问题描述】:我有一个这样的应用程序 - sns -> lambda - 所以每次在 SNS 中发布新消息时都会调用我的 lambda python 函数。 整个代码在 AWS UI 上运行,但我想编写一个测试函数,因此我需要从我的本地机器上发布来自 SNS 主题的消息,这将触发我将在 cloudwatch 中观看日志的 Lamba。
我搜索了很多,但找不到对像我这样的初学者有帮助的东西。我在 VScode 上安装了 awscli,扩展并安装了 Docker。我的本地机器是 debian(10) pc。在 VScode for SNS 上没有找到任何选项。 非常感谢任何帮助。
【问题讨论】:
【参考方案1】:您可以使用 AWS SAM CLI 针对模拟 SNS 事件在本地测试您的函数,而不是使用订阅实际 SNS 主题的函数。
使用 AWS SAM CLI,您可以使用此命令生成示例事件
sam local generate-event sns
然后您可以对其进行修改、保存并将其与sam local invoke --event mockEvent.json
一起使用。然后,您应该能够看到您的代码的行为方式并查看函数的日志。
AWS SAM CLI“生成事件”文档:https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-cli-command-reference-sam-local-generate-event.html
【讨论】:
【参考方案2】:如果您想手动测试您的设置行为,请从终端使用 AWS cli 发布测试消息。请参阅页面底部的示例:https://awscli.amazonaws.com/v2/documentation/api/latest/reference/sns/publish.html
【讨论】:
非常感谢,这是最简单的方法。我什至可以使用子进程从我的 python 测试函数中做到这一点。 如果您想使用 Python 调用,那么您实际上可以使用 Boto3 SDK:boto3.amazonaws.com/v1/documentation/api/latest/reference/… 解决问题的多种方法。以上是关于从本地机器发布 SNS 消息并测试 Lambda的主要内容,如果未能解决你的问题,请参考以下文章
使用 AWS Lambda 观看 SNS 主题并通过 websocket 交付?
使用 AWS Lambda 从 AWS SNS 读取时修改 JSON 消息