¿Cómo configuro un esquema de AWS AppSync para gestionar datos JSON anidados en DynamoDB?

5 minutos de lectura
0

Quiero que mi esquema de AWS AppSync recupere la respuesta de una tabla de Amazon DynamoDB que tenga datos JSON anidados. ¿Cómo puedo hacerlo?

Descripción breve

Para obtener un esquema de AWS AppSync que gestione los datos JSON anidados en DynamoDB, haga lo siguiente:

  • Añada un elemento de datos JSON anidado a la tabla de DynamoDB.
  • Cree una API de AWS AppSync y adjunte el origen de datos.
  • Configure el esquema JSON anidado en la API de AWS AppSync.
  • Adjunte un solucionador a la consulta getItems.
  • Cree una nueva consulta de prueba.

Importante: El esquema de AWS AppSync transfiere valores nulos en su respuesta a DynamoDB si los nombres de los campos no están asignados a los datos JSON anidados.

Resolución

Añadir un elemento de datos JSON anidado a la tabla de DynamoDB

1.    Abra la consola de Amazon DynamoDB.

2.    Elija Crear tabla.

3.    En el campo Nombre de la tabla, introduzca un nombre descriptivo.

4.    En el campo Clave de partición, introduzca un nombre de campo. Por ejemplo: ID.

5.    Elija Crear tabla. La nueva tabla aparece en la página Tablas de la consola.

6.    En la columna Nombre, elija el nombre de la nueva tabla. Se abre la página Descripción general de la tabla.

7.    Seleccione la lista desplegable Acciones. A continuación, seleccione Crear elemento. Se abre la página Crear elemento.

8.    Elija el botón JSON.

9.    Copie y pegue el siguiente registro JSON anidado en el editor JSON y, a continuación, seleccione Guardar:

**Importante:**Asegúrese de sobrescribir el contenido rellenado previamente en el editor JSON con el registro JSON anidado.

Ejemplo de registro JSON anidado

{
  "id": "123",
  "product": {
    "model": {
      "property": {
        "battery": "li-ion",
        "device": "iOT-Device",
        "pressure": "1012",
        "up_time": "02:12:34"
      }
    }
  },
  "status": "In-Stock"
}

Para obtener más información, consulte Crear una tabla.

Cree una API de AWS AppSync y adjunte el origen de datos

1.    Abra la consola de AWS AppSync.

2.    Elija Crear API.

3.    En la Página de introducción, en Personalizar la API o importar desde Amazon DynamoDB, seleccione Crear desde cero.

4.    Seleccione Comenzar.

5.    En el campo Nombre de la API, introduzca un nombre para la API.

6.    Elija Crear.

7.    En el panel de navegación de la izquierda, seleccione Origen de datos.

8.    Elija Crear origen de datos.

9.    En la página Nuevo origen de datos, en Crear el origen de datos nuevo, elija las siguientes opciones: En Nombre de origen de datos, introduzca un nombre descriptivo. En Tipo de origen de datos, elija Tabla Amazon DynamoDB. En Región, elija la región que contiene la tabla de DynamoDB. En Nombre de la tabla, elija la tabla que acaba de crear.

Importante: Deje todas las demás opciones como predeterminadas.

10.    Elija Crear.

Para obtener más información, consulte Adjuntar un origen de datos.

Configure el esquema JSON anidado en la API de AWS AppSync

1.    Abra la consola de AWS AppSync.

2.    En el panel de navegación de la izquierda, seleccione Esquema.

3.    Copie y pegue el siguiente esquema JSON anidado en el editor JSON y, a continuación, seleccione Guardar esquema:

Importante: Asegúrese de sobrescribir el contenido rellenado previamente en el editor JSON con el esquema JSON anidado.

Ejemplo de esquema JSON anidado

type Query {
    getItems(id: String!): allData
}

type allData {
    id: String!
    product: toModel
    status: String
}

type items {
    battery: String
    device: String
    pressure: String
    up_time: String
}

schema {
    query: Query
}

type toModel {
    model: toProperties
}

type toProperties {
    property: items
}

Para obtener más información, consulte Diseñar el esquema.

Adjunte un solucionador a la consulta getItems

1.    Abra la consola de AWS AppSync.

2.    En la página Esquema de su API, en Solucionadores, desplácese hasta Consulta.
Nota: O bien, en el campo Tipos de filtros, puede introducir Consulta.

3.    Junto a getItems(...): allData, en Solucionador, elija Adjuntar.

4.    En la página Crear el solucionador nuevo, en Nombre del origen de datos, elija el nombre de la tabla de DynamoDB que creó.

Importante: No cambie las plantillas de asignación predeterminadas para la operación GetItem de DynamoDB.

5.    Seleccione Guardar solucionadores.

Ejemplo de plantilla de asignación de solicitudes

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

Ejemplo de plantilla de asignación de respuestas

$util.toJson($ctx.result)

Para obtener más información, consulte Configuración de solucionadores.

Crear una nueva consulta de prueba

1.    Abra la consola de AWS AppSync.

2.    En el panel de navegación de la izquierda, seleccione Consultas.

3.    En la página Consultas de su API, en el Editor de consultas, copie y pegue la siguiente consulta:

Ejemplo de consulta de prueba

query getItem {
    getItems(id:"123") {
      id
      product{
          model{
            property{
            pressure
            device
            battery
            up_time
          }
        }
      }
      status
    }
  }

4.    Para ejecutar la consulta de prueba, elija el icono de reproducción o pulse Ctrl/Cmd + Enter.

Ejemplo de resultados de consultas de prueba

{
  "data": {
    "getItems": {
      "id": "123",
      "product": {
        "model": {
          "property": {
            "pressure": "1012",
            "device": "iOT-Device",
            "battery": "li-ion",
            "up_time": "02:12:34"
          }
        }
      },
      "status": "In-Stock"
    }
  }
}

Ahora puede recuperar cualquier dato JSON anidado de una tabla de Amazon DynamoDB mediante las operaciones de AWS AppSync GraphQL.


Información relacionada

Tipos de datos y reglas de nomenclatura admitidos en Amazon DynamoDB

Configuración del solucionador getPost (DynamoDB GetItem)