PutItem - AWS AppSync

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

PutItem

Le document de mappage des demandes vous permet de PutItem demander au résolveur AWS AppSync DynamoDB d'envoyer une PutItem demande à DynamoDB et de spécifier les éléments suivants :

  • La clé de l'élément dans DynamoDB

  • Contenu complet de l'élément (composé de key et de attributeValues)

  • Conditions de réussite de l'opération

Le document de mappage PutItem a la structure suivante :

{ "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 }

Les champs sont définis comme suit :

PutItem champs

version

Version de la définition du modèle. 2017-02-28 et 2018-05-29 sont actuellement prises en charge. Cette valeur est obligatoire.

operation

L'opération DynamoDB à effectuer. Pour que vous puissiez effectuer l'opération DynamoDB PutItem, ce champ doit être défini sur PutItem. Cette valeur est obligatoire.

key

Clé de l'élément dans DynamoDB. Les éléments DynamoDB peuvent avoir une seule clé de hachage ou une clé de hachage et une clé de tri, selon la structure de la table. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Cette valeur est obligatoire.

attributeValues

Le reste des attributs de l'élément doit être placé dans DynamoDB. Pour plus d'informations sur la façon de spécifier une « valeur saisie », voir Système de types (mappage des demandes). Ce champ est facultatif.

condition

Condition permettant de déterminer si la demande doit réussir ou non, en fonction de l'état de l'objet déjà dans DynamoDB. Si aucune condition n'est spécifiée, la requête PutItem remplace toute entrée existante pour cet élément. Pour plus d'informations sur les conditions, consultez la section Expressions de condition. Cette valeur est facultative.

_version

Valeur numérique représentant la dernière version connue d'un élément. Cette valeur est facultative. Ce champ est utilisé pour la détection de conflits et n'est pris en charge que sur les sources de données versionnées.

customPartitionKey

Lorsqu'elle est activée, cette valeur de chaîne modifie le format des ds_pk enregistrements ds_sk et utilisés par la table de synchronisation delta lorsque le contrôle des versions a été activé (pour plus d'informations, voir Détection des conflits et synchronisation dans le manuel du AWS AppSync développeur). Lorsque cette option est activée, le traitement de l'populateIndexFieldsentrée est également activé. Ce champ est facultatif.

populateIndexFields

Valeur booléenne qui, lorsqu'elle est activée en même temps que le customPartitionKey, crée de nouvelles entrées pour chaque enregistrement de la table de synchronisation delta, en particulier dans les colonnes gsi_ds_pk etgsi_ds_sk. Pour plus d'informations, consultez la section Détection et synchronisation des conflits dans le manuel du AWS AppSync développeur. Ce champ est facultatif.

L'élément écrit dans DynamoDB est automatiquement converti en GraphQL et en types primitifs JSON et est disponible dans le contexte de mappage (). $context.result

Pour plus d'informations sur la conversion de type DynamoDB, voir Système de types (mappage des réponses).

Pour plus d'informations sur les modèles de mappage des réponses, consultez la section Vue d'ensemble des modèles de mappage Resolver.

Exemple 1

L'exemple suivant est un modèle de mappage pour une mutation GraphQL. updateThing(foo: String!, bar: String!, name: String!, version: Int!)

S'il n'existe aucun élément avec la clé spécifiée, il est créé. S'il existe déjà un élément avec la clé spécifiée, il est remplacé.

{ "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) } }

Exemple 2

L'exemple suivant est un modèle de mappage pour une mutation GraphQL. updateThing(foo: String!, bar: String!, name: String!, expectedVersion: Int!)

Cet exemple vérifie que le champ de l'élément actuellement dans DynamoDB est défini version sur. 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) } } }

Pour plus d'informations sur DynamoDB, consultez la PutItem API documentation DynamoDB. API