Cuando se utiliza AWS Amplify con un backend de dynamodb, es posible actualizar el esquema y los solucionadores de AppSync modificando los archivos localmente y luego ejecutando amplify push .
Estoy usando RDS (lo agregué con amplify api add-graphql-datasource como se describe en la documentación). Las consultas y los solucionadores se configuran en AppSync automáticamente. Cuando actualizo el esquema Aurora RDS, ejecuto amplify api add-graphql-datasource nuevamente para actualizar consultas y resoluciones.
Pero, ¿cómo agrego nuevas consultas/mutaciones y las vinculo a nuevos resolutores (definidos en archivos vtl en localhost), usando la CLI de amplificación?
Descubrí cómo hacerlo usando la consola web de AppSync. Modifico el esquema y creo resolutores en AppSync, luego uso amplify codegen para actualizar App.ts , queries.ts , etc. Sin embargo, este enfoque es malo por al menos dos razones.
amplify codegen no actualiza el archivo schema.graphql en localhost.amplify push después de realizar cambios en AppSync usa el esquema definido en localhost y sobrescribe el esquema definido en la consola de AppSync.app/amplify/backend/<backend_name>/resolvers no están sincronizados con AppSync¿Estoy haciendo esto de la manera incorrecta? ¿Hay una mejor manera de actualizar esquemas/resolvedores usando amplificar CLI cuando se usa un backend RDS?
¡Gracias!
DE ACUERDO,
- Cuando se trabaja con varios entornos, los cambios en cada entorno deben realizarse manualmente a través de la consola de AppSync, lo que es difícil para proyectos más grandes.
Mantenga una rama de git para cada entorno. Primero haga cambios en la rama de desarrollo y ejecute amplify push para enviar los cambios al proyecto de dev de dev . Cuando sea el momento de llevar los cambios a la puesta en escena, haga lo siguiente:
cd app && amplify env checkout staging && amplify env pull --restore && amplify statusgit checkout staging && git merge devamplify push
- amplificar codegen no actualiza el archivo schema.graphql en localhost.
Cierto, pero no es lo que se supone que debe hacer amplify codegen , así que no estoy seguro de lo que escribí. La documentación es bastante clara:
Codegen te ayuda a generar código nativo para iOS y Android, así como la generación de tipos para Flow y TypeScript. También puede generar declaraciones de GraphQL (consultas, mutaciones y suscripciones) para que no tenga que codificarlas a mano.
..¡Siguiente!
- Ejecutar amplificación push después de realizar cambios en AppSync usa el esquema definido en localhost y sobrescribe el esquema definido en la consola de AppSync. No estoy seguro de lo que quise decir aquí. Pero el flujo de trabajo que terminó funcionando para mí es
schema.graphql en localhostamplify push para actualizar AppSync
- Los solucionadores personalizados en app/amplify/backend/<backend_name>/resolvers no están sincronizados con AppSync
Me equivoqué. Si crea correctamente los archivos de resolución requeridos, las resoluciones de AppSync se configuran correctamente cuando se ejecuta amplify push . Mi error fue que olvidé crear los archivos de plantilla del mapeador de respuestas.
- el archivo de pila no se actualiza automáticamente.
Esto es cierto, pero rápidamente se acostumbra a editar el archivo de pila manualmente. De hecho, sería bueno si hubiera una función de adición rápida, pero dado que solo está agregando un archivo json , sería fácil crear una secuencia de comandos de python rápida para hacer esto por usted.