如何开发依赖于 AWS 触发器的 lambda 函数?

How to develop lambda functions that depend on AWS triggers?

Lambda 函数通常由多个 AWS 事件(例如 EventBridge 事件)触发。

我正在开发一个 python lambda,它一旦被 EventBridge 事件触发(匹配 Security Hub 的模式),就会在 Jira 上创建票证。

我的问题是:如何在没有实际触发器的情况下在本地开发这样的功能?有没有办法模拟 EventBridge 事件?

我知道 moto (https://github.com/spulec/moto) 的存在,但我很难理解它是如何工作的

Lambda 函数可以像任何其他 Python 函数一样在本地调用,只要您知道输入参数。 可以在此处找到由 SecurityHub 发送的一些示例事件:https://docs.aws.amazon.com/securityhub/latest/userguide/securityhub-cwe-event-formats.html

模拟 EventBridge 可以简单地通过基于该格式手动策划一组代表性事件,并验证 Lambda 函数在使用其中一个事件调用时的行为是否正常来完成。


Moto 为您模拟所有 boto3 调用,并尽可能地模仿 AWS 行为。这意味着您可以在测试中执行任何业务逻辑,而不必担心在 AWS 中创建资源,也无需手动模拟。

一些简单的例子可以在这里找到:http://docs.getmoto.org/en/latest/docs/getting_started.html

但是:
Moto 尚未实施 EventBridge->Lambda 实施,因此在这种情况下这对您没有帮助。 (从版本 2.3.0 开始,仅支持 CloudWatch/SQS 集成)。

您可以在本地 运行 您的 python 代码而不是使用 lambda。为此,您需要满足以下要求:

  • 下载python
  • 使用此命令下载 boto3:pip3 install boto3pip install boto3
  • 下载 awscli 并配置凭据
  • 运行 此命令:python filename.pypython3 filename.py 在 lambda 中,需要在“def lamdba_handler()”中编写代码。 但是在这种情况下,您可以在没有此功能的情况下编写通常的 python 代码