Comportamento de solicitações e respostas para origens do Amazon S3 - Amazon CloudFront

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Comportamento de solicitações e respostas para origens do Amazon S3

Como CloudFront processa e encaminha solicitações para sua origem do Amazon S3

Este tópico contém informações sobre como CloudFront os processos visualizam solicitações e encaminham as solicitações para sua origem do Amazon S3.

Duração do armazenamento em cache e TTL mínimo

Para controlar por quanto tempo seus objetos permanecem em um CloudFront cache antes de CloudFront encaminhar outra solicitação para sua origem, você pode:

  • Configurar sua origem para adicionar um campo de cabeçalho Cache-Control ou Expires a cada objeto.

  • Especifique um valor para TTL mínimo em comportamentos de CloudFront cache.

  • Usar o valor padrão de 24 horas.

Para obter mais informações, consulte Gerenciar o tempo de permanência do conteúdo no cache (expiração).

Endereços IP do cliente

Se um visualizador envia uma solicitação CloudFront e não inclui um cabeçalho de X-Forwarded-For solicitação, CloudFront obtém o endereço IP do visualizador da conexão TCP, adiciona um X-Forwarded-For cabeçalho que inclui o endereço IP e encaminha a solicitação para a origem. Por exemplo, se CloudFront obtiver o endereço IP 192.0.2.2 da conexão TCP, ele encaminhará o seguinte cabeçalho para a origem:

X-Forwarded-For: 192.0.2.2

Se um visualizador envia uma solicitação CloudFront e inclui um cabeçalho de X-Forwarded-For solicitação, CloudFront obtém o endereço IP do visualizador da conexão TCP, o anexa ao final do X-Forwarded-For cabeçalho e encaminha a solicitação para a origem. Por exemplo, se a solicitação do visualizador incluir X-Forwarded-For: 192.0.2.4,192.0.2.3 e CloudFront obter o endereço IP 192.0.2.2 da conexão TCP, ela encaminhará o seguinte cabeçalho para a origem:

X-Forwarded-For: 192.0.2.4,192.0.2.3,192.0.2.2

nota

O cabeçalho X-Forwarded-For contém endereços IPv4 (como 192.0.2.44) e IPv6 (como 2001:0db8:85a3::8a2e:0370:7334).

GETs condicionais

Quando CloudFront recebe uma solicitação de um objeto que expirou de um cache de borda, ele encaminha a solicitação para a origem do Amazon S3 para obter a versão mais recente do objeto ou para obter a confirmação do Amazon S3 de que o cache de borda já tem CloudFront a versão mais recente. Quando o Amazon S3 enviou originalmente o objeto para CloudFront, ele incluiu um ETag valor e um LastModified valor na resposta. Na nova solicitação que é CloudFront encaminhada para o Amazon S3 CloudFront , adicione um ou os dois itens a seguir:

  • Um cabeçalho If-Match ou If-None-Match com o valor ETag da versão expirada do objeto.

  • Um cabeçalho If-Modified-Since com o valor LastModified da versão expirada do objeto.

O Amazon S3 usa essas informações para determinar se o objeto foi atualizado e, portanto, se deve retornar o objeto inteiro CloudFront ou retornar somente um código de status HTTP 304 (não modificado).

Cookies

O Amazon S3 não processa cookies. Se você configurar um comportamento de cache para encaminhar cookies para uma origem do Amazon S3, CloudFront encaminha os cookies, mas o Amazon S3 os ignora. Todas as solicitações futuras do mesmo objeto, independentemente se você variar o cookie ou não, serão fornecidas do objeto existente no cache.

Compartilhamento de recursos de origem cruzada (CORS)

Se você quiser CloudFront respeitar as configurações de compartilhamento de recursos de origem cruzada do Amazon S3, configure CloudFront para encaminhar os cabeçalhos selecionados para o Amazon S3. Para ter mais informações, consulte Armazenar conteúdo em cache com base nos cabeçalhos de solicitação.

Solicitações GET que incluem um corpo

Se uma GET solicitação do visualizador incluir um corpo, CloudFront retornará um código de status HTTP 403 (Proibido) para o visualizador.

Métodos HTTP

Se você configurar CloudFront para processar todos os métodos HTTP que ele suporta, CloudFront aceite as seguintes solicitações dos visualizadores e as encaminhe para sua origem do Amazon S3:

  • DELETE

  • GET

  • HEAD

  • OPTIONS

  • PATCH

  • POST

  • PUT

