Implementé una aplicación Angular 9 de producción en S3 + frente a la nube. Funciona muy bien pero tengo algunos problemas cada vez que lanzo una nueva actualización de la aplicación. Leí muchos artículos:
Configuré el almacenamiento en caché correcto para index.html y ngsw-worker.js para que no se almacenen en caché desde cloudFront. Cada implementación de Angular se guarda en S3 en una nueva carpeta con el número de compilación, así:
Después de hacer esto, cambio el nombre del directorio de CloudFront para señalar la nueva ubicación. Desafortunadamente, hacer esto crea varios problemas a los clientes que tienen una versión anterior de la aplicación. De hecho, si el trabajador del servicio no recibió la actualización cuando el usuario cargó la aplicación, si el usuario carga alguna parte de la aplicación que no estaba almacenada en caché antes, obtengo un error al cargar el fragmento (porque ya no existe en S3 ).
Entonces, me pregunto cuál es la mejor manera de implementar continuamente una aplicación Angular en AWS S3 + CloudFront. ¿Se supone que debo cargar todos los archivos dentro de la misma carpeta? ¿No es demasiado ineficiente (muy pronto tendré miles de archivos)? Cualquier pista es realmente apreciada.
Puedes hacer lo siguiente:
index.html Para una implementación continua, puede escribir un script usando boto3 de aws para invalidar automáticamente el almacenamiento en caché una vez que la carpeta se cargó correctamente.