Come posso configurare uno schema AWS AppSync per gestire dati JSON annidati in DynamoDB?

5 minuti di lettura
0

Desidero che il mio schema AWS AppSync recuperi la risposta da una tabella Amazon DynamoDB contenente dati JSON annidati. Come posso farlo?

Breve descrizione

Per ottenere uno schema AWS AppSync per gestire dati JSON annidati in DynamoDB, procedi come segue:

  • Aggiungi un elemento di dati JSON annidato alla tabella DynamoDB.
  • Crea un'API AWS AppSync e collega l’origine dati.
  • Configura lo schema JSON annidato nell'API AWS AppSync.
  • Collega un resolver alla query getItems.
  • Crea una nuova query di test.

Importante: lo schema AWS AppSync trasmette valori nulli nella sua risposta a DynamoDB se i nomi dei campi non sono mappati sui dati JSON annidati.

Risoluzione

Aggiungi un elemento di dati JSON annidato alla tabella DynamoDB

1.    Apri la console Amazon DynamoDB.

2.    Scegli Crea tabella.

3.    Nel campo Nome tabella, immetti un nome descrittivo.

4.    Nel campo Chiave di partizione, inserisci un nome per il campo. Ad esempio: id.

5.    Scegli Crea tabella. La nuova tabella viene visualizzata nella pagina Tabelle della console.

6.    Nella colonna Nome, scegli il nome della nuova tabella. Viene visualizzata la pagina Panoramica della tabella.

7.    Seleziona l'elenco a discesa Azioni. Quindi, scegli Crea elemento. Viene visualizzata la pagina Crea elemento.

8.    Scegli il pulsante JSON.

9.    Copia e incolla il seguente record JSON annidato nell'editor JSON, quindi scegli Salva:

Importante: assicurati di sovrascrivere il contenuto precompilato nell'editor JSON con il record JSON annidato.

Esempio di record JSON annidato

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

Per ulteriori informazioni, consulta Crea una tabella.

Crea un'API AWS AppSync e collega l’origine dati

1.    Apri la console AWS AppSync.

2.    Scegli Crea API.

3.    Nella pagina Guida introduttiva, in Personalizza l’API o importa da Amazon DynamoDB, scegli Crea da zero.

4.    Scegli Avvia.

5.    Nel campo Nome API, inserisci un nome per l’API.

6.    Scegli Crea.

7.    Nel riquadro di navigazione a sinistra, scegli Origini dati.

8.    Scegli Crea origine dati.

9.    Nella pagina Nuova origine dati, in Crea una nuova origine dati, scegli le seguenti opzioni: In Nome origine dati, inserisci un nome descrittivo. In Tipo di origine dati, scegli la tabella Amazon DynamoDB. In Regione, scegli la regione che contiene la tabella DynamoDB. In Nome tabella, scegli la tabella appena creata.

Importante: lascia tutte le altre opzioni come predefinite.

10.    Scegli Crea.

Per ulteriori informazioni, consulta Attaching a data source.

Configura lo schema JSON annidato nell'API AWS AppSync

1.    Apri la console AWS AppSync.

2.    Nel riquadro di navigazione a sinistra, scegli Schema.

3.    Copia e incolla il seguente schema JSON annidato nell'editor JSON, quindi scegli Salva schema:

Importante: assicurati di sovrascrivere il contenuto precompilato nell'editor JSON con lo schema JSON annidato.

Esempio di schema JSON annidato

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
}

Per ulteriori informazioni, consulta Designing your schema.

Collega un resolver alla query getItems

1.    Apri la console AWS AppSync.

2.    Nella pagina Schema dell’API, in Resolver, scorri fino a Query.
Nota: in alternativa, nel campo Tipi di filtro, puoi inserire Query.

3.    Accanto a getItems(...): allData, in Resolver, scegli Collega.

4.    Nella pagina Crea un nuovo resolver, in Nome origine dati, scegli il nome della tabella DynamoDB che hai creato.

Importante: non modificare i modelli di mappatura predefiniti per l'operazione GetItem di DynamoDB.

5.    Scegli Salva resolver.

Esempio di modello di mappatura della richiesta

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

Esempio di modello di mappatura della risposta

$util.toJson($ctx.result)

Per ulteriori informazioni, consulta Configurazione dei resolver.

Crea una nuova query di test

1.    Apri la console AWS AppSync.

2.    Nel riquadro di navigazione a sinistra, scegli Query.

3.    Nella pagina Query dell’API, nell’Editor di query, copia e incolla la seguente query:

Esempio di query di test

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

4.    Per eseguire la query di test, scegli l'icona Riproduci o premi Ctrl/Cmd + Invio.

Esempio di risultati di una query di test

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

Ora puoi recuperare qualsiasi dato JSON annidato da una tabella Amazon DynamoDB tramite operazioni di AWS AppSync GraphQL.


Informazioni correlate

Tipi di dati e regole di denominazione supportati in Amazon DynamoDB

Configurazione del getPost resolver (DynamoDB) GetItem