Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Construir GraphQL APIs con introspección RDS
AWS AppSync Su utilidad de introspección permite descubrir modelos a partir de tablas de bases de datos y proponer tipos de GraphQL. El API asistente de creación de la AWS AppSync consola puede generar instantáneamente y API a partir de una base de datos Aurora My SQL o Postgreg. SQL Crea automáticamente tipos y JavaScript resolutores para leer y escribir datos.
AWS AppSync proporciona una integración directa con las bases de datos de Amazon Aurora a través de Amazon RDS DataAPI. En lugar de requerir una conexión de base de datos persistente, Amazon RDS Data API ofrece un HTTP punto final seguro al que AWS AppSync se conecta para ejecutarse SQL declaraciones. Puede usar esto para crear una base de datos relacional API para sus SQL cargas de trabajo de My SQL y Postgre en Aurora.
Crear una base API de datos relacional con ella tiene varias ventajas: AWS AppSync
-
Su base de datos no está expuesta directamente a los clientes, lo que desacopla el punto de acceso de la propia base de datos.
-
Puede crear aplicaciones diseñadas específicamente para APIs adaptarse a las necesidades de las diferentes aplicaciones, lo que elimina la necesidad de una lógica empresarial personalizada en las interfaces de usuario. Esto se alinea con el patrón (). Backend-For-Frontend BFF
-
La autorización y el control de acceso se pueden implementar en la AWS AppSync capa utilizando varios modos de autorización para controlar el acceso. No se requieren recursos informáticos adicionales para conectarse a la base de datos, como alojar un servidor web o establecer conexiones mediante proxy.
-
Las capacidades en tiempo real se pueden añadir mediante suscripciones, y las mutaciones de datos AppSync se envían automáticamente a los clientes conectados.
-
Los clientes pueden conectarse al API over HTTPS mediante puertos comunes, como el 443.
AWS AppSync facilita la creación APIs a partir de bases de datos relacionales existentes. Su utilidad de introspección puede descubrir modelos a partir de tablas de bases de datos y proponer tipos de GraphQL. El API asistente de creación de la AWS AppSync consola puede generar instantáneamente y API a partir de una base de datos Aurora My SQL o Postgreg. SQL Crea automáticamente tipos y JavaScript resolutores para leer y escribir datos.
AWS AppSync proporciona JavaScript utilidades integradas para simplificar la escritura de SQL sentencias en los resolutores. Puede utilizar las plantillas AWS AppSync de sql
etiquetas para sentencias estáticas con valores dinámicos o las utilidades del rds
módulo para crear sentencias mediante programación. Consulte la referencia de la función de resolución para ver las fuentes RDS de datos y los módulos integrados para obtener más información.
Uso de la característica de introspección (consola)
Para ver un tutorial detallado y una guía de introducción, consulte Tutorial: Aurora Postgre SQL Serverless with Data. API
La AWS AppSync consola le permite crear un AWS AppSync GraphQL a API partir de su base de datos Aurora existente configurada con los datos API en solo unos minutos. Esto genera rápidamente un esquema operativo basado en la configuración de la base de datos. Puede usarlo API tal cual o construir sobre él para añadir funciones.
-
Inicie sesión en la AppSyncconsola AWS Management Console
y ábrala. -
En el panel de control, selecciona Crear API.
-
-
En APIOpciones, selecciona GraphQL APIs, Comience con un clúster de Amazon Aurora y, a continuación, Siguiente.
-
Escriba un nombre de API. Se usará como identificador API en la consola.
-
Para obtener los detalles de contacto, puede introducir un punto de contacto para identificar al gerente delAPI. Se trata de un campo opcional.
-
En APIConfiguración privada, puede habilitar API las funciones privadas. Solo se API puede acceder a una cuenta privada desde un VPC punto final configurado (VPCE). Para obtener más información, consulte Privado APIs.
No le recomendamos habilitar esta característica para este ejemplo. Seleccione Siguiente después de revisar sus entradas.
-
-
En la página Base de datos, elija Seleccionar base de datos.
-
Es necesario elegir la base de datos de su clúster. El primer paso es elegir la región en la que se encuentra el clúster.
-
Elija el clúster de Aurora en la lista desplegable. Tenga en cuenta que debe haber creado y habilitado los datos correspondientes API antes de utilizar el recurso.
-
A continuación, debe añadir las credenciales de la base de datos al servicio. Esto se hace principalmente usando AWS Secrets Manager. Elija la región en la que se encuentra su secreto. Para obtener más información sobre cómo recuperar información del secreto, consulte Buscar secretos o Recuperar secretos.
-
Añada su secreto en la lista desplegable. Tenga en cuenta que el usuario debe tener permisos de lectura para su base de datos.
-
-
Seleccione Importar.
AWS AppSync empezará a inspeccionar su base de datos, descubriendo tablas, columnas, claves principales e índices. Comprueba que las tablas descubiertas pueden ser compatibles con un GraphQLAPI. Ten en cuenta que para permitir la creación de nuevas filas, las tablas necesitan una clave principal, que puede usar varias columnas. AWS AppSync asigna las columnas de la tabla a los campos de texto de la siguiente manera:
Tipo de datos Tipo de campo VARCHAR Cadena CHAR Cadena BINARY Cadena VARBINARY Cadena TINYBLOB Cadena TINYTEXT Cadena TEXT Cadena BLOB Cadena MEDIUMTEXT Cadena MEDIUMBLOB Cadena LONGTEXT Cadena LONGBLOB Cadena BOOL Booleano BOOLEAN Booleano BIT Int TINYINT Int SMALLINT Int MEDIUMINT Int INT Int INTEGER Int BIGINT Int YEAR Int FLOAT Flotante DOUBLE Flotante DECIMAL Flotante DEC Flotante NUMERIC Flotante DATE AWSDate TIMESTAMP Cadena DATETIME Cadena TIME AWSTime JSON AWSJson ENUM ENUM -
Una vez que se haya completado la detección de tablas, la sección Base de datos se rellenará con su información. En la nueva sección Tablas de base de datos, es posible que los datos de la tabla ya estén rellenados y convertidos a un tipo para su esquema. Si no ve algunos de los datos necesarios, puede comprobarlos. Para ello, seleccione Añadir tablas, haga clic en las casillas de verificación de esos tipos en el modal que aparece y, a continuación, seleccione Añadir.
Para eliminar un tipo de la sección Tablas de bases de datos, haga clic en la casilla de verificación situada junto al tipo que desea eliminar y, a continuación, seleccione Eliminar. Los tipos eliminados se colocarán en el modal Añadir tablas si desea volver a añadirlos más adelante.
Tenga en cuenta que AWS AppSync utiliza los nombres de las tablas como nombres de tipos, pero puede cambiarles el nombre, por ejemplo, cambiando el nombre de una tabla en plural, como
movies
al nombre del tipoMovie
. Para cambiar el nombre de un tipo en la sección de tablas de bases de datos, haga clic en la casilla del tipo al que desee cambiar el nombre y, a continuación, haga clic en el icono del lápiz de la columna Nombre del tipo.Para obtener una vista previa del contenido del esquema en función de sus selecciones, elija Vista previa del esquema. Tenga en cuenta que este esquema no puede estar vacío, por lo que tendrá al menos una tabla convertida en un tipo. Además, este esquema no puede tener un tamaño superior a 1 MB.
-
En Rol de servicio, elija si desea crear un nuevo rol de servicio específicamente para esta importación o utilizar un rol existente.
-
-
Elija Next (Siguiente).
-
A continuación, elija si desea crear una de solo lectura API (solo consultas) o una API para leer y escribir datos (con consultas y mutaciones). Esta última también admite suscripciones en tiempo real activadas por mutaciones.
-
Elija Next (Siguiente).
-
Revisa tus opciones y, a continuación, selecciona Crear. API AWS AppSync creará los resolutores API y los adjuntará a las consultas y mutaciones. El generado API está en pleno funcionamiento y se puede ampliar según sea necesario.
Uso de la función de introspección () API
Puede utilizar la StartDataSourceIntrospection
introspección API para descubrir modelos en su base de datos mediante programación. Para obtener más información sobre el comando, consulte Uso del. StartDataSourceIntrospection
API
Para usarloStartDataSourceIntrospection
, proporcione el nombre de recurso de Amazon (ARN), el nombre de la base de datos y el AWS Secrets Manager secreto del clúster AuroraARN. El comando inicia el proceso de introspección. Puede recuperar los resultados con el comando GetDataSourceIntrospection
. Puede especificar si el comando debe devolver la cadena Storage Definition Language (SDL) de los modelos descubiertos. Esto resulta útil para generar una definición de SDL esquema directamente a partir de los modelos descubiertos.
Por ejemplo, si tiene la siguiente instrucción del lenguaje de definición de datos (DDL) para una Todos
tabla simple:
create table if not exists public.todos ( id serial constraint todos_pk primary key, description text, due timestamp, "createdAt" timestamp default now() );
Comience la introspección con lo siguiente.
aws appsync start-data-source-introspection \ --rds-data-api-config resourceArn=<cluster-arn>,secretArn=<secret-arn>,databaseName=database
A continuación, utilice el comando GetDataSourceIntrospection
para recuperar el resultado.
aws appsync get-data-source-introspection \ --introspection-id a1234567-8910-abcd-efgh-identifier \ --include-models-sdl
Esto devuelve el resultado siguiente.
{ "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 } }