Por que o CloudFront está fornecendo conteúdo desatualizado no Amazon S3?

4 minuto de leitura
0

Estou usando o Amazon CloudFront para fornecer objetos armazenados no Amazon Simple Storage Service (Amazon S3). Eu atualizei meus objetos no Amazon S3, mas minha distribuição do CloudFront ainda está fornecendo as versões anteriores desses arquivos.

Breve descrição

Por padrão, o CloudFront armazena em cache uma resposta do Amazon S3 por 24 horas (TTL padrão de 86.400 segundos). Se sua solicitação chegar a um local da borda que atendeu a resposta do Amazon S3 em 24 horas, o CloudFront usará a resposta em cache. Isso acontece mesmo se você atualizou o conteúdo no Amazon S3.

Use uma das seguintes formas de enviar o conteúdo atualizado do Amazon S3 a partir do CloudFront:

Resolução

Invalide os objetos do Amazon S3

Você pode invalidar um objeto do Amazon S3 para removê-lo do cache da distribuição do CloudFront. Depois que o objeto é removido do cache, a próxima solicitação recupera o objeto diretamente do Amazon S3.

Antes de executar esse processo, considere o seguinte:

  • Você não pode invalidar versões específicas de um objeto que usa cookies ou cabeçalhos para variar a resposta. Nesse caso, o CloudFront invalida todas as versões do objeto.
  • Cada conta da AWS tem 1.000 caminhos de invalidação gratuitos por mês. Para obter mais informações, consulte preços do Amazon CloudFront.

Ao criar uma invalidação, certifique-se de que os caminhos do objeto atendam aos seguintes requisitos:

  • Os caminhos do objeto devem ser para objetos individuais ou devem terminar com o caractere curinga (*). Por exemplo, você não pode executar uma invalidação em um caminho semelhante a /images/*.jpeg porque o caminho não é para um objeto individual e não termina em um curinga.
  • O caminho especificado deve corresponder exatamente à capitalização do caminho do objeto. As solicitações de invalidação diferenciam maiúsculas de minúsculas.
  • Para remover versões específicas de um objeto com base em uma string de consulta, inclua QueryString no caminho de invalidação.

As invalidações de objetos normalmente levam de 10 a 100 segundos para serem concluídas. Você pode verificar o status de uma invalidação visualizando sua distribuição no console do CloudFront.

Use o versionamento de objetos

Se você atualiza o conteúdo com frequência, é uma prática recomendada usar o versionamento de objetos para limpar o cache da distribuição do CloudFront. Para atualizações frequentes de cache, usar o versionamento de objetos pode custar menos do que usar invalidações.

Use uma dessas formas de adicionar versionamento aos seus objetos:

  • Armazene novas versões do objeto na origem com o número da versão no nome da chave. Por exemplo, se você atualizar /image_v1.png, armazenará uma nova versão do objeto como **/image_v2.png **.
  • Atualize o objeto na origem, mas armazene em cache com base em uma string de consulta com a versão do objeto. Por exemplo, a string de consulta é atualizada de /image.png?ver=1 para /image.png?ver=2. Você pode usar uma política de cache para especificar quais strings de consulta estão incluídas na chave de cache e nas solicitações de origem.
    Observação: você ainda pode solicitar a versão anterior (/image.png?ver=1) enquanto estiver disponível no cache do CloudFront.

Considere as seguintes vantagens e desvantagens de cada método de versionamento de objetos:

  • Armazenar novas versões do objeto na origem (Amazon S3) permite reverter as alterações para versões anteriores que ainda estão disponíveis com os nomes anteriores. No entanto, armazenar várias versões de um objeto pode aumentar seus custos de armazenamento.
  • Atualizar o objeto na origem, mas armazenar em cache com base na string de consulta, pode reduzir seus custos de armazenamento. No entanto, para se preparar para qualquer reversão, é uma prática recomendada manter as versões anteriores do objeto off-line.

Observação: especificar nomes de arquivos versionados ou nomes de diretórios não está relacionada ao versionamento de objetos do S3. O uso do recurso de versionamento do Amazon S3 não atualiza o conteúdo automaticamente. Você deve especificar os caminhos dos arquivos com cuidado, pois não é possível cancelar uma solicitação de invalidação depois de iniciá-la.

Informações relacionadas

Como gerenciar por quanto tempo o conteúdo permanece no cache (expiração)

Encaminhamento e armazenamento em cache de strings de consulta

AWS OFICIAL
AWS OFICIALAtualizada há um ano