无法通过API网关POST请求以异步模式执行Lambda [英] Unable to execute Lambda in Async mode via API Gateway POST request

查看:54
本文介绍了无法通过API网关POST请求以异步模式执行Lambda的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

为什么为什么现在不通过网关API以异步模式执行AWS Lambda而不涉及仅用于调用invoke()方法的中间Lambda?

Why currently there no way to execute AWS Lambda in asynchronous mode via Gateway API without involving intermediary Lambda just for calling invoke() method?

即使我添加这样的集成:

Even if i add integration like this:

r = client.put_integration(
    restApiId=rest_api_id,
    resourceId=resource_id,
    httpMethod='POST',
    type='AWS',
    integrationHttpMethod='POST',
    uri=uri,
    requestParameters={
        'integration.request.header.X-Amz-Invocation-Type': "'Event'",
        'integration.request.header.Invocation-Type': "'Event'"
    }
)

它仍然同步执行... 大约有平台限制吗?

It still executed synchronously... Are there some platform limitation or so?

推荐答案

我有一个示例Swagger文档,您可以将调用类型切换为Lambda函数.我想您已经了解了如何映射标头以触发不同的调用类型,但是我认为您可能会忘记部署API.

I have an example Swagger document which you can switch invocation type to Lambda function. I guess you already got how to map the header to trigger the different invocation types, but I think you might forget to deploy the API.

{
  "swagger": "2.0",
  "info": {
    "version": "2016-02-11T22:00:31Z",
    "title": "LambdaAsync"
  },
  "host": "<placeholder>",
  "basePath": "<placeholder>",
  "schemes": [
    "https"
  ],
  "paths": {
    "/": {
      "get": {
        "produces": [
          "application/json"
        ],
        "parameters": [
          {
            "name": "X-Amz-Invocation-Type",
            "in": "header",
            "required": false,
            "type": "string"
          }
        ],
        "responses": {
          "200": {
            "description": "200 response",
            "schema": {
              "$ref": "#/definitions/Empty"
            }
          }
        },
        "x-amazon-apigateway-integration": {
          "passthroughBehavior": "when_no_match",
          "httpMethod": "POST",
          "uri": "arn:aws:apigateway:us-east-1:lambda:path/2015-03-31/functions/arn:aws:lambda:us-east-1:<account>:function:<function_name>/invocations?Qualifier=$LATEST",
          "responses": {
            "default": {
              "statusCode": "200"
            }
          },
          "requestParameters": {
            "integration.request.header.X-Amz-Invocation-Type": "method.request.header.X-Amz-Invocation-Type"
          },
          "type": "aws"
        }
      }
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "title": "Empty Schema"
    }
  }
}

这篇关于无法通过API网关POST请求以异步模式执行Lambda的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