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 d'API GraphQL avec RDS introspection
AWS AppSync L'utilitaire d'introspection de GraphQL 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 AppSync fournit une intégration directe avec les bases de données Amazon Aurora via l'API Amazon RDS Data. Plutôt que de nécessiter une connexion permanente à la base de données, l'API Amazon RDS Data propose un point de terminaison HTTP sécurisé auquel 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 dissocie 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 frontends. 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, comme l'hébergement d'un serveur Web ou des connexions proxy.
-
Real-time des fonctionnalités peuvent être ajoutées via des abonnements, les mutations de données étant effectuées AppSync automatiquement vers les clients connectés.
-
Les clients peuvent se connecter à l'API via HTTPS à l'aide de ports courants tels que 443.
AWS AppSync facilite 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 AppSync fournit 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 S 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.
-
Connectez-vous à la AppSync console Console de gestion AWS et ouvrez-la
. -
Dans le Tableau de bord, choisissez Créer une API.
-
-
Dans les options d'API, choisissez API GraphQL, commencez par un cluster Amazon Aurora, puis Suivant.
-
Entrez un nom d'API. Il sera utilisé comme identifiant pour l'API dans la console.
-
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.
-
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 Suivant après avoir vérifié vos entrées.
-
-
Sur la page Base de données, choisissez Sélectionner la base de données.
-
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.
-
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.
-
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 Récupérer des secrets.
-
Ajoutez votre secret dans la liste déroulante. Notez que l'utilisateur doit disposer d'autorisations de lecture pour votre base de données.
-
-
Choisissez Importer.
AWS AppSync va commencer à examiner votre base de données et à découvrir 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 faciliter la création de nouvelles lignes, les tableaux ont besoin d'une clé primaire, qui peut utiliser plusieurs colonnes. AWS AppSync mappe les colonnes du tableau pour saisir les champs comme suit :
Type de données Type de champ VARCHAR Chaîne CHAR Chaîne BINAIRE 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 Wasjson ENUM ENUM -
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 pour votre schéma. Si certaines des données requises ne s'affichent pas, vous pouvez les vérifier en choisissant Ajouter des tableaux, en cochant les cases correspondant à ces types dans la fenêtre modale qui apparaît, puis en choisissant Ajouter.
Pour supprimer un type de la section 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 des tables sont AWS AppSync utilisés comme noms de type, mais vous pouvez les renommer, par exemple, en remplaçant un nom de table au pluriel par un nom
moviesde type.MoviePour 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 avoir au moins une table convertie en type. En outre, la taille de ce schéma ne peut pas dépasser 1 Mo.
-
Sous Rôle de service, choisissez si vous souhaitez créer un nouveau rôle de service spécifiquement pour cette importation ou utiliser un rôle existant.
-
-
Choisissez Suivant.
-
Choisissez ensuite si vous souhaitez 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.
-
Choisissez Suivant.
-
Passez en revue vos choix, puis choisissez Créer une API. AWS AppSync cré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 fonction 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), le nom de la base de données et l'ARN AWS Secrets Manager secret de votre cluster Aurora. 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 utilisez l'instruction DDL (Data Definition Language) suivante pour un Todos tableau 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 } }