Global outage event
If you're experiencing issues with your AWS services, then please refer to the AWS Health Dashboard. You can find the overall status of ongoing outages, the health of AWS services, and the latest updates from AWS engineers.
¿Cómo puedo notificar a los suscriptores de AWS AppSync las actualizaciones de bases de datos externas que no se producen por mutaciones por el lado del cliente?
Necesito que los clientes de mi aplicación se actualicen en tiempo real cuando se hagan cambios en la base de datos externa que no se hagan mediante mutaciones del lado del cliente. ¿Cómo utilizo AWS AppSync para notificar a los suscriptores acerca de estos cambios?
Descripción corta
Utiliza solucionadores locales para notificar a los suscriptores acerca de los cambios en la base de datos externa en tiempo real, sin llamar al origen de datos. Por ejemplo, los solucionadores locales son útiles para las aplicaciones que actualizan la información con regularidad, como la aplicación de una aerolínea.
Completa los pasos de la sección Resolución para crear un ejemplo de API de GraphQL. La API de GraphQL actualiza a los suscriptores en tiempo real cuando los datos se escriben en un origen de datos de tablas de Amazon DynamoDB.
Resolución
Crear una API de GraphQL mediante el asistente
Utilice el asistente de esquemas guiados de AWS AppSync para crear una nueva API de GraphQL. Para obtener más información, consulta Diseño de una API de GraphQL.
1. Abre la consola de AWS AppSync.
2. Elige Crear API.
3. En la página de Introducción, en Personaliza tu API o importa desde Amazon DynamoDB, elige Crear con el asistente y, a continuación, elige Iniciar.
4. En la página Crear un modelo:
En Asignar un nombre al modelo, introduzca un nombre para el modelo. Para este ejemplo, Book es el nombre.
En Configurar los campos del modelo, define los tipos de datos de la aplicación. Para esta configuración de ejemplo, mantenga los nombres de campo predeterminados (ID y título) y los tipos.
(Opcional) Amplía Configurar la tabla del modelo (opcional) para añadir un índice.
Elige Crear.
5. En la página Crear recursos, introduce un nombre para tu API. A continuación, selecciona Crear. AWS AppSync crea la API y abre la página de consultas de la API.
Crear una suscripción de prueba
1. Abre la consola de AWS AppSync.
2. Ve a la página de consultas de su API y, a continuación, abre una pestaña o ventana duplicada del navegador.
3. En la pestaña o ventana duplicada del navegador, borra el contenido del editor de consultas e introduce la siguiente consulta:
subscription onCreateBook { onCreateBook { id title } }
La consulta anterior crea una suscripción a mutaciones createBook.
4. Selecciona el botón de reproducción (Ejecutar consulta). La pestaña o ventana duplicada del navegador está suscrita a mutaciones createBook.
5. En la pestaña o ventana original del navegador, elige el botón de reproducción (Ejecutar consulta) y, a continuación, elige createBook para ejecutar la mutación. Los resultados se muestran tanto en las pestañas o ventanas del navegador original como en las duplicadas (suscripción).
6. Cuando veas la suscripción, cierra la pestaña o ventana duplicada del navegador.
Crear un origen de datos sin tipo
El tipo de origen de datos Ninguno pasa la plantilla de asignación de solicitudes directamente a la plantilla de asignación de respuestas.
1. En la pestaña o ventana original del navegador, abre la consola de AWS AppSync.
2. En el panel de navegación de la izquierda, selecciona Orígenes de datos.
3. Elige Crear origen de datos.
4. En la página Nuevo origen de datos, en Crear el origen de datos nuevo, completa los siguientes pasos:
En Nombre del origen de datos, introduce un nombre. Por ejemplo, real_time_data.
En Tipo de origen de datos, elige Ninguno.
5. Elige Crear.
Para obtener más información, consulta Adjuntar un origen de datos.
Añadir una mutación al esquema
Crea una segunda mutación para que la utilice un administrador o para activarla cuando actualices el esquema.
Actualiza el esquema con una mutación que transfiera las actualizaciones de la base de datos al origen de datos de tipo Ninguno.
1. Abre la consola de AWS AppSync.
2. En el panel de navegación de la izquierda, selecciona Esquema.
3. En el editor de esquemas, en el campo Tipo de mutación {, añade el siguiente comando para crear el nuevo tipo de mutación para las actualizaciones externas:
createBookExt(input: CreateBookInput!): Book
4. En el editor de esquemas, en Tipo de suscripción {, busca la siguiente línea:
onCreateBook(id: ID, title: String): Book @aws_subscribe(mutations: ["createBook"])
5. Añade «createBookExt» a la lista de mutaciones:
onCreateBook(id: ID, title: String): Book @aws_subscribe(mutations: ["createBook", "createBookExt"])
6. Selecciona Guardar esquema.
Para obtener más información, consulta Diseñar el esquema.
Adjuntar un solucionador a la mutación
1. Abre la consola de AWS AppSync.
2. En la página de esquemas de tu API, en Solucionadores, desplázate hacia abajo hasta Mutación. O bien, para los Tipos de filtros, introduce Mutación.
3. Junto a createBookExt(...): Book, en Solucionador, selecciona Adjuntar.
4. En la página Crear el solucionador nuevo, en Nombre del origen de datos, elige el nombre del origen de datos de tipo Ninguno que creaste. Por ejemplo, real_time_data.
5. En Configurar la plantilla de asignación de solicitudes, busca la función de solicitud:
export function request(ctx) { return {}; }
6. Modifica la función para devolver ctx.args:
export function request(ctx) { return ctx.args; }
7. Elige Crear.
Para obtener más información, consulta Configuración de solucionadores (VTL).
Crear una nueva suscripción de prueba
1. Abre la consola de AWS AppSync.
2. En el panel de navegación de la izquierda, selecciona Consultas.
3. En la página Consultas de tu API, abre una pestaña o ventana del navegador duplicada.
4. En la pestaña o ventana duplicada del navegador, borra el contenido del editor de consultas e introduce la siguiente consulta:
subscription onCreateBook { onCreateBook { id title } }
5. Selecciona el botón de reproducción (Ejecutar consulta). La pestaña o ventana duplicada del navegador ahora está suscrita a las mutaciones createBook y createBookExt.
Crear una nueva mutación de prueba
1. En la pestaña o ventana original del navegador, en la página Consultas de tu API, borra el contenido del editor de consultas. A continuación, introduce la siguiente consulta:
mutation createBook($createbookinput: CreateBookInput!) { createBook(input: $createbookinput) { id title } }
En la sección Variables de consulta de la parte inferior del editor, borra el contenido e introduce la siguiente consulta:
{ "createbookinput": { "title": "My New Book" } }
La consulta anterior crea un nuevo Book con la mutación createBook.
2. Selecciona el botón de reproducción (Ejecutar consulta).
3. En la pestaña o ventana duplicada del navegador (suscripción), observa que el suscriptor recibe la actualización en tiempo real.
(Opcional) Consulta ejemplos de casos de uso
Al crear la aplicación de cliente y aplicar estos conceptos, puedes utilizar el siguiente ejemplo de creación de una aplicación de aerolínea que proporciona precios y horarios de vuelo.
Los siguientes pasos muestran cómo notificar a los clientes suscritos cuando cambian los detalles del vuelo en una tabla de DynamoDB:
1. Cree una función de AWS Lambda que utilice una transmisión de DynamoDB como desencadenador. Cuando la tabla de DynamoDB se actualiza, invoca la función de Lambda. Para obtener más información, consulta Uso de AWS Lambda con Amazon DynamoDB.
2. En el código de la función de Lambda, incluye la lógica para filtrar las actualizaciones adecuadas y hacer una llamada de mutación a AWS AppSync. Esto hace que AWS AppSync notifique a los suscriptores a través de la suscripción. Para obtener más información, consulta Tutorial: Solucionadores de AWS Lambda.
3. En AWS AppSync, añade un nuevo campo de mutación (por ejemplo, denominado publishPrice) con un solucionador local.
4. Suscríbete a esa mutación en un campo de suscripción (por ejemplo, denominado onPriceUpdate).
Esquema de ejemplo
type flightDetails { id: ID! src: String! destn: String! price : Int } type Mutation { # A local resolver targeting a None data source that publishes the message to subscribed clients. publishPrice(price: Int): flightDetails } type Subscription { # Notified whenever *publishPrice* is called. onPriceUpdate: Message @aws_subscribe(mutations: ["publishPrice"]) } type Query { ... }
Para obtener más información, consulta Diseñar el esquema.
5. Cree otra función de AWS Lambda que utilice una transmisión de DynamoDB como activación. En esta función, llama a la mutación publishPrice. Como la mutación de publishPrice tiene un solucionador local, los datos no se vuelven a escribir en DynamoDB. Con este método, puedes utilizar AWS AppSync como agente de PubSub.
Para obtener más información y otro ejemplo de caso de uso, consulte el Tutorial: Solucionador locales.
Información relacionada
Tutoriales de solucionadores (VTL)
Ejecutar consultas y mutaciones
Referencia de plantilla de asignación de solucionadores (VTL)
- Etiquetas
- AWS AppSync
- Idioma
- Español

Contenido relevante
- preguntada hace un año
- preguntada hace 9 meses
- preguntada hace un año
- preguntada hace un año
- preguntada hace 9 meses
OFICIAL DE AWSActualizada hace 4 años
OFICIAL DE AWSActualizada hace un año