在我当前的项目中,我想同步从API网关调用长期运行的lambda函数。所有资源均在SAM模板中定义。 我试图按照说明 https://doc...

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

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,然后如果您的客户端期望处理状态
aws-lambda aws-cloudformation aws-api-gateway aws-sam
1个回答
0
投票


最新问题
© www.soinside.com 2019 - 2025. All rights reserved.