CloudFront sempre armazena em cache as respostas GET e HEAD solicitações. Você também pode configurar CloudFront para armazenar em cache as respostas às OPTIONS solicitações. CloudFront não armazena em cache as respostas às solicitações que usam os outros métodos.

Se você quiser usar uploads de várias partes para adicionar objetos a um bucket do Amazon S3, você deve adicionar CloudFront um controle de acesso de origem (OAC) à sua distribuição e dar ao OAC as permissões necessárias. Para ter mais informações, consulte Restringir o acesso ao conteúdo do Amazon S3.

Importante

Se você configurar CloudFront para aceitar e encaminhar para o Amazon S3 todos os métodos HTTP CloudFront compatíveis, deverá criar um controle de acesso de CloudFront origem (OAC) para restringir o acesso ao seu conteúdo do Amazon S3 e conceder ao OAC as permissões necessárias. Por exemplo, se você configurar CloudFront para aceitar e encaminhar esses métodos porque deseja usarPUT, deverá configurar as políticas de bucket do Amazon S3 para lidar com as DELETE solicitações de forma adequada, para que os espectadores não possam excluir recursos que você não deseja. Para ter mais informações, consulte Restringir o acesso ao conteúdo do Amazon S3.

Para obter informações sobre as operações compatíveis com o Amazon S3, consulte a Documentação do Amazon S3.

Cabeçalhos de solicitação HTTP que CloudFront removem ou atualizam

CloudFront remove ou atualiza alguns cabeçalhos antes de encaminhar solicitações para sua origem do Amazon S3. Para a maioria dos cabeçalhos, esse comportamento é o mesmo que para origens personalizadas. Para obter uma lista completa dos cabeçalhos de solicitação HTTP e como CloudFront os processa, consulteCabeçalhos e CloudFront comportamento da solicitação HTTP (origens personalizadas e do Amazon S3).

Tamanho máximo de uma solicitação e de um URL

O tamanho máximo de uma solicitação, com o caminho, a query string (se houver) e os cabeçalhos, é de 20.480 bytes.

CloudFront constrói uma URL a partir da solicitação. O tamanho máximo do URL é de 8.192 bytes.

Se uma solicitação ou URL exceder esses limites máximos, CloudFront retornará o código de status HTTP 413, Request Entity Too Large, para o visualizador e, em seguida, encerra a conexão TCP com o visualizador.

OCSP Stapling

Quando um visualizador envia uma solicitação HTTPS para um objeto, um deles CloudFront ou o visualizador deve confirmar com a autoridade de certificação (CA) que o certificado SSL do domínio não foi revogado. O grampeamento OCSP acelera a validação do certificado, permitindo CloudFront validar o certificado e armazenar em cache a resposta da CA, para que o cliente não precise validar o certificado diretamente com a CA.

A melhoria de desempenho do grampeamento OCSP é mais acentuada quando CloudFront recebe muitas solicitações HTTPS para objetos no mesmo domínio. Cada servidor em uma localização CloudFront periférica deve enviar uma solicitação de validação separada. Quando CloudFront recebe muitas solicitações HTTPS para o mesmo domínio, cada servidor na localização periférica logo recebe uma resposta da CA de que pode “grampear” um pacote no handshake SSL; quando o espectador está convencido de que o certificado é válido, CloudFront pode servir o objeto solicitado. Se sua distribuição não receber muito tráfego em um ponto CloudFront de presença, é mais provável que novas solicitações sejam direcionadas para um servidor que ainda não validou o certificado com a CA. Nesse caso, o visualizador executa separadamente a etapa de validação e o CloudFront servidor serve o objeto. Esse servidor do CloudFront também envia uma solicitação de validação para a CA para que, na próxima vez que receber uma solicitação com o mesmo nome de domínio, tenha uma resposta de validação da CA.

Protocolos

CloudFront encaminha solicitações HTTP ou HTTPS para o servidor de origem com base no protocolo da solicitação do visualizador, seja HTTP ou HTTPS.

Importante

Se seu bucket do Amazon S3 estiver configurado como um endpoint de site, você não poderá configurar o uso de HTTPS CloudFront para se comunicar com sua origem porque o Amazon S3 não oferece suporte a conexões HTTPS nessa configuração.

Strings de consulta

Você pode configurar se CloudFront encaminha os parâmetros da sequência de caracteres de consulta para sua origem do Amazon S3. Para ter mais informações, consulte Armazenar em cache o conteúdo com base em parâmetros de string de consulta.

Tentativas e tempo limite de conexão da origem

