Aplicaciones auxiliares de DynamoDB en $util.dynamodb - AWS AppSync

Aplicaciones auxiliares de DynamoDB en $util.dynamodb

nota

Ahora admitimos de forma básica el tiempo de ejecución APPSYNC_JS y su documentación. Considere la opción de utilizar el tiempo de ejecución APPSYNC_JS y sus guías aquí.

$util.dynamodb contiene métodos auxiliares que facilitan la escritura y la lectura de datos en Amazon DynamoDB, como el mapeo y el formato automáticos de los tipos de datos. Estos métodos están diseñados para mapear automáticamente los tipos primitivos y las listas al formato de entrada de DynamoDB correspondiente, creando una estructura Map con el formato { "TYPE" : VALUE }.

Por ejemplo, anteriormente, una plantilla de mapeo de solicitudes para crear un elemento nuevo en DynamoDB podía tener el siguiente aspecto:

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : { "S" : "$util.autoId()" } }, "attributeValues" : { "title" : { "S" : $util.toJson($ctx.args.title) }, "author" : { "S" : $util.toJson($ctx.args.author) }, "version" : { "N", $util.toJson($ctx.args.version) } } }

Si queríamos añadir campos al objeto teníamos que actualizar la consulta de GraphQL en el esquema, y también la plantilla de mapeo de solicitud. Sin embargo, ahora podemos reestructurar nuestra plantilla de mapeo de solicitudes para que recoja automáticamente los nuevos campos de nuestro esquema y los añada a DynamoDB con los tipos correctos:

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

En el ejemplo anterior utilizamos la aplicación auxiliar $util.dynamodb.toDynamoDBJson(...) para que tome automáticamente el ID generado y lo convierta en la representación en DynamoDB de un atributo de cadena. A continuación, tomamos todos los argumentos, los convertimos en sus representaciones en DynamoDB y los incluimos en el campo attributeValues de la plantilla.

Cada aplicación auxiliar tiene dos versiones: una que devuelve un objeto (por ejemplo, $util.dynamodb.toString(...)) y otra que devuelve el objeto como una cadena JSON (por ejemplo, $util.dynamodb.toStringJson(...)). En el ejemplo anterior, utilizamos la versión que devuelve los datos como una cadena JSON. Si desea manipular el objeto antes de usarlo en la plantilla, puede elegir que se devuelva en un objeto en su lugar, como se muestra a continuación:

