Création de GraphQL APIs grâce à l'introspection RDS - AWS AppSync

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Création de GraphQL APIs grâce à l'introspection RDS

AWS AppSync l'utilitaire d'introspection permet de découvrir des modèles à partir de tables de base de données et de proposer des types GraphQL. L'APIassistant de création de la AWS AppSync console peut générer instantanément de l'ADN API à partir d'une SQL base de données Aurora My SQL ou Postgre. Il crée automatiquement des types et des JavaScript résolveurs pour lire et écrire des données.

AWS AppSync fournit une intégration directe aux bases de données Amazon Aurora via Amazon RDS DataAPI. Plutôt que de nécessiter une connexion permanente à la base de données, Amazon RDS Data API propose un point de HTTP terminaison sécurisé qui AWS AppSync se connecte pour exécuter SQL déclarations. Vous pouvez l'utiliser pour créer une base de données relationnelle API pour vos charges de SQL travail My SQL et Postgre sur Aurora.

La création d'un API pour votre base de données relationnelle AWS AppSync présente plusieurs avantages :

  • Votre base de données n'est pas directement exposée aux clients, ce qui permet de dissocier le point d'accès de la base de données elle-même.

  • Vous pouvez créer des applications spécialement APIs conçues pour répondre aux besoins des différentes applications, ce qui élimine le besoin d'une logique métier personnalisée dans les interfaces. Cela correspond au modèle Backend-For-Frontend (BFF).

  • L'autorisation et le contrôle d'accès peuvent être mis en œuvre au niveau de la AWS AppSync couche en utilisant différents modes d'autorisation pour contrôler l'accès. Aucune ressource de calcul supplémentaire n'est requise pour se connecter à la base de données, par exemple pour héberger un serveur Web ou établir des connexions par proxy.

  • Des fonctionnalités en temps réel peuvent être ajoutées via des abonnements, les mutations de données AppSync étant automatiquement transmises aux clients connectés.

  • Les clients peuvent se connecter à l'APIover HTTPS en utilisant des ports courants tels que 443.

AWS AppSync facilite la création APIs à partir de bases de données relationnelles existantes. Son utilitaire d'introspection permet de découvrir des modèles à partir de tables de base de données et de proposer des types GraphQL. L'APIassistant de création de la AWS AppSync console peut générer instantanément de l'ADN API à partir d'une SQL base de données Aurora My SQL ou Postgre. Il crée automatiquement des types et des JavaScript résolveurs pour lire et écrire des données.

AWS AppSync fournit des JavaScript utilitaires intégrés pour simplifier l'écriture d'SQLinstructions dans les résolveurs. Vous pouvez utiliser les modèles AWS AppSync de sql balises pour les instructions statiques avec des valeurs dynamiques, ou les utilitaires du rds module pour créer des instructions par programmation. Consultez la référence des fonctions de résolution pour les sources de RDS données et les modules intégrés pour en savoir plus.

Utilisation de la fonction d'introspection (console)

Pour un didacticiel détaillé et un guide de démarrage, voir Tutoriel : Aurora Postgre SQL Serverless with Data. API

