AWS API网关 - 如何在车身映射模板中获取日期/时间戳/时期



我需要在API网关方法的车身映射模板中包含请求时间。是否有日期/时间变量或功能?我在模板参考中找不到任何东西。

示例主体映射模板:

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

更新:API网关刚刚添加了两个新的上下文变量http://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-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网关请求中获取时间戳的方法,但是您需要查看X射线文档才能找到它:

Amazon API网关网关在名为 X-AMZN-TRACE-ID 的标题中向传入的HTTP请求添加跟踪ID。

(...)

trace_id由三个数字组成,由连字符分开。例如,1- 58406520 -A006649127E371903A2DE979。这包括:

  • 版本号,即1。
  • 在Unix Epoch时,原始请求的时间在8个十六进制数字中。例如,2016年12月2日上午10:00,2016年的PST为1480615200秒,或58406520在十六进制中。

(...)

只需在您希望其过期的日期设置模板顶部的时间值即可。然后将其作为属性添加到您的项目中。例如,如果您希望该物品在60天内过期,则将添加5184000秒。

#set($expireDate = $context.requestTimeEpoch + 5184000) 
{
  "TableName": "your-table-name",
  "Item": {
      ... other attributes
      "expireDate": {"N": "$expireDate"},
  }
}

相关内容

  • 没有找到相关文章

最新更新