Construindo GraphQL APIs com introspecção RDS - AWS AppSync

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Construindo GraphQL APIs com introspecção RDS

AWS AppSync O utilitário de introspecção da pode descobrir modelos de tabelas de banco de dados e propor tipos de GraphQL. O API assistente de criação do AWS AppSync console pode gerar instantaneamente e a API partir de um banco de dados Aurora My SQL ou SQL Postgre. Ele cria automaticamente tipos e JavaScript resolvedores para ler e gravar dados.

AWS AppSync fornece integração direta com bancos de dados Amazon Aurora por meio do Amazon RDS Data. API Em vez de exigir uma conexão persistente com o banco de RDS dados, o Amazon Data API oferece um HTTP endpoint seguro que AWS AppSync se conecta para execução SQL declarações. Você pode usar isso para criar um banco de dados relacional API para suas cargas de SQL trabalho My SQL e Postgre no Aurora.

Criar um API para seu banco de dados relacional AWS AppSync tem várias vantagens:

  • O banco de dados não é diretamente exposto aos clientes, separando o ponto de acesso do próprio banco de dados.

  • Você pode criar aplicativos APIs personalizados de acordo com as necessidades de diferentes aplicativos, eliminando a necessidade de lógica de negócios personalizada nos front-ends. Isso se alinha com o padrão Backend-For-Frontend (BFF).

  • A autorização e o controle de acesso podem ser implementados na AWS AppSync camada usando vários modos de autorização para controlar o acesso. Nenhum recurso computacional adicional é necessário para se conectar ao banco de dados, como hospedar um servidor web ou fazer conexões por proxy.

  • Recursos em tempo real podem ser adicionados por meio de assinaturas, com mutações de dados feitas por meio de envio AppSync automático para clientes conectados.

  • Os clientes podem se conectar ao API over HTTPS usando portas comuns, como 443.

AWS AppSync facilita a criação APIs a partir de bancos de dados relacionais existentes. O utilitário de introspecção pode descobrir modelos por meio de tabelas de banco de dados e propor tipos de GraphQL. O API assistente de criação do AWS AppSync console pode gerar instantaneamente e a API partir de um banco de dados Aurora My SQL ou SQL Postgre. Ele cria automaticamente tipos e JavaScript resolvedores para ler e gravar dados.

AWS AppSync fornece JavaScript utilitários integrados para simplificar a escrita de SQL declarações em resolvedores. Você pode usar os modelos AWS AppSync de sql tags para instruções estáticas com valores dinâmicos ou os utilitários do rds módulo para criar instruções programaticamente. Consulte a referência da função de resolução para fontes de RDS dados e módulos integrados para saber mais.

Usar o recurso de introspecção (console)

Para ver um tutorial detalhado e um guia de introdução, consulte Tutorial: Aurora Postgre SQL Serverless with Data. API

