Wie konfiguriere ich ein AWS AppSync-Schema für den Umgang mit verschachtelten JSON-Daten in DynamoDB?

Lesedauer: 5 Minute
0

Ich möchte, dass mein AWS AppSync-Schema die Antwort aus einer Amazon DynamoDB-Tabelle abruft, die verschachtelte JSON-Daten enthält. Wie kann ich das machen?

Kurzbeschreibung

Gehen Sie wie folgt vor, um ein AWS AppSync-Schema für die Verarbeitung von verschachtelten JSON-Daten in DynamoDB abzurufen:

  • Fügen Sie der DynamoDB-Tabelle ein verschachteltes JSON-Datenelement hinzu.
  • Erstellen Sie eine AWS AppSync-API und hängen Sie die Datenquelle an.
  • Konfigurieren Sie das verschachtelte JSON-Schema in der AWS AppSync-API.
  • Hängen Sie der getItems-Abfrage einen Resolver an.
  • Erstellen Sie eine neue Testabfrage.

Wichtig: Das AWS AppSync-Schema übergibt in seiner Antwort an DynamoDB Nullwerte, wenn die Feldnamen nicht den verschachtelten JSON-Daten zugeordnet sind.

Lösung

Hinzufügen eines verschachtelten JSON-Datenelements zur DynamoDB-Tabelle

1.    Öffnen Sie die Amazon DynamoDB-Konsole.

2.    Wählen Sie Create table (Tabelle erstellen).

3.    Geben Sie in das Feld Table name (Tabellenname) einen aussagekräftigen Namen ein.

4.    Geben Sie im Feld Partition key (Partitionsschlüssel) einen Feldnamen ein. Zum Beispiel: id.

5.    Wählen Sie Create table (Tabelle erstellen). Die neue Tabelle wird auf der Seite Tables (Tabellen) der Konsole angezeigt.

6.    Wählen Sie in der Spalte Name den Namen der neuen Tabelle aus. Die Seite Overview (Übersichtsseite)der Tabelle wird geöffnet.

7.    Wählen Sie die Dropdown-Liste Actions (Aktionen) aus. Wählen Sie dann Create item (Element erstellen) aus. Die Seite Create item (Element erstellen) wird geöffnet.

8.    Wählen Sie die Schaltfläche JSON.

9.    Kopieren Sie den folgenden verschachtelten JSON-Datensatz, fügen Sie ihn in den JSON-Editor ein und wählen Sie dann Save (Speichern) aus:

Wichtig: Stellen Sie sicher, dass Sie den vorab ausgefüllten Inhalt im JSON-Editor mit dem verschachtelten JSON-Datensatz überschreiben.

Beispiel für einen verschachtelten JSON-Datensatz

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

Weitere Informationen finden Sie unter Erstellen einer Tabelle.

Erstellen einer AWS AppSync-API und Anhängen der Datenquelle

1.    Öffnen Sie die AWS AppSync-Konsole.

2.    Wählen Sie Create API (API erstellen) aus.

3.    Wählen Sie auf der Seite Getting Started (Erste Schritte) unter Customize your API or import from Amazon DynamoDB (Anpassen Ihrer API oder Import aus Amazon DynamoDB) die Option Build from scratch (Von Grund auf neu erstellen) aus.

4.    Wählen Sie Start.

5.    Geben Sie im Feld API name (API-Name) einen Namen für Ihre API ein.

6.    Wählen Sie Create (Erstellen).

7.    Wählen Sie im linken Navigationsbereich Data Sources (Datenquellen) aus.

8.    Wählen Sie Create data source (Datenquelle erstellen) aus.

9.    Wählen Sie auf der Seite New Data Source (Neue Datenquelle) unter Create new Data Source (Neue Datenquelle erstellen) die folgenden Optionen aus: Geben Sie für Data source name (Name der Datenquelle) einen aussagekräftigen Namen ein. Wählen Sie für Data source type (Datenquellentyp) die Amazon DynamoDB-Tabelle aus. Wählen Sie für Region die Region aus, die Ihre DynamoDB-Tabelle enthält. Wählen Sie für Table name (Tabellenname) die Tabelle aus, die Sie gerade erstellt haben.

Wichtig: Belassen Sie alle anderen Optionen als Standard.

10.    Wählen Sie Create (Erstellen).

Weitere Informationen finden Sie unter Anhängen einer Datenquelle.

Konfigurieren des verschachtelten JSON-Schemas in der AWS AppSync-API

1.    Öffnen Sie die AWS AppSync-Konsole.

2.    Wählen Sie im linken Navigationsbereich Schema aus.

3.    Kopieren Sie das folgende verschachtelte JSON-Schema, fügen Sie es in den JSON-Editor ein und wählen Sie dann Save Schema (Schema speichern) aus:

Wichtig: Stellen Sie sicher, dass Sie den vorab ausgefüllten Inhalt im JSON-Editor mit dem verschachtelten JSON-Schema überschreiben.

Beispiel für ein verschachteltes JSON-Schema

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
}

Weitere Informationen finden Sie unter Entwerfen Ihres Schemas.

Anhängen eines Resolvers an die getItems-Abfrage

1.    Öffnen Sie die AWS AppSync-Konsole.

2.    Scrollen Sie auf der Seite Schema Ihrer API unter ** Resolvers** (Resolver) zu Query (Abfrage).
Hinweis: Oder Sie können im Feld Filter types (Filtertypen) Query (Abfrage) eingeben.

3.    Wählen Sie neben getItems(...): allData unter Resolver die Option Attach (Anhängen) aus.

4.    Wählen Sie auf der Seite Create new Resolver (Neuen Resolver erstellen) unter Data source name (Datenquellenname) den Namen der DynamoDB-Tabelle aus, die Sie erstellt haben.

Wichtig: Ändern Sie nicht die standardmäßigen Zuordnungsvorlagen für den DynamoDB-Vorgang GetItem.

5.    Wählen Sie Save Resolvers (Resolver speichern) aus.

Beispiel für eine Vorlage für die Zuordnung von Anfragen

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

Beispiel für eine Vorlage für die Zuordnung von Antworten

$util.toJson($ctx.result)

Weitere Informationen finden Sie unter Konfigurieren der Resolver.

Erstellen einer neuen Testabfrage

1.    Öffnen Sie die AWS AppSync-Konsole.

2.    Wählen Sie im linken Navigationsbereich Queries (Abfragen) aus.

3.    Kopieren Sie auf der Seite Queries (Abfragen) Ihrer API im Abfrageeditor die folgende Abfrage und fügen Sie sie ein:

Beispiel für eine Testabfrage

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

4.    Um die Testabfrage auszuführen, wählen Sie das **Abspielsymbol ** oder drücken Sie Strg/Cmd + Eingabetaste.

Beispiel für Ergebnisse einer Testabfrage

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

Sie können jetzt über AWS AppSync GraphQL-Operationen alle verschachtelten JSON-Daten aus einer Amazon DynamoDB-Tabelle abrufen.


Verwandte Informationen

Unterstützte Datentypen und Benennungsregeln in Amazon DynamoDB

Den GetPost-Resolver einrichten (DynamoDB getItem)