AWS API Gateway - 如何在正文映射模板中获取日期/时间戳/纪元?

Joh*_*man 4 vtl amazon-web-services aws-api-gateway

我需要在API网关方法的正文映射模板中包含请求时间.有日期/时间变量或功能吗?我在模板参考中找不到任何内容.

示例正文映射模板:

Action=SendMessage&MessageBody=$util.urlEncode("{""timestamp"":""TIMESTAMP_HERE"",""body-json"":$input.json('$'),""params"":""$input.params()""}")
Run Code Online (Sandbox Code Playgroud)

Abh*_*aja 7

更新:API 网关刚刚添加了两个新的上下文变量http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html

$context.requestTime    The CLF-formatted request time (dd/MMM/yyyy:HH:mm:ss +-hhmm).
$context.requestTimeEpoch   The Epoch-formatted request time.
Run Code Online (Sandbox Code Playgroud)

API 网关目前不支持此功能。之前在论坛上有人要求过 - https://forums.aws.amazon.com/thread.jspa?messageID=697658&。我们的待办事项中有此功能,但不幸的是我无法承诺任何时间表。


Fre*_*ert 5

似乎有一种方法可以从API网关请求中获取时间戳,但您需要查看X-Ray文档以查找它:

Amazon API Gateway网关在名为X-Amzn-Trace-Id的标头中为传入的HTTP请求添加跟踪ID .

(......)

trace_id由连字符分隔的三个数字组成.例如,1- 58406520- a006649127e371903a2de979.这包括:

  • 版本号,即1.
  • 原始请求的时间,在Unix纪元时间内,以8个十六进制数字表示.例如,2016年12月2日上午10点,在纪元时间的PST为1480615200秒,或以十六进制为58406520.

(......)