python - 从另一个 SAM 本地函数调用 AWS SAM 本地函数
问题描述
我正在尝试创建一个具有多个 AWS 无服务器功能的 AWS SAM 应用程序。
该应用程序有 1 个 template.yaml 文件,其中包含 2 个不同的无服务器 lambda 函数的资源,例如“Consumer Lambda”和“Worker Lambda”。消费者以 5 分钟的速度被触发。消费者使用 boto3 库来触发 worker lambda 函数。当工作人员 lambda 部署在 AWS 上时,此代码有效。
但是我想用 Sam local invoke "Consumer" 在本地测试这两个函数,它也在本地调用 "Worker"。
这是 YAML 文件的屏幕截图:
我正在使用 Pycharm 运行该项目。有一个选项可以一次只运行 1 个函数,然后在构建文件夹中只创建一个文件夹。
我必须在部署之前测试 Consumer 是否能够在 pycharm 中本地调用 worker。我认为有一些方法可以做到这一点,但不知道该怎么做。我做了一些广泛的搜索,但没有产生任何结果。
任何帮助表示赞赏。提前致谢
解决方案
您可以通过以下方式(官方文档)启动 lambda 调用端点:
sam local start-lambda
现在,您可以将 AWS 资源客户端指向端口 3001 并在本地触发函数。
例如。如果您在 Python 上执行此操作,则可以使用 boto3 通过以下方式实现:
boto3
# Create a lambda client
lambda_client = boto3.client('lambda',
region_name="<localhost>",
endpoint_url="<http://127.0.0.1:3001>",
use_ssl=False,
verify=False)
# Invoke the function
lambda_client.invoke(FunctionName=<function_name>,
Payload=<lambda_payload>)
推荐阅读
- python - Python Qt SpinBox 在失焦时更新
- arrays - 使用 Google Colab 时如何保存 np.array 的结果以供将来使用
- logging - Spring Kafka监听器方法-记录输入记录
- c - 为什么 printf() 只在 WSL2(Ubuntu) 上延迟执行的循环之后执行?
- javascript - 带有按钮的Jquery Onclick不显示窗口
- asp.net-core - AspNetCore 无法在 POST 操作中获取有效负载的值
- java - 在 Google Play 上发布我的应用后,JSON 数据显示为空
- reactjs - 如何将本地图像共享到 Firebase,然后能够检索我在 React Native 中登录的任何设备?
- jsf - 当另一个组合框值更改时重置 ace:comboBox 值
- oracle - Oracle 12c:插入到带有标识列的表中