No se puede resolver amplify_outputs.json
RESUMEN
Para corregir Error: Module not found: Can't resolve '../../amplify_outputs.json':
-
En la consola de Amplify actualiza la configuración de compilación del alojamiento de aplicaciones para agregar el comando de compilación
- npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID:version: 1 backend: phases: build: commands: - npm ci --cache .npm --prefer-offline - npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID frontend: phases: build: commands: - npm run build artifacts: baseDirectory: .next files: - '**/*' cache: paths: - .next/cache/**/* - .npm/**/*
AccessDeniedError: No se puede obtener las salidas del backend debido a permisos insuficientes.
Si obtienes errores de permiso como "AccessDeniedError: Unable to get backend outputs due to insufficient permissions.Resolution: Ensure you have permissions to call cloudformation:GetTemplateSummary":
- Adjunta la política
AdministratorAccess-Amplify(bajo políticas administradas de AWS) a la amplify-policy para el usuario creado en el Centro de Identidad de IAM como se explica en la documentación de Amplify, o al rol / grupo que estés usando para el proyecto.
Propósito de amplify_outputs.json
El archivo amplify_outputs.json se genera en tu proyecto Amplify Gen 2 por el CLI. Contiene la información del backend necesaria para configurar las bibliotecas de cliente que
interactúan con tus recursos de backend como Autenticación, Datos, Almacenamiento, Funciones Lambda, IA, etc.
Su contenido es muy sensible, no debe ser confirmado en tu repositorio y en su lugar debe ser generado en tiempo de despliegue por tu comando de compilación.
Cuando trabaja localmente, se genera cuando ejecutas npx ampx sandbox --profile profile-name.
{
"auth": {
"user_pool_id": "your-user-pool-id",
"aws_region": "your-region",
"user_pool_client_id": "your-user-pool-client-id",
"identity_pool_id": "your-identity-pool-id",
...
},
"data": {
"url": "your-appsync-graphql-endpoint",
"aws_region": "your-region",
"default_authorization_type": "your-default-authorization-type",
"authorization_types": [
"authorization_type-1", "authorization_type-2", ...
],
"model_introspection": {
"version": 1,
"models": {
"Entity": {
"name": "your-entity-name",
"fields": {
"id": {
"name": "id",
"isArray": false,
"type": "ID",
"isRequired": true,
"attributes": []
},
...
}
...
}
}
}
},
"storage": {
"aws_region": "your-region",
"bucket_name": "your-bucket-name",
"buckets": [
{
"name": "project-name",
"bucket_name": "your-bucket-name",
"aws_region": "your-region",
"paths": {
"path-to-example-pictures/*": {
"guest": [
"get",
"list"
]
},
...
}
}
]
},
...
}
Comando npx ampx pipeline-deploy
El comando npx ampx pipeline-deploy se usa para desplegar los recursos de backend de una aplicación AWS Amplify a través de un pipeline. Cuando se usa con las banderas --branch y --app-id, despliega la infraestructura del backend para una rama específica de tu aplicación Amplify.
Este comando se usa típicamente en contextos de CI/CD para:
-
Desplegar recursos de backend (como APIs, bases de datos, funciones) definidas en tu proyecto Amplify.
-
Asegurar que el despliegue del backend esté sincronizado con tu despliegue del frontend.
-
Manejar el despliegue de cambios de infraestructura de manera automatizada.
Por ejemplo, en una configuración de compilación podría parecer:
build:
commands: - npx ampx pipeline-deploy --branch $AWS_BRANCH --app-id $AWS_APP_ID
El comando ayuda a prevenir problemas con versiones de backend obsoletas o desactualizadas al asegurar que tu infraestructura de backend sea desplegada adecuadamente y actualizada como parte de tu pipeline de despliegue.
Si estás usando esto en un pipeline de CI/CD, asegúrate de que tienes:
-
Credenciales de AWS configuradas apropiadamente.
-
El nombre de rama correcto especificado.
-
El ID de aplicación Amplify correcto especificado.
-
Permisos requeridos para desplegar recursos de Amplify.
Comando npm ci --cache .npm --prefer-offline
npm ci (instalación limpia):
-
Esta es una versión más estricta y más rápida de npm install.
-
Está diseñada para entornos automatizados como pipelines de CI/CD.
-
Siempre elimina la carpeta node_modules existente antes de instalar.
-
Requiere un archivo package-lock.json y generará error si falta.
-
No modificará archivos package.json o package-lock.json.
--cache .npm:
-
Especifica una ubicación personalizada para el directorio de caché de npm.
-
En este caso, establece la ubicación de caché a
.npmen tu directorio actual. -
Por defecto, npm usa un directorio de caché global (típicamente
~/.npm en Linux/Maco%AppData%/npm-cacheen Windows).
--prefer-offline:
-
Esta bandera le dice a npm que use paquetes en caché cuando estén disponibles.
-
Primero verificará la caché local antes de intentar descargar del registro.
-
Si un paquete no está en la caché, todavía lo descargará de internet.
-
Esto puede acelerar significativamente el tiempo de instalación.
-
Es útil para compilaciones reproducibles y cuando quieres minimizar solicitudes de red.
Esta combinación de banderas es particularmente útil cuando quieres:
-
Asegurar instalaciones consistentes y limpias.
-
Acelerar el proceso de instalación usando paquetes en caché.
-
Mantener la caché en una ubicación específica del proyecto.
-
Minimizar el uso de red prefiriendo versiones en caché de paquetes.