Добавление или обновление атрибута Modified Date в AppSync с использованием VTL

Я работаю над AppSync, я борюсь за то, как сохранить дату в Dynamo Db, используя VTL. Мое действительное требование - сохранить дату вызова API. Пожалуйста, дайте мне знать, как этого добиться, используя Date.now() в Dynamo Db. Заранее спасибо.

2 ответа

Я обычно делаю это, используя $util.time.nowEpochSeconds()

например:

#set($input={})
$util.qr($input.put("createdAt", $util.time.nowEpochSeconds()))
$util.qr($input.put("updatedAt", $util.time.nowEpochSeconds()))

#set($id=$util.autoId())

{
    "version" : "2017-02-28",
    "operation" : "PutItem",
    "key" : {
        "id": $util.dynamodb.toDynamoDBJson("$id")
    },
    "attributeValues" : $util.dynamodb.toMapValuesJson($input)
}

У вас есть несколько вариантов, например, используя DynamoDb, вы можете добавить атрибут перед его сопоставлением:

      $util.qr($ctx.args.input.put("createdAt", $util.time.nowISO8601()))

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
  },
  "attributeValues": $util.dynamodb.toMapValuesJson($ctx.args.input),
  "condition": {
    "expression": "attribute_not_exists(#id)",
    "expressionNames": {
      "#id": "id",
    },
  },
}

Варианты формата:

      $util.time.nowISO8601()                                            : 2018-02-06T19:01:35.749Z
$util.time.nowEpochSeconds()                                       : 1517943695
$util.time.nowEpochMilliSeconds()                                  : 1517943695750
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ")                    : 2018-02-06 19:01:35+0000
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "+08:00")          : 2018-02-07 03:01:35+0800
$util.time.nowFormatted("yyyy-MM-dd HH:mm:ssZ", "Australia/Perth") : 2018-02-07 03:01:35+0800

Источник: https://docs.aws.amazon.com/appsync/latest/devguide/resolver-util-reference.html .

Другие вопросы по тегам