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.

Introspection RDS

AWS AppSyncfacilite la création d'API à 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'assistant de création d'API de la AWS AppSync console peut générer instantanément une API à partir d'une base de données Aurora MySQL ou PostgreSQL. Il crée automatiquement des types et des JavaScript résolveurs pour lire et écrire des données.

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

La création d'une 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 API spécialement conçues pour répondre aux besoins des différentes applications, éliminant ainsi 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 par le biais d'abonnements, les mutations de données AppSync étant automatiquement transmises aux clients connectés.

  • Les clients peuvent se connecter à l'API via HTTPS à l'aide de ports courants tels que 443.

AWS AppSyncfacilite la création d'API à 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'assistant de création d'API de la AWS AppSync console peut générer instantanément une API à partir d'une base de données Aurora MySQL ou PostgreSQL. Il crée automatiquement des types et des JavaScript résolveurs pour lire et écrire des données.

AWS AppSyncfournit des JavaScript utilitaires intégrés pour simplifier l'écriture d'instructions SQL 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 données RDS 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 PostgreSQL Serverless with Data API.

La AWS AppSync console vous permet de créer une API AWS AppSync GraphQL à partir de votre base de données Aurora existante configurée avec l'API Data 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 utiliser l'API telle quelle ou vous appuyer sur celle-ci pour ajouter des fonctionnalités.

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

    1. Dans le Tableau de bord, choisissez Créer une API.

  2. Sous Options d'API, choisissez GraphQL APIs, Start with a Amazon Aurora cluster, puis Next.

    1. Entrez un nom d'API. Il sera utilisé comme identifiant pour l'API dans la console.

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

    3. Dans Configuration de l'API privée, vous pouvez activer les fonctionnalités de l'API privée. Une API privée n'est accessible qu'à partir d'un point de terminaison VPC configuré (VPCE). Pour plus d'informations, consultez la section API privées.

      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é une API de données correspondante 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 deAWS 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 AppSynccommencera à 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 une API GraphQL. 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 AppSyncmappe les colonnes d'une table aux champs de type comme suit :

    Type de données Type de champ
    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 Boolean
    BOOLEAN Boolean
    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. 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 type, mais vous pouvez les renommer, par exemple en remplaçant le nom d'un tableau au pluriel, par exemple films, par le nom de 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. Choisissez ensuite de créer une API en lecture seule (requêtes uniquement) ou une API pour lire et écrire des 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 Create API. AWS AppSynccréera l'API et associera des résolveurs aux requêtes et aux mutations. L'API générée est pleinement opérationnelle et peut être étendue selon les besoins.

Utilisation de la fonctionnalité d'introspection (API)

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

Pour l'utiliserStartDataSourceIntrospection, indiquez le nom de ressource Amazon (ARN) de votre cluster Aurora, le nom de la base de données et l'ARN AWS Secrets Manager secret. 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 SDL (Storage Definition Language) pour les modèles découverts. Cela est utile pour générer une définition de schéma SDL directement à partir des modèles découverts.

Par exemple, si vous avez l'instruction DDL (Data Definition Language) 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 } }