O tempo limite da conexão de origem é o número de segundos de CloudFront espera ao tentar estabelecer uma conexão com a origem.

As tentativas de conexão de origem são o número de vezes que elas CloudFront tentam se conectar à origem.

Juntas, essas configurações determinam por quanto tempo CloudFront tenta se conectar à origem antes de passar para a origem secundária (no caso de um grupo de origem) ou retornar uma resposta de erro ao visualizador. Por padrão, CloudFront espera até 30 segundos (3 tentativas de 10 segundos cada) antes de tentar se conectar à origem secundária ou retornar uma resposta de erro. Esse tempo pode ser reduzido especificando um tempo limite de conexão mais curto, menos tentativas ou ambos.

Para obter mais informações, consulte Controlar tempos limite e tentativas da origem.

Tempo limite de resposta da origem

O tempo limite de resposta da origem, também conhecido como tempo limite de leitura da origem ou tempo limite de solicitação da origem, aplica-se a estes dois valores:

  • A quantidade de tempo, em segundos, que CloudFront espera por uma resposta depois de encaminhar uma solicitação para a origem.

  • A quantidade de tempo, em segundos, que CloudFront espera depois de receber um pacote de uma resposta da origem e antes de receber o próximo pacote.

CloudFront o comportamento depende do método HTTP da solicitação do visualizador:

  • GETe HEAD solicitações — se a origem não responder em 30 segundos ou parar de responder por 30 segundos, a conexão será CloudFront interrompida. Se o número especificado de tentativas de conexão de origem for maior que 1, CloudFront tente novamente obter uma resposta completa. CloudFront tenta até 3 vezes, conforme determinado pelo valor da configuração de tentativas de conexão de origem. Se a origem não responder durante a tentativa final, CloudFront não tente novamente até receber outra solicitação de conteúdo na mesma origem.

  • DELETE,OPTIONS,PATCH,PUT, e POST solicitações — Se a origem não responder em 30 segundos, interrompe CloudFront a conexão e não tente entrar em contato com a origem novamente. O cliente pode reenviar a solicitação, se necessário.

Não é possível alterar o tempo limite de resposta para uma origem do Amazon S3 (um bucket do S3 que não esteja configurado com hospedagem de site estático).

Solicitações simultâneas para o mesmo objeto (recolhimento de solicitações)

Quando um CloudFront ponto de presença recebe uma solicitação de um objeto e o objeto não está no cache ou o objeto em cache expira, envia CloudFront imediatamente a solicitação para a origem. No entanto, se houver solicitações simultâneas para o mesmo objeto, ou seja, se solicitações adicionais para o mesmo objeto (com a mesma chave de cache) chegarem ao ponto de presença antes de CloudFront receber a resposta à primeira solicitação, fará uma CloudFront pausa antes de encaminhar as solicitações adicionais para a origem. Essa breve pausa ajuda a reduzir a carga na origem. CloudFront envia a resposta da solicitação original para todas as solicitações recebidas enquanto estava pausada. Isso é chamado de recolhimento de solicitações. Nos CloudFront registros, a primeira solicitação é identificada como a Miss no x-edge-result-type campo e as solicitações reduzidas são identificadas como a. Hit Para obter mais informações sobre CloudFront registros, consulteCloudFront e registro de funções de ponta.

CloudFront só recolhe solicitações que compartilham uma chave de cache. Se as solicitações adicionais não compartilharem a mesma chave de cache porque, por exemplo, você configurou CloudFront para armazenar em cache com base em cabeçalhos de solicitação, cookies ou cadeias de caracteres de consulta, CloudFront encaminhe todas as solicitações com uma chave de cache exclusiva para sua origem.

Se quiser evitar o colapso de todas as solicitações, você pode usar a política de cache gerenciadoCachingDisabled, que também impede o armazenamento em cache. Para ter mais informações, consulte Usar as políticas de cache gerenciadas.

Se você quiser evitar o recolhimento das solicitações para objetos específicos, defina a TTL mínima para o comportamento de cache como 0 e configure a origem para enviar Cache-Control: private, Cache-Control: no-store, Cache-Control: no-cache, Cache-Control: max-age=0 ou Cache-Control: s-maxage=0. Essas configurações aumentarão a carga em sua origem e introduzirão latência adicional para as solicitações simultâneas que são pausadas enquanto CloudFront aguardam a resposta à primeira solicitação.

Como CloudFront processa respostas de sua origem do Amazon S3

Este tópico contém informações sobre como CloudFront processa respostas de sua origem no Amazon S3.

Solicitações canceladas

