2009-07-06 7 views
14

C'è un modo per aggiornare i file memorizzati su Amazon CloudFront (servizio CDN di Amazon)? Sembra che non richiederà alcun aggiornamento di un file che creiamo (ad esempio rimuovendo il file e memorizzando quello nuovo con lo stesso nome di file di prima). Devo attivare in modo esplicito un processo di aggiornamento per rimuovere i file dai server periferici per ottenere la pubblicazione dei nuovi contenuti dei file?Come posso aggiornare i file sul CDN di Amazon (CloudFront)?

Grazie per il vostro aiuto

+0

Si prega di provare a fare questa domanda a http://serverfault.com/. –

risposta

12

Amazon aggiunto un Feature invalidazione. This is API Reference.

Campione del API Reference:

POST /2010-08-01/distribution/[distribution ID]/invalidation HTTP/1.0 
Host: cloudfront.amazonaws.com 
Authorization: [AWS authentication string] 
Content-Type: text/xml 

<InvalidationBatch> 
    <Path>/image1.jpg</Path> 
    <Path>/image2.jpg</Path> 
    <Path>/videos/movie.flv</Path> 
    <CallerReference>my-batch</CallerReference> 
</InvalidationBatch> 
1

mi sembra di ricordare di aver visto questo su serverfault già, ma ecco la risposta:

Con "Amazon CDN" Presumo che dire "CloudFront"?

È memorizzato nella cache, quindi se hai bisogno di essere aggiornato in questo momento (al contrario di "nuova versione sarà visibile in 24 ore") dovrai scegliere un nuovo nome. Invece di "logo.png", usa "logo.png - 0", quindi aggiornalo usando "logo.png - 1", e cambia il tuo html in modo che punti a quello.

Non esiste un modo per "svuotare" il cloudfront di Amazon.

Modifica: Questo era non possibile, lo è ora. Vedi i commenti a questa risposta.

+3

Questo non è più preciso. – ceejayoz

+0

Vedere http://stackoverflow.com/questions/1268158/force-cloudfront-distribution-file-update – RSG

+0

Questo non è vero, è possibile aggiornare un contenuto invalidando la cache – rsabir

2
+0

Dove specificare ciò? –

+0

È possibile impostare il TTL sui dettagli di distribuzione del cloudfront, nella scheda "Comportamenti". Abilita "Caching degli oggetti" = "Personalizza" e dovresti essere in grado di impostare i valori predefiniti per la distribuzione. Short TTL va bene durante lo sviluppo attivo, ma la durata dovrebbe essere allungata se non ci sono molti aggiornamenti. – Cody

1

In ruby, utilizzando la gemma nebbia

AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY_ID'] 
AWS_SECRET_KEY = ENV['AWS_SECRET_ACCESS_KEY'] 
AWS_DISTRIBUTION_ID = ENV['AWS_DISTRIBUTION_ID'] 

conn = Fog::CDN.new(
    :provider => 'AWS', 
    :aws_access_key_id => AWS_ACCESS_KEY, 
    :aws_secret_access_key => AWS_SECRET_KEY 
) 

images = ['/path/to/image1.jpg', '/path/to/another/image2.jpg'] 

conn.post_invalidation AWS_DISTRIBUTION_ID, images 

anche su invalidazione, esso Occorrono ancora 5-10 minuti per l'elaborazione e l'aggiornamento dell'invalidazione su tutti i server edge amazon

13

Ecco come lo faccio utilizzando il pannello di controllo di CloudFront.

  1. Selezionare CloudFront dall'elenco dei servizi.
  2. Assicurarsi che Distribuzioni in alto a sinistra sia selezionato.
  3. Quindi fare clic sul collegamento per la distribuzione associata dall'elenco (sotto ID).

enter image description here

  1. Selezionare la scheda Invalidazioni.
  2. Fare clic sul pulsante Crea invalidità e immettere il percorso dei file che si desidera invalidare (aggiornato).

Ad esempio:

enter image description here

  1. Quindi fare clic sul pulsante Disattiva e ora si dovrebbe vedere InProgress nell'ambito di condizione.

enter image description here

Di solito ci vogliono dai 10 ai 15 minuti per completare la richiesta di invalidazione , a seconda delle dimensioni della vostra richiesta.

Una volta che è stato completato, sei pronto per partire.

Suggerimento: Dopo aver creato un paio di invalidazione se si torna e la necessità di invalidare gli stessi file di utilizzare la casella di selezione e la Copia collegamento sarà disponibile il che rende ancora più veloce.

+1

Nota: è necessario invalidare i file memorizzati nella cache prima di caricare i nuovi file. Stavo avendo problemi a scaricare i file aggiornati quando avrei caricato la revisione, quindi ho invalidato la vecchia cache. – Cody

+1

Ho effettivamente trovato l'opposto assicurandomi di caricare il mio nuovo file e quindi di eseguire l'invalidazione. – CoalaWeb

Problemi correlati