Amplify Gen 2 es un cambio grande. Pasamos de una CLI imperativa basada en JSON a un modelo de código TypeScript. Llevo varios meses trabajando con ambos y quiero contarte lo que encontré al migrar.
Arrancar un proyecto nuevo
npm create amplify@latest
La estructura que te genera es mucho más clara:
amplify/
auth/
resource.ts
data/
resource.ts
backend.ts
Todo es TypeScript. Adiós a los amplify/backend/api/schema.graphql sueltos.
Definiendo un modelo de datos
import { a, defineData, type ClientSchema } from '@aws-amplify/backend';
const schema = a.schema({
Todo: a.model({
content: a.string(),
done: a.boolean().default(false),
}).authorization(allow => [allow.owner()]),
});
export type Schema = ClientSchema<typeof schema>;
export const data = defineData({
schema,
authorizationModes: {
defaultAuthorizationMode: 'userPool',
},
});
Lo que más me gusta es que el tipo Schema lo puedes consumir directamente en tu frontend con autocompletado completo. No más regenerar tipos manualmente después de cada cambio.
Sandbox por desarrollador
npx ampx sandbox
Esto despliega un entorno aislado para tu cuenta de desarrollador. Cada integrante del equipo tiene el suyo y no chocan entre sí. Esto antes era un dolor porque todos compartíamos el dev y terminábamos pisándonos los datos.
Cómo migrar un proyecto Gen 1
No hay migración automática. La estrategia que usé fue:
- Crear el proyecto Gen 2 en paralelo.
- Exportar los datos del DynamoDB viejo.
- Apuntar el frontend al nuevo backend con una feature flag.
- Migrar por módulos, no todo de golpe.
Cierre
Gen 2 se siente como una herramienta madura. Si estás arrancando algo nuevo, no hay razón para usar Gen 1. Si tienes algo en Gen 1 funcionando, no hay urgencia, pero sí vale la pena planear la migración.
Top comments (0)