我需要在API网关方法的正文映射模板中包含请求时间。是否有日期/时间变量或函数?我在找不到任何东西。AWS API网关 - 如何获取正文映射模板中的日期/时间戳/新纪元?
例体映射模板:
Action=SendMessage&MessageBody=$util.urlEncode("{""timestamp"":""TIMESTAMP_HERE"",""body-json"":$input.json('$'),""params"":""$input.params()""}")
我需要在API网关方法的正文映射模板中包含请求时间。是否有日期/时间变量或函数?我在找不到任何东西。AWS API网关 - 如何获取正文映射模板中的日期/时间戳/新纪元?
例体映射模板:
Action=SendMessage&MessageBody=$util.urlEncode("{""timestamp"":""TIMESTAMP_HERE"",""body-json"":$input.json('$'),""params"":""$input.params()""}")
UPDATE: 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.
API网关目前不支持这一点。它在论坛上被要求之前 - https://forums.aws.amazon.com/thread.jspa?messageID=697658&。我们在我们的待办事项中有这个功能,但不幸的是我无法承诺任何时间表。
似乎有一种方式来获得从API网关请求时间戳,但你需要在the X-Ray documentation去找找它:
亚马逊API网关的网关添加跟踪ID将传入的HTTP请求在标题名为X-Amzn-Trace-Id。
(...)
trace_id由用连字符分隔的三个数字组成。例如,1- -a006649127e371903a2de979。这包括:
- 的版本号,也就是1。
- 原始请求的时间,在Unix纪元时间,在8个十六进制数字。例如,2016年12月2日上午10:00,PST在时代为1480615200秒,或者以十六进制数字为58406520。
(...)
感谢您的更新!我们将方法集成请求映射到SQS - 我们正在使用SQS中的First Received时间戳的解决方法。 –
这将是一个非常有用的功能,如果你可以提供类似于环境变量的东西来获取时间戳。 – Siddardha
是否有人使用$ context.requestTime成功?在我们的API网关集成中使用它时,我仍然收到一个空字符串。 – giorgioca