Análise
De acordo com a Request e comportamento de resposta e códigos de status HTTP suportados para Origens feitos sob encomenda , Amazon CloudFront não segue Redirects , infelizmente:
[...]
After you configure the redirect, the first time an end user submits a
request for the object, CloudFront Front sends the request to the
origin, and the origin responds with a redirect (for example, 302
Moved Temporarily). CloudFront caches the redirect and returns it to
the end user. CloudFront does not follow the redirect. [emphasis mine]
Claro, você está usando o Amazon S3 em vez de uma origem personalizada, e uma seção relacionada está notavelmente ausente de Solicitação e comportamento de resposta para o Amazon S3 Origens , mas dadas redirecionamentos Amazon S3 só foram adicionados muito recentemente (ver Amazon S3 - Suporte para o site redireciona ), ele pode estar faltando ainda.
Assim eu arrisco o palpite de que você não está recebendo um arquivo vazio com código de status HTTP 200 OK , em vez de um status HTTP 301 Movido permanentemente com nenhum corpo em tudo - você realmente verificou isso com um navegador ou, eventualmente, apenas com uma ferramenta de linha de comando como, por exemplo, cURL ou HTTPie ? As últimas ferramentas geralmente exigem um parâmetro explícito para seguir os redirecionamentos, de modo que isso pode facilmente passar despercebido.
Solução Potencial
Se a análise acaba por ser correto, você precisa configurar o redirecionamento para direcionar explicitamente CloudFront vez, mais uma vez ver Redirecionamentos :
You can configure your web server to redirect requests to one of the
following locations:
The new URL of the object on the origin server. When the end user follows the redirect to the new URL, the end user bypasses CloudFront
and goes straight to the origin. As a result, we recommend that you
not redirect requests to the new URL of the object on the origin.
The new CloudFront URL for the object. When the end user submits the request that contains the new CloudFront URL, CloudFront gets the
object from the new location on your origin, caches it at the edge
location, and returns the object to the end user. Subsequent requests
for the object will be served by the edge location. This avoids the
latency and load associated with viewers requesting the object from
the origin. However, every new request for the object will incur
charges for two requests to CloudFront.