gpt4 book ai didi

python - 如何通过 API 网关调用具有事件调用类型的 Lambda 函数?

转载 作者:太空狗 更新时间:2023-10-30 00:27:44 26 4
gpt4 key购买 nike

文档说:

By default, the Invoke API assumes RequestResponse invocation type. You can optionally request asynchronous execution by specifying Event as the InvocationType.

所以我可以发送到我的函数(python)的所有内容都是 InvocationType:Event 无处不在:

curl -X POST "https://X.execute-api.us-east-1.amazonaws.com/prod/Y?InvocationType=Event" 
-d "InvocationType:Event"
-H "X-Amz-Invocation-Type:Event"

(function sleeps 3 seconds then responses)

null

但不是异步...文档还说:

When you invoke a Lambda function via the AWS console or over HTTPS using Amazon API Gateway, Lambda always uses the RequestResponse invocation type.

我知道可以通过 aws-CLI 实现,但我不明白是否可以从 API 网关端点实现。

最佳答案

创建两个 Lambda 并在第一次使用时使用 Lambda.Client.invoke在处理 Lambda 的专用 ApiGateway 请求中使用 InvocationType=Event。第二个执行您希望 ApiGateway 请求异步调用的逻辑。

示例专用 ApiGateway Lambda 处理程序:

from __future__ import print_function

import boto3
import json

def lambda_handler(event, context):
response = client.invoke(
FunctionName='<your_long_task_running_function_executer>',
InvocationType='Event',
Payload=json.dumps(event)
)
return { "result": "OK" }

您可能希望检测发送请求失败和其他类似情况,但由于我主要不使用 Python,所以我将把逻辑留给您。

附注注意 invoke_async已弃用
p.p.s.抱歉,我的帐户是新帐户,我没有代表将这些添加为评论:0。我借用了你的回答; 1. 您使用的是已弃用的 api; 2. 你应该(显然没问题)将 InvocationType = 'Event' 添加到你的调用中。

关于python - 如何通过 API 网关调用具有事件调用类型的 Lambda 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34294693/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com