O AWS AppSync console permite que você crie um AWS AppSync GraphQL a API partir do seu banco de dados Aurora existente configurado com os dados API em apenas alguns minutos. Isso gera rapidamente um esquema operacional com base na configuração do banco de dados. Você pode usar o API estado em que se encontra ou criar nele para adicionar recursos.

  1. Faça login no AWS Management Console e abra o AppSyncconsole.

    1. No Painel, escolha Criar API.

  2. Em APIopções, escolha GraphQL APIs, Comece com um cluster Amazon Aurora e, em seguida, Avançar.

    1. Insira um Nome de API. Isso será usado como um identificador para o API no console.

    2. Para obter detalhes de contato, você pode inserir um ponto de contato para identificar um gerente para API o. Esse é um campo opcional.

    3. Em APIConfiguração privada, você pode ativar os API recursos privados. Um privado só API pode ser acessado a partir de um VPC endpoint configurado (VPCE). Para obter mais informações, consulte Privado APIs.

      Não recomendamos habilitar esse atributo para este exemplo. Após analisar suas entradas, selecione Próximo.

  3. Na página Banco de dados, escolha Selecionar banco de dados.

    1. É necessário escolher o banco de dados no cluster. A primeira etapa é selecionar a região na qual o cluster existe.

    2. Selecione o Cluster do Aurora na lista suspensa. Observe que você deve ter criado e ativado os dados correspondentes API antes de usar o recurso.

    3. Depois, é necessário adicionar as credenciais do banco de dados ao serviço. Isso é feito principalmente usando AWS Secrets Manager. Selecione a região onde existe o segredo. Para obter mais informações sobre como recuperar informações de segredos, consulte Find secrets ou Retrieve secrets.

    4. Adicione o segredo da lista suspensa. Observe que o usuário deve ter permissões de leitura para o banco de dados.

  4. Escolha Importar.

    AWS AppSync começará a introspectar seu banco de dados, descobrindo tabelas, colunas, chaves primárias e índices. Ele verifica se as tabelas descobertas podem ser suportadas em um GraphQLAPI. Observe que, para oferecer suporte à criação de novas linhas, as tabelas precisam de uma chave primária, que pode usar várias colunas. AWS AppSync mapeia as colunas da tabela para campos de texto da seguinte forma:

    Tipo de dados Tipo de campo
    VARCHAR String
    CHAR String
    BINARY String
    VARBINARY String
    TINYBLOB String
    TINYTEXT String
    TEXT String
    BLOB String
    MEDIUMTEXT String
    MEDIUMBLOB String
    LONGTEXT String
    LONGBLOB String
    BOOL Booleano
    BOOLEAN Booleano
    BIT Int
    TINYINT Int
    SMALLINT Int
    MEDIUMINT Int
    INT Int
    INTEGER Int
    BIGINT Int
    YEAR Int
    FLOAT Float
    DOUBLE Float
    DECIMAL Float
    DEC Float
    NUMERIC Float
    DATE AWSDate
    TIMESTAMP String
    DATETIME String
    TIME AWSTime
    JSON AWSJson
    ENUM ENUM
  5. Quando a descoberta da tabela for concluída, a seção Banco de dados será preenchida com as informações. Na nova seção Tabelas do banco de dados, os dados da tabela podem já estar preenchidos e convertidos em um tipo para o esquema. Se você não vê alguns dos dados necessários, pode verificá-los escolhendo Adicionar tabelas, clicando nas caixas de seleção desses tipos no modal exibido e escolhendo Adicionar.

    Para remover um tipo da seção Tabelas do banco de dados, clique na caixa de seleção ao lado do tipo a ser removido e selecione Remover. Os tipos removidos serão colocados no modal Adicionar tabelas se quiser adicioná-los novamente mais tarde.

    Observe que AWS AppSync usa os nomes das tabelas como nomes de tipo, mas você pode renomeá-los - por exemplo, alterando o nome de uma tabela plural, como movies ao nome do tipo Movie. Para renomear um tipo na seção Tabelas do banco de dados, clique na caixa de seleção do tipo que você deseja renomear e, em seguida, clique no ícone do lápis na coluna Nome do tipo.

    Para visualizar o conteúdo do esquema com base nas seleções, selecione Visualizar esquema. Observe que esse esquema não pode estar vazio. Será necessário ter, pelo menos, uma tabela convertida em um tipo. Além disso, esse esquema não pode exceder 1 MB.

    1. Em Perfil de serviço, decida se deseja criar um perfil de serviço especificamente para essa importação ou usar um perfil existente.

  6. Escolha Próximo.

  7. Em seguida, escolha se deseja criar um somente para leitura API (somente consultas) ou um API para leitura e gravação de dados (com consultas e mutações). O último também aceita assinaturas em tempo real acionadas por mutações.

  8. Escolha Próximo.

  9. Revise suas escolhas e escolha Criar API. AWS AppSync criará API e anexará resolvedores a consultas e mutações. O gerado API está totalmente operacional e pode ser estendido conforme necessário.

Usando o recurso de introspecção () API

Você pode usar a StartDataSourceIntrospection introspecção API para descobrir modelos em seu banco de dados programaticamente. Para obter mais detalhes sobre o comando, consulte o uso do StartDataSourceIntrospectionAPI.

Para usarStartDataSourceIntrospection, forneça seu cluster Aurora Amazon Resource Name (ARN), nome do banco de dados e AWS Secrets Manager segredo. ARN O comando inicia o processo de introspecção. É possível recuperar os resultados com o comando GetDataSourceIntrospection. Você pode especificar se o comando deve retornar a string Storage Definition Language (SDL) para os modelos descobertos. Isso é útil para gerar uma definição de SDL esquema diretamente dos modelos descobertos.

Por exemplo, se você tiver a seguinte instrução Data definition language (DDL) para uma Todos tabela simples:

create table if not exists public.todos ( id serial constraint todos_pk primary key, description text, due timestamp, "createdAt" timestamp default now() );

Você deve começar a introspecção com o seguinte:

aws appsync start-data-source-introspection \ --rds-data-api-config resourceArn=<cluster-arn>,secretArn=<secret-arn>,databaseName=database

Depois, use o comando GetDataSourceIntrospection para recuperar o resultado.

aws appsync get-data-source-introspection \ --introspection-id a1234567-8910-abcd-efgh-identifier \ --include-models-sdl

Ele exibirá o resultado a seguir.

{ "introspectionId": "a1234567-8910-abcd-efgh-identifier", "introspectionStatus": "SUCCESS", "introspectionStatusDetail": null, "introspectionResult": { "models": [ { "name": "todos", "fields": [ { "name": "description", "type": { "kind": "Scalar", "name": "String", "type": null, "values": null }, "length": 0 }, { "name": "due", "type": { "kind": "Scalar", "name": "AWSDateTime", "type": null, "values": null }, "length": 0 }, { "name": "id", "type": { "kind": "NonNull", "name": null, "type": { "kind": "Scalar", "name": "Int", "type": null, "values": null }, "values": null }, "length": 0 }, { "name": "createdAt", "type": { "kind": "Scalar", "name": "AWSDateTime", "type": null, "values": null }, "length": 0 } ], "primaryKey": { "name": "PRIMARY_KEY", "fields": [ "id" ] }, "indexes": [], "sdl": "type todos\n{\ndescription: String\n\ndue: AWSDateTime\n\nid: Int!\n\ncreatedAt: AW SDateTime\n}\n" } ], "nextToken": null } }