从本地机器发布 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 交付?

从 SNS 触发 Step Function

使用 AWS Lambda 从 AWS SNS 读取时修改 JSON 消息

使用参数从 SNS 调用 Lambda 函数?

使用AWS Lambda从AWS SNS读取时修改JSON消息

设置SNS主题以在另一个之后触发Lambda Function一条消息