python - 从另一个 SAM 本地函数调用 AWS SAM 本地函数

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

我正在尝试创建具有多个 AWS 无服务器功能的 AWS SAM 应用程序。

该应用程序有 1 个 template.yaml 文件,其中包含 2 个不同的无服务器 lambda 函数的资源,例如“Consumer Lambda”和“Worker Lambda”。消费者以 5 分钟的速度被触发。消费者使用 boto3 库来触发 worker lambda 函数。当 worker lambda 部署在 AWS 上时,此代码有效。

但我想在本地测试这两个函数,Sam local invoke “Consumer”也在本地调用“Worker”。

这是 YAML 文件的屏幕截图:

我正在使用 Pycharm 来运行项目。有一个选项可以一次只运行 1 个函数,然后在构建文件夹中只创建一个文件夹。

我必须在部署之前测试 Consumer 是否能够在 pycharm 中本地调用 worker。我认为有某种方法可以做到,但不确定如何去做。我进行了广泛的搜索,但没有找到任何结果。

感谢任何帮助。提前致谢

最佳答案

您可以通过以下方式启动 lambda 调用端点(官方 docs ):

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 - 从另一个 SAM 本地函数调用 AWS SAM 本地函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62936372/

相关文章:

amazon-web-services - 监控 lambda 在 NewRelic 中执行

amazon-web-services - AWS lambda 使用 ffmpeg 达到大小限制

amazon-web-services - aws dynamodb 流 lambda 处理速度太快

python - 如何使用 Django Channels 多线程 AsyncConsumer

python - 试图在 DataFrame 的切片副本上设置一个值。 - Pandas

sql - Amazon Redshift - 子计划的哈希表不存在

sql - 如何更改存储在 S3 中的 Athena 结果的名称?

python - 如何删除 numpy.ndarray 中包含非数字值的所有行

python - 根据所选选项执行不同的功能

amazon-web-services - 限制 Amazon SQS 队列中的传输消息数量