Como solucionar problemas de distribuição
Use as informações fornecidas aqui para ajudar a diagnosticar e corrigir erros de certificado, problemas de acesso negado ou outros problemas comuns que você possa encontrar ao configurar seu site ou aplicação com distribuições do Amazon CloudFront.
Tópicos
O CloudFront retorna um erro Access Denied
Se estiver usando um bucket do Amazon S3 como a origem de sua distribuição do CloudFront, você poderá ver uma mensagem de erro de acesso negado (403) nos exemplos a seguir.
Sumário
Você especificou um objeto ausente da origem do Amazon S3
Verifique se o objeto solicitado no bucket existe. Os nomes de objeto diferenciam letras maiúsculas de minúsculas. A inserção de um nome de objeto inválido pode retornar um código de erro de acesso negado.
Por exemplo, se você seguir o tutorial do CloudFront para criar uma distribuição básica, deverá criar um bucket do Amazon S3 como origem e carregar um arquivo index.html
de exemplo.
No navegador da web, se inserir https://d111111abcdef8.cloudfront.net/
em vez de INDEX
.HTMLhttps://d111111abcdef8.cloudfront.net/
, você poderá ver uma mensagem semelhante porque o arquivo index
.htmlindex.html
no caminho do URL diferencia letras maiúsculas de minúsculas.
<Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>22Q367AHT7Y1ABCD</RequestId> <HostId> ABCDE/Vg+7PSNa/d/IfFQ8Fb92TGQ0KH0ZwG5iEKbc6+e06DdMS1ZW+ryB9GFRIVtS66rSSy6So= </HostId> </Error>
A origem do Amazon S3 não tem permissões do IAM
Verifique se você selecionou o bucket do Amazon S3 como o nome e o domínio de origem. A origem (Amazon S3) deve ter as permissões corretas.
Se você não especificar as permissões corretas, a mensagem de acesso negado a seguir poderá aparecer para seus visualizadores.
<Code>AccessDenied</Code> <Message>User: arn:aws:sts::856369053181:assumed-role/OriginAccessControlRole/EdgeCredentialsProxy+EdgeHostAuthenticationClient is not authorized to perform: kms:Decrypt on the resource associated with this ciphertext because the resource does not exist in this Region, no resource-based policies allow access, or a resource-based policy explicitly denies access</Message> <RequestId>22Q367AHT7Y1ABCD/RequestId> <HostId> ABCDE/Vg+7PSNa/d/IfFQ8Fb92TGQ0KH0ZwG5iEKbc6+e06DdMS1ZW+ryB9GFRIVtS66rSSy6So= </HostId> </Error>
nota
Nessa mensagem de erro, o ID da conta 856369053181 é uma conta gerenciada pela AWS.
Ao distribuir conteúdo do Amazon S3 e também ao usar a criptografia do lado do serviço do AWS Key Management Service (AWS KMS) (SSE-KMS), você precisa especificar permissões adicionais do IAM para a chave do KMS e o bucket do Amazon S3. A distribuição do CloudFront precisa dessas permissões para usar a chave do KMS, que é usada para criptografia do bucket do Amazon S3 de origem.
As configurações da política de bucket do Amazon S3 permitem que a distribuição do CloudFront recupere os objetos criptografados para entrega de conteúdo.
Como verificar as permissões de chave do KMS e bucket do Amazon S3
-
Verifique se a chave do KMS que você está usando é a mesma que o bucket do Amazon S3 usa para criptografia padrão. Consulte mais informações em Especificando criptografia no lado do servidor com o AWS KMS (SSE-KMS) no Guia do usuário do Amazon Simple Storage Service.
-
Verifique se os objetos no bucket estão criptografados com a mesma chave do KMS. É possível selecionar qualquer objeto do bucket do Amazon S3 e verificar as configurações de criptografia do lado do servidor para verificar o ARN da chave do KMS.
-
Edite a política de bucket do Amazon S3 a fim de conceder ao CloudFront permissão para chamar a operação de API
GetObject
do bucket do Amazon S3. Consulte um exemplo de política de bucket do Amazon S3 que usa controle de acesso à origem em Conceder permissão ao controle de acesso à origem para acessar o bucket do S3. -
Edite a política de chave do KMS a fim de conceder permissão ao CloudFront para realizar as ações referentes a
Encrypt
,Decrypt
eGenerateDataKey*
. Para se alinhar com a permissão de privilégio mínimo, especifique um elementoCondition
. Dessa forma, somente a distribuição especificada do CloudFront poderá realizar as ações listadas. É possível personalizar a política para a política do AWS KMS existente. Consulte um exemplo da política de chave do KMS em SSE-KMS.
Se estiver usando identidade do acesso de origem (OAI) em vez de OAC, as permissões para o bucket do Amazon S3 serão um pouco diferentes, já que você concede permissão a uma identidade, e não a um AWS service (Serviço da AWS). Para ter mais informações, consulte Conceder permissão a uma identidade de acesso à origem para ler arquivos no bucket do Amazon S3.
Se você ainda não conseguir visualizar os arquivos na distribuição, consulte Não consigo visualizar os arquivos na minha distribuição.
Você está usando credenciais inválidas ou não tem permissões suficientes
Uma mensagem de erro de acesso negado poderá aparecer se você estiver usando credenciais do AWS SCT incorretas ou expiradas (chave de acesso e chave secreta) ou se o perfil ou usuário do IAM não tiver a permissão necessária para realizar uma ação em um recurso do CloudFront. Consulte mais informações sobre mensagens de erro de acesso negado em Solução de problemas de mensagens de erro de acesso negado no Guia do usuário do IAM.
Consulte mais informações sobre como o IAM funciona com o CloudFront em Identity and Access Management para Amazon CloudFront.
O CloudFront retorna um erro InvalidViewerCertificate quando tento adicionar um nome de domínio alternativo
Se o CloudFront retornar um erro InvalidViewerCertificate
quando você tentar adicionar um nome de domínio alternativo (CNAME) à distribuição, revise as informações a seguir para ajudar a solucionar o problema. Esse erro pode indicar que um dos seguintes problemas devem ser resolvidos para que você possa adicionar o nome de domínio alternativo com êxito.
Os erros a seguir são listados na ordem em que o CloudFront verifica a autorização para adicionar um nome de domínio alternativo. Isso pode ajudar a solucionar problemas, pois, de acordo com o erro que o CloudFront retornar, você poderá ver quais verificações foram concluídas com êxito.
- Não há nenhum certificado anexado à distribuição.
-
Para adicionar um nome de domínio alternativo (CNAME), você deve anexar um certificado válido e confiável à distribuição. Revise os requisitos, obtenha um certificado válido que os atenda, anexe-o à distribuição e tente novamente. Para obter mais informações, consulte Requisitos para o uso de nomes de domínio alternativos.
- Há muitos certificados na cadeia de certificados para o certificado que foi anexado.
-
Você só pode ter até cinco certificados em uma cadeia de certificados. Reduza o número de certificados na cadeia e tente novamente.
- A cadeia de certificados inclui um ou mais certificados que não são válidos para a data atual.
-
A cadeia de certificados para um certificado que foi adicionado tem um ou mais certificados que não são válidos, ou porque ainda não é um certificado válido ou porque um certificado expirou. Verifique os campos Not Valid Before (Não válido antes de) e Not Valid After (Não válido depois de) nos certificados da cadeia de certificados para garantir que todos eles sejam válidos de acordo com as datas listadas.
- O certificado anexado não está assinado por uma autoridade de certificação (CA) confiável.
-
O certificado anexado ao CloudFront para verificar um nome de domínio alternativo não pode ser um certificado autoassinado. Ele deve ser assinado por uma CA confiável. Para obter mais informações, consulte Requisitos para o uso de nomes de domínio alternativos.
- O certificado anexado não está formatado corretamente
-
O nome de domínio e o formato do endereço IP que estão incluídos no certificado e o formato do próprio certificado devem seguir o padrão de certificados.
- Ocorreu um erro interno do CloudFront.
-
O CloudFront foi bloqueado por um problema interno e não pôde validar os certificados. Nesse caso, o CloudFront retorna um código de status HTTP 500 e indica que há um problema interno do CloudFront com a anexação do certificado. Aguarde alguns minutos e tente novamente para adicionar o nome de domínio alternativo com o certificado.
- O certificado anexado não abrange o nome de domínio alternativo que você está tentando adicionar.
-
Para cada nome de domínio alternativo que você adiciona, o CloudFront requer a anexação de um certificado SSL/TLS de uma autoridade de certificação (CA) confiável que abranja o nome de domínio, para validar sua autorização para usá-lo. Atualize o certificado para incluir um nome de domínio que abranja o CNAME que você está tentando adicionar. Para obter mais informações e exemplos de como usar nomes de domínio com caracteres curingas, consulte Requisitos para o uso de nomes de domínio alternativos.
O CloudFront retorna um erro de registro DNS configurado incorretamente quando tento adicionar um novo CNAME
Quando há uma entrada de DNS curinga existente apontando para uma distribuição do CloudFront, se tentar adicionar um novo CNAME com um nome mais específico, você poderá encontrar o seguinte erro:
One or more aliases specified for the distribution includes an incorrectly configured DNS record that points to another CloudFront distribution. You must update the DNS record to correct the problem.
Esse erro ocorre porque o CloudFront consulta o DNS em relação ao CNAME e a entrada de DNS curinga é resolvida para outra distribuição.
Para resolver isso, primeiro crie outra distribuição e, depois, crie uma entrada de DNS apontando para a nova distribuição. Por fim, adicione o CNAME mais específico. Consulte mais informações sobre como adicionar CNAMEs em Adicionar um nome de domínio alternativo.
Não consigo visualizar os arquivos na minha distribuição
Se você não puder visualizar os arquivos na distribuição do CloudFront, consulte os tópicos a seguir para obter algumas soluções comuns.
Você se cadastrou no CloudFront e no Amazon S3?
Para usar o Amazon CloudFront com uma origem do Amazon S3, cadastre-se no CloudFront e no Amazon S3 separadamente. Para obter mais informações sobre como se cadastrar no CloudFront e no Amazon S3, consulte Configurar a Conta da AWS.
Suas permissões do bucket e do objeto do Amazon S3 estão definidas corretamente?
Se você estiver usando o CloudFront com uma origem do Amazon S3, as versões originais do seu conteúdo serão armazenadas em um bucket do S3. A maneira mais fácil de usar o CloudFront com o Amazon S3 é tornar todos os seus objetos legíveis publicamente no Amazon S3. Para fazer isso, você deve habilitar de forma explícita os privilégios de leitura pública em cada objeto carregado no Amazon S3.
Caso seu conteúdo não possa ser lido publicamente, você deverá criar um controle de acesso à origem (OAC) do CloudFront para que o CloudFront possa acessar o conteúdo. Para obter mais informações sobre o controle de acesso à origem do CloudFront, consulte Restringir o acesso a uma origem do Amazon Simple Storage Service.
As propriedades do bucket e do objeto são independentes. Você deve conceder privilégios explicitamente a cada objeto no Amazon S3. Os objetos não herdam as propriedades dos buckets, e as propriedades dos objetos devem ser definidas de forma independente do bucket.
Seu nome de domínio alternativo (CNAME) está configurado corretamente?
Se você já tem um registro CNAME para seu nome de domínio, atualize-o ou substitua-o por um novo que aponte para o nome do domínio da sua distribuição.
Além disso, verifique se o CNAME aponta para o nome do domínio da distribuição, não para o bucket do Amazon S3. Você pode confirmar se o registro CNAME do seu sistema DNS aponta para o nome do domínio da sua distribuição. Para fazer isso, use uma ferramenta de DNS, como o dig.
O exemplo a seguir mostra uma solicitação do DIG de um nome de domínio images.example.com
e a parte relevante do resultado. Em ANSWER SECTION
, consulte a linha que contém CNAME
. O registro CNAME do nome de domínio estará configurado corretamente se o valor à direita do CNAME for o nome de domínio da distribuição do CloudFront. Se ele for o bucket do servidor de origem do Amazon S3 ou outro nome de domínio, o registro CNAME estará configurado incorretamente.
[prompt]> dig images.example.com ; <<> DiG 9.3.3rc2 <<> images.example.com ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917 ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0 ;; QUESTION SECTION: ;images.example.com. IN A ;; ANSWER SECTION: images.example.com. 10800 IN CNAME d111111abcdef8.cloudfront.net. ... ...
Para obter mais informações sobre os CNAMEs, consulte Usar URLs personalizados adicionando nomes de domínio alternativos (CNAMEs).
Você está usando o URL correto na distribuição do CloudFront?
Verifique se o URL mencionado usa o nome de domínio (ou CNAME) da sua distribuição do CloudFront, não do bucket do Amazon S3 ou da origem personalizada.
Você precisa de ajuda para solucionar um problema com a origem personalizada?
Se você precisar que a AWS ajude a solucionar um problema com uma origem personalizada, é possível que precisemos inspecionar as entradas do cabeçalho X-Amz-Cf-Id
das suas solicitações. Se você ainda não estiver registrando essas entradas, considere fazer isso no futuro. Para ter mais informações, consulte Usar o Amazon EC2 (ou outra origem personalizada). Para obter ajuda adicional, consulte a Central de Suporte da AWS
Mensagem de erro: Certificate: <certificate-id> Is Being Used by CloudFront (O certificado: <certificate-id> está sendo usado pelo CloudFront)
Problema: você está tentando excluir um certificado SSL/TLS do armazenamento de certificados do IAM e está recebendo a mensagem "Certificate: <certificate-id> is being used by CloudFront (O certificado: certificate-id> está sendo usado pelo CloudFront)".
Solução: cada distribuição do CloudFront deve ser associada ao certificado padrão do CloudFront ou a um certificado SSL/TLS personalizado. Antes de excluir um certificado SSL/TLS, você deve alternar o certificado (substituir o certificado SSL/TLS personalizado atual por outro) ou reverter do uso de um certificado SSL/TLS personalizado para o uso do certificado padrão do CloudFront. Para corrigir isso, conclua as etapas de um dos seguintes procedimentos: