Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

150
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!