Por que as imagens não estão sendo carregadas pelo CloudFront?

5 minuto de leitura
0

Estou usando uma distribuição do Amazon CloudFront para exibir imagens em um navegador. Por que as imagens não estão carregando?

Breve descrição

As imagens podem estar bloqueadas devido a problemas de permissão ou configuração ou devido a um erro 403 ou 404.

Para determinar se uma mensagem de erro está impedindo o carregamento das imagens, abra as ferramentas de desenvolvedor do seu navegador. Na guia Rede, localize as chamadas de rede para a solicitação de imagem. No cabeçalho de resposta da solicitação, verifique se há um código de erro 404 ou 403.

Se o valor do servidor for definido como um Amazon Simple Storage Service (Amazon S3) ou nome de servidor de origem personalizado, a origem retornará o código de erro.

Resolução

O CloudFront não tem permissão para acessar a origem do Amazon S3

Se você tiver a Identidade do acesso de origem (OAI) configurado no CloudFront para acessar imagens de um endpoint da API Rest do Amazon S3, confirme se o bucket tem uma política de bucket que concede acesso OAI ao conteúdo no bucket. Sem a política, quando uma solicitação é feita a partir do CloudFront, um erro 403:acesso negado é retornado e a imagem não é carregada.

Para resolver esse erro, verifique as permissões da política de bucket do S3.

A imagem não existe na origem S3 ou na origem personalizada

Se o arquivo de imagem solicitado não existir no bucket ou for colocado em uma pasta diferente, um erro 403 ou 404 será retornado. O erro retornado depende das permissões do bucket do S3:

O padrão de caminho de comportamento direciona a solicitação para uma origem ou pasta incorreta

Se sua distribuição tiver vários comportamentos com padrões de caminho diferentes, a imagem poderá ser direcionada para uma origem incorreta ou para uma pasta onde o arquivo não existe. Nesse caso, você verá um erro 404.

Para resolver esse erro, revise o comportamento e o padrão de caminho da sua distribuição. Confirme se a solicitação chega ao comportamento correto correspondente ao padrão do caminho e é direcionada para a origem correta.

Por exemplo, na configuração a seguir, Compartamento1 tem o padrão de caminho “teste” que roteia a solicitação para a origem do S3. O comportamento 2 tem o padrão de caminho “Default (*)” que roteia o tráfego para a origem do Elastic Load Balancing (ELB).

Behavior1: Path pattern = test ====> S3 origin 
Default Behavior: Path pattern = Default (*)=====> ELB origin

Quando uma solicitação de “https://example.com/test/myimage.png” é feita, a distribuição corresponde ao caminho com o padrão de caminho Default (*) do Compartamento2. A solicitação não corresponde ao teste do padrão de caminho Compartamento1 porque não há curinga no final do teste. Sem um curinga, essa solicitação corresponde ao padrão de caminho para o comportamento padrão e é direcionada para a origem do ELB. Como o objeto não existe na origem do ELB, a solicitação retornará um erro 404 e a imagem não será carregada.

As configurações de cache de comportamento não estão definidas para cabeçalho, cookies ou strings de consulta

A origem pode exigir que um determinado cabeçalho, cookies ou strings de consulta sejam aprovados na solicitação para veicular as imagens solicitadas. Nesse caso, quando uma solicitação é feita usando o CloudFront, as imagens não são carregadas. No entanto, se a mesma solicitação for feita diretamente na origem, a solicitação será bem-sucedida e a origem retornará os recursos solicitados.

Para solucionar problemas, determine se a origem requer determinados cabeçalhos, cookies ou strings de consulta para processar a solicitação. Em seguida, verifique se os requisitos são permitidos nas configurações do cache de comportamento.

Use uma política de solicitação de origem para permitir os valores (cabeçalhos, cookies e strings de consulta) incluídos nas solicitações que o CloudFront envia para sua origem. Você também pode usar as configurações de cache antigas.

Os metadados da imagem não estão definidos corretamente na origem

Se os metadados para Tipo de conteúdo na origem não estiverem definidos como image/png, a imagem será baixada em vez de ser exibida em seu navegador.

Para resolver esse problema, verifique os metadados deTipo de conteúdo. Se necessário, atualize o valor para image/png para as imagens em uma origem S3 ou personalizada.

O erro CORS faz com que as imagens não sejam carregadas

Se a configuração do CORS no CloudFront ou a origem não estiver definida corretamente, você receberá o erro: "No 'Access-Control-Allow-Origin' header is present on the requested resource"

Para resolver esse problema, confirme se a configuração do CORS está definida para o CloudFront e a origem. Para mais informações, consulte Como resolvo o erro "No 'Access-Control-Allow-Origin' header is present on the requested resource" no Amazon CloudFront?


AWS OFICIAL
AWS OFICIALAtualizada há 2 anos