如何使用API​​网关获取AWS Lambda的LogResult?

时间:2017-05-28 18:52:41

标签: lambda aws-lambda aws-api-gateway

我尝试每次调用lambda来记录结算时间,以跟踪使用lambda的成本。

使用SDK或CLI调用lambda时,只需添加参数LogType: tail

即可轻松获取LogResult

然后您将LogResult作为Response的一部分,您可以在其中提取结算时长。

现在,当我们通过API网关调用lambda时,我试图做类似的事情。

在这种情况下,如何获得LogR​​esult和BilledDuration?

1 个答案:

答案 0 :(得分:0)

在API网关中,您必须遵循API参考,以使用“AWS服务”来构建原始HTTP请求。整合类型。

这里是an example for setting a different invocation parameter X-Amz-Invocation-Type,包括用于创建集成的CLI调用,以及一个招摇的例子。

在您的情况下,X-Amz-Log-Type的配置方式与名为integration.request.header.X-Amz-Log-Type的参数相同。

{
  "swagger": "2.0",
  "info": {
    "version": "2016-02-11T22:00:31Z",
    "title": "LambdaAsync"
  },
  "host": "<placeholder>",
  "basePath": "<placeholder>",
  "schemes": [
    "https"
  ],
  "paths": {
    "/": {
      "get": {
        "produces": [
          "application/json"
        ],
        "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-Log-Type": "'tail'"
          },
          "type": "aws"
        }
      }
    }
  },
  "definitions": {
    "Empty": {
      "type": "object",
      "title": "Empty Schema"
    }
  }
}