View a markdown version of this page

Creazione di API GraphQL con introspezione RDS - AWS AppSync GraphQL

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Creazione di API GraphQL con introspezione RDS

AWS AppSync l'utilità di introspezione può scoprire modelli dalle tabelle del database e proporre tipi GraphQL. La procedura guidata Create API della AWS AppSync console può generare istantaneamente un'API da un database Aurora MySQL o PostgreSQL. Crea automaticamente tipi e resolver per leggere e scrivere dati. JavaScript

AWS AppSync fornisce l'integrazione diretta con i database Amazon Aurora tramite l'API Amazon RDS Data. Anziché richiedere una connessione persistente al database, l'API Amazon RDS Data offre un endpoint HTTP sicuro a cui AWS AppSync si connette per eseguire le istruzioni. SQL Puoi usarlo per creare un'API di database relazionale per i tuoi carichi di lavoro MySQL e PostgreSQL su Aurora.

La creazione di un'API per il tuo database relazionale presenta diversi vantaggi: AWS AppSync

  • Il database non è esposto direttamente ai client, pertanto il punto di accesso è dissociato dal database stesso.

  • È possibile creare API personalizzate in base alle esigenze delle diverse applicazioni, eliminando la necessità di una logica aziendale personalizzata nei frontend. Questo è in linea con il pattern (BFF). Backend-For-Frontend

  • L'autorizzazione e il controllo degli accessi possono essere implementati a AWS AppSync livello utilizzando varie modalità di autorizzazione per controllare l'accesso. Non sono necessarie risorse di calcolo aggiuntive per connettersi al database, come l'hosting di un server Web o le connessioni proxy.

  • Real-time le funzionalità possono essere aggiunte tramite abbonamenti, con le mutazioni dei dati effettuate tramite invio AppSync automatico ai client connessi.

  • I client possono connettersi all'API tramite HTTPS utilizzando porte comuni come 443.

AWS AppSync semplifica la creazione di API da database relazionali esistenti. La sua utilità di introspezione può scoprire modelli dalle tabelle del database e proporre tipi GraphQL. La procedura guidata Create API della AWS AppSync console può generare istantaneamente un'API da un database Aurora MySQL o PostgreSQL. Crea automaticamente tipi e resolver per leggere e scrivere dati. JavaScript

AWS AppSync fornisce JavaScript utilità integrate per semplificare la scrittura di istruzioni SQL nei resolver. È possibile utilizzare i modelli AWS AppSync di sql tag per istruzioni statiche con valori dinamici o le utilità del rds modulo per creare istruzioni a livello di codice. Per ulteriori informazioni, consulta il riferimento alla funzione resolver per le origini dati RDS e i moduli integrati. https://docs.aws.amazon.com/appsync/latest/devguide/built-in-modules-js.html#built-in-rds-modules

Utilizzo della funzione di introspezione (console)

Per un tutorial dettagliato e una guida introduttiva, vedi Tutorial: Aurora PostgreSQL Serverless with Data API.

