文件说:
默认情况下,Invoke API采用RequestResponse调用类型.您可以选择通过将Event指定为InvocationType来请求异步执行.
所以我可以发送到我的函数(python)是InvocationType:事件无处不在:
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
但不是Async ......文档也说:
当您通过AWS控制台或使用Amazon API Gateway通过HTTPS调用Lambda函数时,Lambda始终使用RequestResponse调用类型.
我知道可以通过aws-CLI实现,如果可以从API网关端点进行,我不明白.
创建两个Lambdas,并在第一个使用Lambda.Client.invoke时使用InvocationType = Event处理Lambda的专用ApiGateway请求.第二个执行您希望ApiGateway请求异步调用的逻辑.
专用ApiGateway Lambda处理程序示例:
from __future__ import print_function import boto3 import json def lambda_handler(event, context): response = client.invoke( FunctionName='', InvocationType='Event', Payload=json.dumps(event) ) return { "result": "OK" }
您可能希望检测到发送请求的失败以及该类别的其他条件,但由于我主要不使用python,因此我将把这个逻辑留给您.
ps请注意,invoke_async已被弃用
pps抱歉,我的帐户是新的,我没有代表将这些添加为评论:0.我借鉴了你的回答; 1.您使用的是弃用的api; 2.你应该(显然没关系)加入InvocationType = 'Event'
你的电话.