Добавление или обновление атрибута 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 .