我正在尝试创建具有多个AWSless Serverless功能的AWS SAM应用程序。
该应用程序具有1个template.yaml文件,该文件具有2种不同的无服务器lambda函数的资源,例如“ Consumer Lambda”和“ Worker Lambda”。消费者以5分钟的速度被触发。使用者使用boto3库来触发worker lambda函数。当工作程序Lambda部署在AWS上时,此代码有效。
但是我想用Sam本地调用“ Consumer”在本地测试这两个功能,后者也会在本地调用“ Worker”。
以下是YAML文件的屏幕截图:
我正在使用Pycharm运行该项目。可以选择一次只运行一项功能,然后在build文件夹中仅创建一个文件夹。
在部署之前,我必须测试Consumer是否能够在pycharm中本地调用worker。我认为有一些方法可以做到,但不确定如何做。我进行了广泛的搜索,但没有得到任何结果。
感谢您的帮助。预先感谢
答案 0 :(得分:1)
您可以通过以下方式(官方docs)启动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>)