MyApi:
Type: 'AWS::Serverless::Api'
Properties:
StageName: Prod
DefinitionBody:
swagger: '2.0'
info:
title:
Ref: 'AWS::StackName'
paths:
/invoke:
get:
x-amazon-apigateway-integration:
uri:
Fn::Sub:
- 'arn:aws:apigateway:${AWS::Region}:lambda:path/2015-03-31/functions/${LambdaArn}/invocations'
- LambdaArn: !GetAtt MyLambdaFunction.Arn
httpMethod: POST
type: aws
responses:
default:
statusCode: 200
requestParameters:
integration.request.header.X-Amz-Invocation-Type : "'Event'"
passthroughBehavior: "when_no_match"
contentHandling: "CONVERT_TO_TEXT"
称呼API URL确实是异步启动的lambda,但是呼叫带有HTTP 500,并发出了“内部服务器错误”的消息。 使用CloudFormation代码而不是SAM定义API网关,并使用上面的链接中的说明可以完美地工作,即使使用SAM代码定义Lambda。 (以防有人想看看这是如何完成的:https://github.com/nantoka69/aws_sam_api_gateway
),我的问题是:这是一个错误,是与Sam不可能使用的lambda呼叫,还是我只是找不到正确的技巧?
您需要更改您的解决方案方法,因为API网关30秒超时。 API Gateway请求响应的最大超时为30秒,上面的任何内容都会接收到时错误。 您可以通过多种方式更改解决方案 1。有2个lambda附加到API网关上的第一个Lambda,该网关接收请求并拨打另一个lambda异步,并将返回请求接收到API网关。
2。在API网关上附上了2个Lambda的第一个Lambda,该lambda接收请求并作为SQS上的消息发送,然后由另一个Lambda处理,然后将其异步处理
3。使用REST API网关更改使用Websocket,然后如果您的客户端期望处理状态