Se um objeto não estiver no cache de borda e se um visualizador encerrar uma sessão (por exemplo, fechar um navegador) depois CloudFront de obter o objeto de sua origem, mas antes de entregar o objeto solicitado, CloudFront não armazena o objeto no local de borda.

Cabeçalhos de resposta HTTP que CloudFront removem ou atualizam

CloudFront remove ou atualiza os seguintes campos de cabeçalho antes de encaminhar a resposta da sua origem do Amazon S3 para o visualizador:

  • X-Amz-Id-2

  • X-Amz-Request-Id

  • Set-Cookie— Se você configurar CloudFront para encaminhar cookies, ele encaminhará o campo do Set-Cookie cabeçalho aos clientes. Para ter mais informações, consulte Armazenar conteúdo em cache com base em cookies.

  • Trailer

  • Transfer-Encoding— Se sua origem do Amazon S3 retornar esse campo de cabeçalho, CloudFront defina o valor como chunked antes de retornar a resposta ao visualizador.

  • Upgrade

  • Via— CloudFront define o valor para o seguinte na resposta ao espectador:

    Via: versão HTTP string alfanumérica.cloudfront.net (CloudFront)

    Por exemplo, se o cliente faz uma solicitação pelo HTTP/1.1, o valor será semelhante a:

    Via: 1.1 1026589cc7887e7a0dc7827b4example.cloudfront.net (CloudFront)

Tamanho máximo do arquivo armazenável em cache

O tamanho máximo de um corpo de resposta CloudFront salvo em seu cache é de 50 GB. Isso inclui respostas de transferência em partes que não especificam o valor de cabeçalho Content-Length.

Você pode usar CloudFront para armazenar em cache um objeto maior que esse tamanho usando solicitações de intervalo para solicitar os objetos em partes com 50 GB ou menos. CloudFrontarmazena essas partes em cache porque cada uma delas tem 50 GB ou menos. Depois que o visualizador recuperar todas as partes do objeto, ele poderá reconstruir o objeto original, maior. Para ter mais informações, consulte Usar solicitações de intervalo para armazenar objetos grandes em cache.

Redirecionamentos

É possível configurar um bucket do Amazon S3 para redirecionar todas as solicitações para outro nome de host, que pode ser outro bucket do Amazon S3 ou um servidor HTTP. Se você configurar um bucket para redirecionar todas as solicitações e se o bucket for a origem de uma CloudFront distribuição, recomendamos que você configure o bucket para redirecionar todas as solicitações para uma CloudFront distribuição usando o nome de domínio da distribuição (por exemplo, d111111abcdef8.cloudfront.net) ou um nome de domínio alternativo (um CNAME) associado a uma distribuição (por exemplo, exemplo.com). Caso contrário, as solicitações do visualizador serão CloudFront ignoradas e os objetos serão atendidos diretamente da nova origem.

nota

Se você redirecionar as solicitações para um nome de domínio alternativo, deverá também atualizar o serviço de DNS do seu domínio adicionando um registro CNAME. Para obter mais informações, consulte Uso de URLs personalizados adicionando nomes de domínio alternativos (CNAMEs).

Veja o que acontece quando você configura um bucket para redirecionar todas as solicitações:

  1. Um visualizador (por exemplo, um navegador) solicita um objeto de CloudFront.

  2. CloudFront encaminha a solicitação para o bucket do Amazon S3 que é a origem da sua distribuição.

  3. O Amazon S3 retorna um código de status HTTP 301 (Movido permanentemente) e o novo local.

  4. CloudFront armazena em cache o código de status do redirecionamento e o novo local e retorna os valores para o visualizador. CloudFront não segue o redirecionamento para obter o objeto do novo local.

  5. O visualizador envia outra solicitação para o objeto, mas dessa vez o visualizador especifica o novo local de onde ele veio CloudFront:

    • Se o bucket do Amazon S3 estiver redirecionando todas as solicitações para uma CloudFront distribuição, usando o nome de domínio para a distribuição ou um nome de domínio alternativo, CloudFront solicite o objeto do bucket do Amazon S3 ou do servidor HTTP no novo local. Quando o novo local retorna o objeto, o CloudFront retorna ao visualizador e o armazena em cache em um local de borda.

    • Se o bucket do Amazon S3 estiver redirecionando solicitações para outro local, a segunda solicitação será ignorada. CloudFront O bucket do Amazon S3 ou o servidor HTTP no novo local retorna o objeto diretamente para o visualizador, de forma que o objeto nunca seja armazenado em cache em um CloudFront cache de borda.