从另一个SAM本地功能调用AWS SAM本地功能

时间:2020-07-16 13:55:31

标签: python amazon-web-services aws-lambda yaml serverless

我正在尝试创建具有多个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。我认为有一些方法可以做到,但不确定如何做。我进行了广泛的搜索,但没有得到任何结果。

感谢您的帮助。预先感谢

1 个答案:

答案 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>)