La AWS AppSync console consente di creare un'API AWS AppSync GraphQL dal database Aurora esistente configurato con l'API Data in pochi minuti. Questo genera rapidamente uno schema operativo basato sulla configurazione del database. Puoi utilizzare l'API così com'è o basarti su di essa per aggiungere funzionalità.

  1. Accedi Console di gestione AWS e apri la AppSync console.

    1. Nel pannello di controllo, scegliere Create API (Crea API).

  2. In Opzioni API, scegli API GraphQL, Inizia con un cluster Amazon Aurora, quindi Avanti.

    1. Inserisci un nome API. Questo verrà utilizzato come identificatore per l'API nella console.

    2. Per i dettagli di contatto, puoi inserire un punto di contatto per identificare un responsabile dell'API. Questo campo è opzionale.

    3. In Configurazione API privata, puoi abilitare le funzionalità API private. È possibile accedere a un'API privata solo da un endpoint VPC (VPCE) configurato. Per ulteriori informazioni, consulta API private. https://docs.aws.amazon.com/appsync/latest/devguide/using-private-apis.html

      Non è consigliabile abilitare questa funzionalità per questo esempio. Scegli Avanti dopo aver esaminato i tuoi input.

  3. Nella pagina Database, scegli Seleziona database.

    1. Devi scegliere il tuo database dal tuo cluster. Il primo passo è scegliere la regione in cui esiste il cluster.

    2. Scegli il cluster Aurora dall'elenco a discesa. Nota che devi aver creato e abilitato un'API di dati corrispondente prima di utilizzare la risorsa.

    3. Successivamente, è necessario aggiungere al servizio le credenziali del database. Ciò viene fatto principalmente utilizzando AWS Secrets Manager. Scegli la regione in cui si trova il tuo segreto. Per ulteriori informazioni su come recuperare informazioni segrete, consulta Trova segreti o Recupera segreti.

    4. Aggiungi il tuo segreto dall'elenco a discesa. Tieni presente che l'utente deve disporre delle autorizzazioni di lettura per il tuo database.

  4. Scegli Importa.

    AWS AppSync inizierà a esaminare il database, scoprendo tabelle, colonne, chiavi primarie e indici. Verifica che le tabelle scoperte possano essere supportate in un'API GraphQL. Nota che per supportare la creazione di nuove righe, le tabelle necessitano di una chiave primaria, che può utilizzare più colonne. AWS AppSync mappa le colonne della tabella per digitare i campi come segue:

    Tipo di dati Tipo di campo
    VARCHAR Stringa
    CHAR Stringa
    BINARY Stringa
    VARBINARY Stringa
    TINYBLOB Stringa
    TINYTEXT Stringa
    TEXT Stringa
    BLOB Stringa
    MEDIUMTEXT Stringa
    MEDIUMBLOB Stringa
    LONGTEXT Stringa
    LONGBLOB Stringa
    BOOL Booleano
    BOOLEAN Booleano
    BIT Int
    TINYINT Int
    SMALLINT Int
    MEDIUMINT Int
    INT Int
    INTEGER Int
    BIGINT Int
    ANNO Int
    FLOAT Float
    DOUBLE Float
    DECIMAL Float
    DEC Float
    NUMERIC Float
    DATE AWSDate
    TIMESTAMP Stringa
    DATETIME Stringa
    TIME AWSTime
    JSON awsJson
    ENUM ENUM
  5. Una volta completata l'individuazione della tabella, la sezione Database verrà popolata con le tue informazioni. Nella nuova sezione Tabelle del database, i dati della tabella potrebbero essere già compilati e convertiti in un tipo per lo schema. Se non vedi alcuni dei dati richiesti, puoi verificarli scegliendo Aggiungi tabelle, facendo clic sulle caselle di controllo relative a tali tipi nella finestra modale visualizzata, quindi scegliendo Aggiungi.

    Per rimuovere un tipo dalla sezione Tabelle del database, fai clic sulla casella di controllo accanto al tipo che desideri rimuovere, quindi scegli Rimuovi. I tipi rimossi verranno inseriti nella modalità Aggiungi tabelle se desideri aggiungerli nuovamente in un secondo momento.

    Nota che AWS AppSync utilizza i nomi delle tabelle come nomi dei tipi, ma puoi rinominarli, ad esempio cambiando il nome di una tabella plurale come movies il nome del tipo. Movie Per rinominare un tipo nella sezione Tabelle del database, fai clic sulla casella di controllo del tipo che desideri rinominare, quindi fai clic sull'icona a forma di matita nella colonna Nome del tipo.

    Per visualizzare in anteprima il contenuto dello schema in base alle selezioni, scegli Anteprima schema. Nota che questo schema non può essere vuoto, quindi dovrai convertire almeno una tabella in un tipo. Inoltre, questo schema non può superare 1 MB di dimensione.

    1. In Ruolo di servizio, scegli se creare un nuovo ruolo di servizio specifico per questa importazione o utilizzare un ruolo esistente.

  6. Scegli Avanti.

  7. Quindi, scegli se creare un'API di sola lettura (solo query) o un'API per leggere e scrivere dati (con query e mutazioni). Quest'ultima supporta anche sottoscrizioni in tempo reale attivate da mutazioni.

  8. Scegli Avanti.

  9. Rivedi le tue scelte e poi scegli Crea API. AWS AppSync creerà l'API e allegherà i resolver alle query e alle mutazioni. L'API generata è completamente operativa e può essere estesa secondo necessità.

Utilizzo della funzione di introspezione (API)

Puoi utilizzare l'API di StartDataSourceIntrospection introspezione per scoprire i modelli nel tuo database a livello di programmazione. Per maggiori dettagli sul comando, consulta Utilizzo dell'API. StartDataSourceIntrospection

Per utilizzarloStartDataSourceIntrospection, fornisci il nome Amazon Resource Name (ARN), il nome del database e l'ARN AWS Secrets Manager segreto del cluster Aurora. Il comando avvia il processo di introspezione. È possibile recuperare i risultati con il comando. GetDataSourceIntrospection È possibile specificare se il comando deve restituire la stringa SDL (Storage Definition Language) per i modelli rilevati. Ciò è utile per generare una definizione dello schema SDL direttamente dai modelli rilevati.

Ad esempio, se avete la seguente dichiarazione DDL (Data Definition Language) per una semplice tabella: Todos

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

Iniziate l'introspezione con quanto segue.

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

Quindi, utilizzate il GetDataSourceIntrospection comando per recuperare il risultato.

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

Ciò restituisce il seguente risultato.

{ "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 } }