Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
cloudfront apunta a la versión anterior de React alojada en s3

Implementé mi aplicación React en s3 . Estoy usando Cloudfront para usar un certificado y llegar a mi s3 bucket a través de HTTPS . Después de luchar para configurarlo todo, logré configurarlo todo, ahora funciona bien.

Ahora actualicé mi proyecto, creé una nueva versión de bundle.js , lo subí a s3 .

Mi problema ahora es que mydomain.com apunta a la V1 de bundle.js

Entonces, traté de desenterrar un poco más, y esto es lo que encontré:

  • mydomain.com apunta a V1
  • xxxxx.cloudfront.net apunta a V1
  • mydomain.com.s3-website-eu-west-1.amazonaws.com apunta a V2

Entonces, supongo que, por alguna razón, el frente de la cloudfront apunta al V1, pero ¿por qué? ¿Hay algún caché en algún lugar allí?

Aquí está la configuración, en caso de que ayude:

  • Route53 Type A apunta a xxxxxx.cloudfront.net
  • el dominio de cloudfront es xxxxxx.cloudfront.net
  • Los CNAME www.mydomain.com a la CNAMES son mydomain.com y cloudfront
  • el nombre de dominio de origen cloudfront origin domain name and path es mydomain.com.s3-website-eu-west-1.amazonaws.com
  • s3 bucket es mydomain.com

PD: solo para verificar que el problema no solo provenía de bundle.js , eliminé la imagen de fondo del depósito, pero de alguna manera, todavía se encuentra y se usa al acceder a mydomain.com (así que muestra el V1)

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Como confirmó @Joe Clay, Cloudfront estaba almacenando todo en caché.

Para forzar el borrado del caché usando la AWS console (en algunos documentos encontré que se puede hacer usando su API ), estos son los pasos que seguí:

  • iniciar sesión en la AWS console
  • vaya a Cloudfront y vea los detalles de su distribución
  • vaya a la pestaña de invalidations y haga clic en Create invalidation
  • poner en la ruta del objeto * y guardar
  • (Tomó alrededor de 5 buenos minutos para completar)
  • Actualice el sitio web mydomain.com (es posible que deba limpiar el caché del navegador)
  • y voilá !

¡Espero que esta respuesta pueda ayudar a cualquiera que tenga el mismo problema!

about 4 years ago · Santiago Trujillo Denunciar

0

Sé que esta es una vieja pregunta. Pero encontré una manera de automatizar este proceso usando mi secuencia de comandos de implementación. Aquí hay una entrada de mi archivo package.json

 "deploy": "npm run build && aws s3 sync --delete build/ s3://bucket-name && npm run invalidateCache", "invalidateCache": "aws cloudfront create-invalidation --distribution-id E23232323 --paths '/*'",

Después de esto, todo lo que tiene que hacer es ejecutar npm run deploy .

Explicación de los comandos.

  1. deployment : Esto crea una nueva compilación para mi aplicación de reacción. Luego, elimina todos los archivos antiguos de mi depósito s3 y carga archivos nuevos. Después de eso, ejecuta mi comando invalidateCache
  2. invalidateCache : esto crea una nueva invalidación en mi distribución frente a la nube. Debe proporcionar la identificación de distribución que puede encontrar en la imagen a continuación. Lo último es el camino. Ingresé /* para que borre el caché de todas las rutas. ingrese la descripción de la imagen aquí

Espero que esto ayude :)

about 4 years ago · Santiago Trujillo Denunciar

0

Sé que esta es una vieja pregunta. Esto también se puede lograr con lambda fn, que invalidará la memoria caché de la nube para cualquier actualización en el depósito s3 de origen de origen.

  1. Cree una función lambda que se activa para cualquier actualización en los archivos de depósito source s3.
  2. En la parte del código lambda, escriba un código para invalidar la caché frente a la nube.

El fragmento de código está aquí para lo mismo.

 from __future__ import print_function import boto3 import time def lambda_handler(event, context): path = [] for items in event["Records"]: if items["s3"]["object"]["key"] == "index.html": path.append("/") else: path.append("/" + items["s3"]["object"]["key"]) print(path) client = boto3.client('cloudfront') invalidation = client.create_invalidation(DistributionId='cloudfrontdistribution id', InvalidationBatch={ 'Paths': { 'Quantity': 1, 'Items': path }, 'CallerReference': str(time.time()) })
about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda