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.
-
Connectez-vous à la AppSyncconsole AWS Management Console et ouvrez-la
. -
Dans le tableau de bord, choisissez Create API.
-
-
Dans la section APIOptions, choisissez GraphQL APIs, Start with a Amazon Aurora cluster, puis Next.
-
Entrez un APInom. Il sera utilisé comme identifiant pour le API dans la console.
-
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.
-
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.
-
-
Sur la page Base de données, choisissez Sélectionner une 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é les données correspondantes API 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 Extraire 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 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 -
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 typeMovie
. 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.
-
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.
-
-
Choisissez Suivant.
-
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.
-
Choisissez Suivant.
-
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'StartDataSourceIntrospection
introspection 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 StartDataSourceIntrospection
API.
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 } }