捕获lambda函数的开始和结束

时间:2020-05-21 23:09:09

标签: amazon-web-services aws-lambda amazon-cloudwatch-events

是否可以捕获执行lambda函数的startTime和endTime以及传递给它的参数? 我找不到可以配置为在lambda函数启动/终止时发送事件的任何状态更改事件配置?

一个糟糕的选择是在调用lambda时在数据库中记录参数和开始时间,并让lambda在完成之前最后一步更新完结局。这似乎容易出现故障情况,例如在更新数据库之前发生函数错误。

还有其他替代方法可以捕获此信息

1 个答案:

答案 0 :(得分:1)

aws x-ray在这里可能是一个很好的解决方案。易于集成和使用。您可以启用AWS控制台。

  • 转到您的lambda函数/配置标签
  • 向下滚动并在AWS X-Ray框中选择active tracing

在代码中没有任何配置,它将记录带有附加元数据的函数的start_timeend_time。您可以将其作为库集成到lambda函数中,并发送其他subsegments,例如请求参数。请在此处查看documentation

这里是样本有效载荷;

{
  "trace_id"   : "1-5759e988-bd862e3fe1be46a994272793",
  "id"         : "defdfd9912dc5a56",
  "start_time" : 1461096053.37518,
  "end_time"   : 1461096053.4042,
  "name"       : "www.example.com",
  "http"       : {
    "request"  : {
      "url"        : "https://www.example.com/health",
      "method"     : "GET",
      "user_agent" : "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_6) AppleWebKit/601.7.7",
      "client_ip"  : "11.0.3.111"
    },
    "response" : {
      "status"         : 200,
      "content_length" : 86
    }
  },
  "subsegments" : [
    {
      "id"         : "53995c3f42cd8ad8",
      "name"       : "api.example.com",
      "start_time" : 1461096053.37769,
      "end_time"   : 1461096053.40379,
      "namespace"  : "remote",
      "http"       : {
        "request"  : {
          "url"    : "https://api.example.com/health",
          "method" : "POST",
          "traced" : true
        },
        "response" : {
          "status"         : 200,
          "content_length" : 861
        }
      }
    }
  ]
}