PutItem - AWS AppSync

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

PutItem

El documento de mapeo de PutItem solicitudes le permite indicar al solucionador de AWS AppSync DynamoDB que realice PutItem una solicitud a DynamoDB y le permite especificar lo siguiente:

  • La clave del elemento de DynamoDB

  • El contenido completo del elemento (compuesto de key y attributeValues).

  • Condiciones para que la operación se lleve a cabo correctamente.

El documento de mapeo de PutItem tiene la siguiente estructura:

{ "version" : "2018-05-29", "operation" : "PutItem", "customPartitionKey" : "foo", "populateIndexFields" : boolean value, "key": { "foo" : ... typed value, "bar" : ... typed value }, "attributeValues" : { "baz" : ... typed value }, "condition" : { ... }, "_version" : 1 }

Los campos se definen de la siguiente manera:

PutItem campos

version

La versión de la definición de plantilla 2017-02-28 y 2018-05-29 se admiten actualmente. Este valor es obligatorio.

operation

La operación de DynamoDB que se ha de realizar. Para ejecutar la operación de DynamoDB PutItem, este valor se debe establecer en PutItem. Este valor es obligatorio.

key

La clave del elemento de DynamoDB. Los elementos de DynamoDB pueden tener solo una clave hash o una clave hash y una clave de clasificación, dependiendo de la estructura de la tabla. Para obtener más información sobre cómo especificar un “valor con tipo”, consulte Sistema de tipos (mapeo de solicitud). Este valor es obligatorio.

attributeValues

El resto de los atributos del elemento que debe colocarse en DynamoDB. Para obtener más información sobre cómo especificar un “valor con tipo”, consulte Sistema de tipos (mapeo de solicitud). Este campo es opcional.

condition

Una condición para determinar si la solicitud debe realizarse correctamente o no, en función del estado del objeto ya incluido en DynamoDB. Si no se especifica ninguna condición, la solicitud PutItem sobrescribe todas las entradas existentes para dicho elemento. Para obtener más información sobre las condiciones, consulte Expresiones de condición. Este valor es opcional.

_version

Valor numérico que representa la última versión conocida de un elemento. Este valor es opcional. Este campo se utiliza para detectar conflictos y solo se admite en orígenes de datos con control de versiones.

customPartitionKey

Cuando está activado, este valor de cadena modifica el formato ds_sk y los ds_pk registros que utiliza la tabla de sincronización delta cuando se ha activado el control de versiones (para obtener más información, consulte Detección de conflictos y sincronización en la Guía para AWS AppSync desarrolladores). Cuando se habilita, también lo hace el procesamiento de la entrada populateIndexFields. Este campo es opcional.

populateIndexFields

Valor booleano que, cuando se habilita junto con la customPartitionKey, crea nuevas entradas para cada registro de la tabla Delta Sync, específicamente en las columnas gsi_ds_pk y gsi_ds_sk. Para obtener más información, consulte Detección y sincronización de conflictos en la Guía AWS AppSync para desarrolladores. Este campo es opcional.

El elemento escrito en DynamoDB se convierte automáticamente en GraphQL y tipos primitivos JSON y está disponible en el contexto de mapeo (). $context.result

Para obtener más información sobre la conversión de tipos de DynamoDB, consulte la sección Sistema de tipos (mapeo de respuestas).

Para obtener más información acerca de las plantillas de mapeo de respuesta, consulte Información general sobre las plantillas de mapeo de solucionador.

Ejemplo 1

El siguiente ejemplo muestra una plantilla de mapeo de una mutación de GraphQL updateThing(foo: String!, bar: String!, name: String!, version: Int!).

Si no existe ningún elemento con la clave especificada, dicho elemento se crea. Si ya existe un elemento con la clave especificada, dicho elemento se sobrescribe.

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), "version" : $util.dynamodb.toDynamoDBJson($ctx.args.version) } }

Ejemplo 2

El siguiente ejemplo muestra una plantilla de mapeo de una mutación de GraphQL updateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!).

En este ejemplo se comprueba que el elemento que actualmente se encuentra en DynamoDB tenga en el campo version definido con el valor expectedVersion.

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "foo" : $util.dynamodb.toDynamoDBJson($ctx.args.foo), "bar" : $util.dynamodb.toDynamoDBJson($ctx.args.bar) }, "attributeValues" : { "name" : $util.dynamodb.toDynamoDBJson($ctx.args.name), #set( $newVersion = $context.arguments.expectedVersion + 1 ) "version" : $util.dynamodb.toDynamoDBJson($newVersion) }, "condition" : { "expression" : "version = :expectedVersion", "expressionValues" : { ":expectedVersion" : $util.dynamodb.toDynamoDBJson($expectedVersion) } } }

Para obtener más información sobre DynamoDB, consulte la documentación de PutItem API DynamoDB. API