如何使用boto3调用Lambda函数并传递参数

问题描述 投票:0回答:3

这次我正在寻找使用 boto3.client 将参数传递给 lambda 调用,而不是向 API 网关发出请求。

假设我开发了一个 lambda 函数,可以通过

api get
调用。即:
https://linktolambda/<parameter>
,现在我正在尝试使用 boto3 客户端从另一个函数访问相同的 lambda 函数。

我已阅读以下文档:

我已经阅读了 stackoverflow 问题、reddit 问题、medium 帖子等,但我还没有找到我要找的东西。

提前致谢。

python amazon-web-services aws-lambda boto3
3个回答
3
投票

如果您不想更新 lambda 函数,只需通过 boto3 客户端模拟 APIGateway event 对象即可:

如果您的 api 看起来像

https://linktolambda/{id}
(例如:
https://linktolambda/123456

您将使用以下代码调用:

        payload = { "pathParameters": { "id":"123456" } } 
        result = client.invoke(FunctionName=conf.lambda_function_name,
                    InvocationType='RequestResponse',                                      
                    Payload=json.dumps(payload))

或者你的 API 看起来像

https://linktolambda?id=123456

        payload = { "queryStringParameters": { "id":"123456" } } 
        result = client.invoke(FunctionName=conf.lambda_function_name,
                    InvocationType='RequestResponse',                                      
                    Payload=json.dumps(payload))

0
投票

BOTO3 中实际上有两个方法可用于调用 Lambda 函数。第一个是:

[invoke(**kwargs)][1]

第二个是:

[invoke_async(**kwargs)][2]

参见:

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke

https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/lambda.html#Lambda.Client.invoke_async

第一个方法进行同步调用,第二个方法进行异步调用。部署 Lambda 函数后,您可以使用任一方法来调用它。


0
投票

查看官方 AWS 代码示例 Github。对于 Python 代码示例,请看这里:

https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python

您可以在此代码示例中了解如何调用 Lambda 函数并传递参数(正是您想要的):

https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/python/example_code/lambda/lambda_basics.py

寻找方法

invoke_function

© www.soinside.com 2019 - 2024. All rights reserved.