Может ли журнал AWS Amplify Transform быть создан пользователем / обновлен пользователем в DynamoDB?

Использование AWS Amplify Transform для определения схемы в schema.graphql, которая затем компилируется и отправляется в AWS Cloudformation. Когда данные создаются в DynamoDB, автоматически создается строка (определенная в автоматически созданных преобразователях) для createdAt и updatedAt. Если я укажу директиву @auth, относящуюся к "владельцу", она поместит поле владельца в запись. Все это определено в файле schema.graphql.

Мне нужно что-то похожее на приведенное выше, и я хочу знать, могу ли я сделать это в файле преобразования schema.graphql или мне нужно начать настройку преобразователей.

Я просто хочу записать имя пользователя, который создал и в последний раз изменил запись. Поэтому для каждой записи я хочу «createdBy» и «updatedBy». Не нужен владелец, поскольку приложение не требует этого, но я хочу знать, кто его создал, кто последний раз обновлялся и когда все это произошло.

Итак, прежде чем я сделаю это более сложным, чем это, вероятно, я хотел проверить, есть ли что-то простое, что я могу сделать для этого.


person Stephen Crampton    schedule 26.04.2019    source источник


Ответы (1)


Я разработал это, поэтому просто обновляю для других. В каталог app / resolvers вы помещаете свой настраиваемый преобразователь и вводите следующий текст для «типа» (таблицы), который вы создаете.

## [Start] Prepare DynamoDB PutItem Request. **
$util.qr($context.args.input.put("created", $util.time.nowISO8601()))
$util.qr($context.args.input.put("lastModified", $util.time.nowISO8601()))
$util.qr($context.args.input.put("createdBy", $ctx.identity.username))
$util.qr($context.args.input.put("createdById", $ctx.identity.sub))
$util.qr($context.args.input.put("createdByIP", $ctx.identity.sourceIp))
$util.qr($context.args.input.put("lastModifiedBy", $ctx.identity.username))
$util.qr($context.args.input.put("lastModifiedById", $ctx.identity.sub))
$util.qr($context.args.input.put("lastModifiedByIP", $ctx.identity.sourceIp))
$util.qr($context.args.input.put("__typename", "Assets"))
person Stephen Crampton    schedule 05.05.2019