Como configuro um esquema do AWS AppSync para processar dados JSON aninhados no DynamoDB?

5 minuto de leitura
0

Quero que meu esquema do AWS AppSync recupere a resposta de uma tabela do Amazon DynamoDB que tenha dados JSON aninhados. Como posso fazer isso?

Breve descrição

Para fazer com que um esquema do AWS AppSync lide com dados JSON aninhados no DynamoDB, faça o seguinte:

  • Adicione um item de dados JSON aninhado à tabela do DynamoDB.
  • Crie uma API do AWS AppSync e anexe a fonte de dados.
  • Configure o esquema JSON aninhado na API do AWS AppSync.
  • Anexe um resolvedor à consulta getItems.
  • Crie uma nova consulta de teste.

Importante: o esquema do AWS AppSync transmite valores nulos na sua resposta ao DynamoDB quando os nomes dos campos não são mapeados para os dados JSON aninhados.

Resolução

Adicionar um item de dados JSON aninhado à tabela do DynamoDB

1.    Abra o console do Amazon DynamoDB.

2.    Escolha Criar tabela.

3.    No campo Nome da tabela, insira um nome descritivo.

4.    No campo Chave da partição, insira um nome de campo. Por exemplo: id.

5.    Escolha Criar tabela. A nova tabela aparece na página Tabelas do console.

6.    Na coluna Nome, escolha o nome da nova tabela. A página Visão geral da tabela é aberta.

7.    Selecione a lista suspensa Ações. Em seguida, escolha Criar item. A página Criar item é aberta.

8.    Escolha o botão JSON.

9.    Copie e cole o seguinte registro JSON aninhado no editor JSON e escolha Salvar:

Importante: certifique-se de substituir o conteúdo pré-preenchido no editor JSON pelo registro JSON aninhado.

Exemplo de registro JSON aninhado

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

Para mais informações, consulte Criar uma tabela.

Criar uma API do AWS AppSync e anexe a fonte de dados

1.    Abra o console do AWS AppSync.

2.    Escolha Criar API.

3.    Na página Primeiros passos, em Personalizar sua API ou importar do Amazon DynamoDB, escolha Criar do zero.

4.    Escolha Iniciar.

5.    No campo Nome da API, insira um nome para sua API.

6.    Escolha Criar.

7.    No painel de navegação esquerdo, escolha Fontes de dados.

8.    Escolha Criar fonte de dados.

9.    Na página Nova fonte de dados, em Criar nova fonte de dados, escolha as seguintes opções: Em Nome da fonte de dados, insira um nome descritivo. Para Tipo de fonte de dados, escolha Tabela do Amazon DynamoDB. Em Região, escolha a região que contém sua tabela do DynamoDB. Em Nome da tabela, escolha a tabela que você acabou de criar.

Importante: deixe todas as outras opções como padrão.

10.    Escolha Criar.

Para mais informações, consulte Anexar uma fonte de dados.

Configurar o esquema JSON aninhado na API do AWS AppSync

1.    Abra o console do AWS AppSync.

2.    No painel de navegação esquerdo, escolha Esquema.

3.    Copie e cole o seguinte esquema JSON aninhado no editor JSON e escolha Salvar esquema:

Importante: certifique-se de substituir o conteúdo pré-preenchido no editor JSON pelo esquema JSON aninhado.

Exemplo de esquema JSON aninhado

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 mais informações, consulte Projeto do esquema.

Anexar um resolvedor à consulta getItems

1.    Abra o console do AWS AppSync.

2.    Na página Esquema da sua API, em Resolvedores, vá até Consulta.
Observação: ou, no campo Tipos de filtro, você pode inserir Query.

3.    Ao lado de getItems(...): allData, em Resolvedor, escolha Anexar.

4.    Na página Criar novo resolvedor, em Nome da fonte de dados, escolha o nome da tabela do DynamoDB que você criou.

Importante: não altere os modelos de mapeamento padrão para a operação GetItem do DynamoDB.

5.    Escolha Salvar resolvedores.

Exemplo de modelo de mapeamento de solicitação

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

Exemplo de modelo de mapeamento de resposta

$util.toJson($ctx.result)

Para mais informações, consulte Configurar resolvedores.

Criar uma nova consulta de teste

1.    Abra o console do AWS AppSync.

2.    No painel de navegação esquerdo, escolha Consultas.

3.    Na página Consultas da sua API, no Editor de consultas, copie e cole a seguinte consulta:

Exemplo de consulta de teste

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

4.    Para executar a consulta de teste, escolha o ícone de reprodução -ou- pressione Ctrl/Cmd + Enter.

Exemplo de resultados de consulta de teste

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

Agora, você pode recuperar qualquer dado JSON aninhado de uma tabela do Amazon DynamoDB por meio das operações GraphQL do AWS AppSync.


Informações relacionadas

Tipos de dados e regras de nomenclatura com suporte no Amazon DynamoDB

Configurar o resolvedor getPost (DynamoDB GetItem)