这次我正在寻找使用 boto3.client 将参数传递给 lambda 调用,而不是向 API 网关发出请求。
假设我开发了一个 lambda 函数,可以通过
api get
调用。即:https://linktolambda/<parameter>
,现在我正在尝试使用 boto3 客户端从另一个函数访问相同的 lambda 函数。
我已阅读以下文档:
我已经阅读了 stackoverflow 问题、reddit 问题、medium 帖子等,但我还没有找到我要找的东西。
提前致谢。
如果您不想更新 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))
BOTO3 中实际上有两个方法可用于调用 Lambda 函数。第一个是:
[invoke(**kwargs)][1]
第二个是:
[invoke_async(**kwargs)][2]
参见:
第一个方法进行同步调用,第二个方法进行异步调用。部署 Lambda 函数后,您可以使用任一方法来调用它。
查看官方 AWS 代码示例 Github。对于 Python 代码示例,请看这里:
https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/python
您可以在此代码示例中了解如何调用 Lambda 函数并传递参数(正是您想要的):
寻找方法
invoke_function
。