{ "version" : "2017-02-28", "operation" : "PutItem", "key": { "id" : $util.dynamodb.toDynamoDBJson($util.autoId()) }, #set( $myFoo = $util.dynamodb.toMapValues($ctx.args) ) #set( $myFoo.version = $util.dynamodb.toNumber(1) ) #set( $myFoo.timestamp = $util.dynamodb.toString($util.time.nowISO8601())) "attributeValues" : $util.toJson($myFoo) }

En el ejemplo anterior devolvemos los argumentos convertidos como un mapa en lugar de una cadena JSON y después añadimos los campos version y timestamp antes de incluirlos finalmente en el campo attributeValues de la plantilla mediante $util.toJson(...).

La versión JSON de cada una de las aplicaciones auxiliares equivale a encapsular la versión que no es de JSON en $util.toJson(...). Por ejemplo, las siguientes instrucciones son exactamente lo mismo:

$util.toStringJson("Hello, World!") $util.toJson($util.toString("Hello, World!"))

toDynamoDB

$util.dynamodb.toDynamoDB(Object) : Map

Herramienta de conversión general de objetos para DynamoDB que convierte objetos de entrada en la representación de DynamoDB correspondiente. Es algo inflexible en cuanto al modo en que representa algunos tipos: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Ejemplo de cadena

Input: $util.dynamodb.toDynamoDB("foo") Output: { "S" : "foo" }

Ejemplo de número

Input: $util.dynamodb.toDynamoDB(12345) Output: { "N" : 12345 }

Ejemplo de booleano

Input: $util.dynamodb.toDynamoDB(true) Output: { "BOOL" : true }

Ejemplo de lista

Input: $util.dynamodb.toDynamoDB([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }

Ejemplo de mapa

Input: $util.dynamodb.toDynamoDB({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
$util.dynamodb.toDynamoDBJson(Object) : String

Lo mismo que $util.dynamodb.toDynamoDB(Object) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toString

$util.dynamodb.toString(String) : String

Convierte una cadena de entrada al formato de cadena de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toString("foo") Output: { "S" : "foo" }
$util.dynamodb.toStringJson(String) : Map

Lo mismo que $util.dynamodb.toString(String) : String, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.toStringSet(List<String>) : Map

Convierte una lista con cadenas al formato de conjunto de cadenas de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toStringSet([ "foo", "bar", "baz" ]) Output: { "SS" : [ "foo", "bar", "baz" ] }
$util.dynamodb.toStringSetJson(List<String>) : String

Lo mismo que $util.dynamodb.toStringSet(List<String>) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toNumber

$util.dynamodb.toNumber(Number) : Map

Convierte un número al formato de número de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toNumber(12345) Output: { "N" : 12345 }
$util.dynamodb.toNumberJson(Number) : String

Lo mismo que $util.dynamodb.toNumber(Number) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.toNumberSet(List<Number>) : Map

Convierte una lista de números al formato de conjunto de números de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toNumberSet([ 1, 23, 4.56 ]) Output: { "NS" : [ 1, 23, 4.56 ] }
$util.dynamodb.toNumberSetJson(List<Number>) : String

Lo mismo que $util.dynamodb.toNumberSet(List<Number>) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toBinary

$util.dynamodb.toBinary(String) : Map

Convierte datos binarios codificados como una cadena en base64 al formato binario de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toBinary("foo") Output: { "B" : "foo" }
$util.dynamodb.toBinaryJson(String) : String

Lo mismo que $util.dynamodb.toBinary(String) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.toBinarySet(List<String>) : Map

Convierte una lista de datos binarios codificados como cadenas en base64 al formato de conjunto binario de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toBinarySet([ "foo", "bar", "baz" ]) Output: { "BS" : [ "foo", "bar", "baz" ] }
$util.dynamodb.toBinarySetJson(List<String>) : String

Lo mismo que $util.dynamodb.toBinarySet(List<String>) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toBoolean

$util.dynamodb.toBoolean(Boolean) : Map

Convierte un valor booleano al formato booleano correspondiente de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toBoolean(true) Output: { "BOOL" : true }
$util.dynamodb.toBooleanJson(Boolean) : String

Lo mismo que $util.dynamodb.toBoolean(Boolean) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toNull

$util.dynamodb.toNull() : Map

Devuelve un valor nulo con el formato nulo de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toNull() Output: { "NULL" : null }
$util.dynamodb.toNullJson() : String

Lo mismo que $util.dynamodb.toNull() : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toList

$util.dynamodb.toList(List) : Map

Convierte una lista de objetos al formato de lista de DynamoDB. Cada elemento de la lista se convierte también al formato correspondiente de DynamoDB. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toList([ "foo", 123, { "bar" : "baz" } ]) Output: { "L" : [ { "S" : "foo" }, { "N" : 123 }, { "M" : { "bar" : { "S" : "baz" } } } ] }
$util.dynamodb.toListJson(List) : String

Lo mismo que $util.dynamodb.toList(List) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades toMap

$util.dynamodb.toMap(Map) : Map

Convierte un mapa al formato de mapa de DynamoDB. Cada valor del mapa se convierte también al formato de DynamoDB correspondiente. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS"). Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toMap({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "M" : { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } } }
$util.dynamodb.toMapJson(Map) : String

Lo mismo que $util.dynamodb.toMap(Map) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.toMapValues(Map) : Map

Crea una copia del mapa en la que cada valor se convierte al formato correspondiente de DynamoDB. Es algo inflexible en cuanto al modo en que representa algunos objetos anidados: por ejemplo, utiliza listas ("L") en lugar de conjuntos ("SS", "NS" "BS").

Input: $util.dynamodb.toMapValues({ "foo": "bar", "baz" : 1234, "beep": [ "boop"] }) Output: { "foo" : { "S" : "bar" }, "baz" : { "N" : 1234 }, "beep" : { "L" : [ { "S" : "boop" } ] } }
nota

Esto es ligeramente diferente de $util.dynamodb.toMap(Map) : Map, ya que solo devuelve el contenido del valor de atributo de DynamoDB y no todo el valor de atributo en sí. Por ejemplo, las siguientes instrucciones son exactamente lo mismo:

$util.dynamodb.toMapValues($map) $util.dynamodb.toMap($map).get("M")
$util.dynamodb.toMapValuesJson(Map) : String

Lo mismo que $util.dynamodb.toMapValues(Map) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

Utilidades S3Object

$util.dynamodb.toS3Object(String key, String bucket, String region) : Map

Convierte la clave, el bucket y la región a la representación de objeto de S3 de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toS3Object("foo", "bar", region = "baz") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo", \"bucket\" : \"bar", \"region\" : \"baz" } }" }
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region) : String

Lo mismo que $util.dynamodb.toS3Object(String key, String bucket, String region) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map

Convierte la clave, el bucket, la región y la versión opcional a la representación de objeto de S3 de DynamoDB. Esto devuelve un objeto que describe el valor del atributo de DynamoDB.

Input: $util.dynamodb.toS3Object("foo", "bar", "baz", "beep") Output: { "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }
$util.dynamodb.toS3ObjectJson(String key, String bucket, String region, String version) : String

Lo mismo que $util.dynamodb.toS3Object(String key, String bucket, String region, String version) : Map, pero devuelve un valor de atributo de DynamoDB como cadena con codificación JSON.

$util.dynamodb.fromS3ObjectJson(String) : Map

Acepta el valor de cadena de un objeto de S3 de DynamoDB y devuelve un mapa que contiene la clave, el bucket, la región y la versión opcional.

Input: $util.dynamodb.fromS3ObjectJson({ "S" : "{ \"s3\" : { \"key\" : \"foo\", \"bucket\" : \"bar\", \"region\" : \"baz\", \"version\" = \"beep\" } }" }) Output: { "key" : "foo", "bucket" : "bar", "region" : "baz", "version" : "beep" }