La AWS AppSync console vous permet de créer un AWS AppSync GraphQL à API partir de votre base de données Aurora existante configurée avec les données API en quelques minutes seulement. Cela génère rapidement un schéma opérationnel basé sur la configuration de votre base de données. Vous pouvez l'utiliser API tel quel ou le développer pour ajouter des fonctionnalités.

  1. Connectez-vous à la AppSyncconsole AWS Management Console et ouvrez-la.

    1. Dans le tableau de bord, choisissez Create API.

  2. Dans la section APIOptions, choisissez GraphQL APIs, Start with a Amazon Aurora cluster, puis Next.

    1. Entrez un APInom. Il sera utilisé comme identifiant pour le API dans la console.

    2. Pour les coordonnées, vous pouvez saisir un point de contact afin d'identifier un responsable pour leAPI. Il s'agit d'un champ facultatif.

    3. Sous APIConfiguration privée, vous pouvez activer les API fonctionnalités privées. Un compte privé n'est API accessible qu'à partir d'un point de VPC terminaison configuré (VPCE). Pour plus d'informations, voir Privé APIs.

      Nous ne recommandons pas d'activer cette fonctionnalité pour cet exemple. Choisissez Next après avoir examiné vos entrées.

  3. Sur la page Base de données, choisissez Sélectionner une base de données.

    1. Vous devez choisir votre base de données dans votre cluster. La première étape consiste à choisir la région dans laquelle se trouve votre cluster.

    2. Choisissez le cluster Aurora dans la liste déroulante. Notez que vous devez avoir créé et activé les données correspondantes API avant d'utiliser la ressource.

    3. Vous devez ensuite ajouter les informations d'identification de votre base de données au service. Cela se fait principalement à l'aide de AWS Secrets Manager. Choisissez la région dans laquelle se trouve votre secret. Pour plus d'informations sur la façon de récupérer des informations secrètes, voir Rechercher des secrets ou Extraire des secrets.

    4. Ajoutez votre secret dans la liste déroulante. Notez que l'utilisateur doit disposer d'autorisations de lecture pour votre base de données.

  4. Choisissez Import (Importer).

    AWS AppSync commencera à introspecter votre base de données, en découvrant les tables, les colonnes, les clés primaires et les index. Il vérifie que les tables découvertes peuvent être prises en charge dans un GraphQLAPI. Notez que pour prendre en charge la création de nouvelles lignes, les tables ont besoin d'une clé primaire, qui peut utiliser plusieurs colonnes. AWS AppSync mappe les colonnes d'une table aux champs de type comme suit :

    Type de données Type de champ
    VARCHAR Chaîne
    CHAR Chaîne
    BINARY Chaîne
    VARBINARY Chaîne
    TINYBLOB Chaîne
    TINYTEXT Chaîne
    TEXT Chaîne
    BLOB Chaîne
    MEDIUMTEXT Chaîne
    MEDIUMBLOB Chaîne
    LONGTEXT Chaîne
    LONGBLOB Chaîne
    BOOL Booléen
    BOOLEAN Booléen
    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 Chaîne
    DATETIME Chaîne
    TIME AWSTime
    JSON AWSJson
    ENUM ENUM
  5. Une fois la découverte des tables terminée, la section Base de données sera remplie avec vos informations. Dans la nouvelle section Tables de base de données, les données de la table sont peut-être déjà renseignées et converties en un type adapté à votre schéma. Si certaines des données requises ne s'affichent pas, vous pouvez les vérifier en choisissant Ajouter des tables, en cliquant sur les cases à cocher correspondant à ces types dans le modal qui apparaît, puis en choisissant Ajouter.

    Pour supprimer un type de la section des tables de base de données, cochez la case à côté du type que vous souhaitez supprimer, puis choisissez Supprimer. Les types supprimés seront placés dans le modal Ajouter des tables si vous souhaitez les ajouter à nouveau ultérieurement.

    Notez que les noms de table sont AWS AppSync utilisés comme noms de types, mais vous pouvez les renommer, par exemple en modifiant un nom de table au pluriel tel que movies au nom du type Movie. Pour renommer un type dans la section Tables de base de données, cochez la case du type que vous souhaitez renommer, puis cliquez sur l'icône en forme de crayon dans la colonne Nom du type.

    Pour prévisualiser le contenu du schéma en fonction de vos sélections, choisissez Aperçu du schéma. Notez que ce schéma ne peut pas être vide, vous devez donc convertir au moins une table en un type. En outre, la taille de ce schéma ne peut pas dépasser 1 Mo.

    1. Sous Rôle de service, choisissez de créer un nouveau rôle de service spécifiquement pour cette importation ou d'utiliser un rôle existant.

  6. Choisissez Suivant.

  7. Ensuite, choisissez de créer une version en lecture seule API (requêtes uniquement) ou une version API pour la lecture et l'écriture de données (avec requêtes et mutations). Ce dernier prend également en charge les abonnements en temps réel déclenchés par des mutations.

  8. Choisissez Suivant.

  9. Passez en revue vos choix, puis choisissez Créer API. AWS AppSync créera API et attachera des résolveurs aux requêtes et aux mutations. Le produit API est entièrement opérationnel et peut être étendu selon les besoins.

Utilisation de la fonction d'introspection () API

Vous pouvez utiliser l'StartDataSourceIntrospectionintrospection API pour découvrir des modèles dans votre base de données par programmation. Pour plus de détails sur la commande, reportez-vous à la section Utilisation du StartDataSourceIntrospectionAPI.

Pour l'utiliserStartDataSourceIntrospection, indiquez le nom de ressource Amazon (ARN), le nom de la base de données et le code AWS Secrets Manager secret de votre cluster AuroraARN. La commande lance le processus d'introspection. Vous pouvez récupérer les résultats à l'aide de la GetDataSourceIntrospection commande. Vous pouvez spécifier si la commande doit renvoyer la chaîne Storage Definition Language (SDL) pour les modèles découverts. Cela est utile pour générer une définition de SDL schéma directement à partir des modèles découverts.

Par exemple, si vous avez l'instruction Data definition language (DDL) suivante pour une Todos table simple :

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

Vous commencez l'introspection par ce qui suit.

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

Ensuite, utilisez la GetDataSourceIntrospection commande pour récupérer le résultat.

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

Cela renvoie le résultat suivant.

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