

# Como solucionar problemas de distribuição
<a name="troubleshooting-distributions"></a>

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.

**Topics**
+ [O CloudFront retorna um erro Access Denied](#access-denied)
+ [O CloudFront retorna um erro InvalidViewerCertificate quando tento adicionar um nome de domínio alternativo](#troubleshooting-distributions-certificates)
+ [O CloudFront retorna um erro de registro DNS configurado incorretamente quando tento adicionar um novo CNAME](#troubleshoot-incorrectly-configured-DNS-record-error)
+ [Não consigo visualizar os arquivos na minha distribuição](#troubleshooting-web-distribution)
+ [Mensagem de erro: Certificate: <certificate-id> Is Being Used by CloudFront (O certificado: <certificate-id> está sendo usado pelo CloudFront)](#troubleshooting-certificate-error)

## O CloudFront retorna um erro Access Denied
<a name="access-denied"></a>

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.

**Contents**
+ [Você especificou um objeto ausente da origem do Amazon S3](#missing-object-in-s3-bucket)
+ [A origem do Amazon S3 não tem permissões do IAM](#access-denied-origin-missing-iam-permissions)
+ [Você está usando credenciais inválidas ou não tem permissões suficientes](#access-denied-missing-iam-permissions)

### Você especificou um objeto ausente da origem do Amazon S3
<a name="missing-object-in-s3-bucket"></a>

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](GettingStarted.SimpleDistribution.md) 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/INDEX.HTML` em vez de `https://d111111abcdef8.cloudfront.net/index.html`, você poderá ver uma mensagem semelhante porque o arquivo `index.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
<a name="access-denied-origin-missing-iam-permissions"></a>

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 `AccessDenied` poderá aparecer para seus visualizadores. 

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**

1. 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)](https://docs.aws.amazon.com/AmazonS3/latest/userguide/specifying-kms-encryption.html) no *Guia do usuário do Amazon Simple Storage Service*.

1. 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.

1. 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 CloudFront para acessar o bucket do S3](private-content-restricting-access-to-s3.md#oac-permission-to-access-s3).

1. 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` e `GenerateDataKey*`. Para se alinhar com a permissão de privilégio mínimo, especifique um elemento `Condition`. 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](private-content-restricting-access-to-s3.md#oac-permissions-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 obter mais informações, consulte [Conceder permissão a uma identidade de acesso à origem para ler arquivos no bucket do Amazon S3](private-content-restricting-access-to-s3.md#private-content-granting-permissions-to-oai).

Se você ainda não conseguir visualizar os arquivos na distribuição, consulte [Não consigo visualizar os arquivos na minha distribuição](#troubleshooting-web-distribution).

### Você está usando credenciais inválidas ou não tem permissões suficientes
<a name="access-denied-missing-iam-permissions"></a>

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](https://docs.aws.amazon.com/IAM/latest/UserGuide/troubleshoot_access-denied.html) 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](security-iam.md).

## O CloudFront retorna um erro InvalidViewerCertificate quando tento adicionar um nome de domínio alternativo
<a name="troubleshooting-distributions-certificates"></a>

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](CNAMEs.md#alternate-domain-names-requirements).

**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](CNAMEs.md#alternate-domain-names-requirements).

**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](CNAMEs.md#alternate-domain-names-requirements).

## O CloudFront retorna um erro de registro DNS configurado incorretamente quando tento adicionar um novo CNAME
<a name="troubleshoot-incorrectly-configured-DNS-record-error"></a>

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](CreatingCNAME.md).

## Não consigo visualizar os arquivos na minha distribuição
<a name="troubleshooting-web-distribution"></a>

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?
<a name="Troubleshooting.SigningUp"></a>

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](setting-up-cloudfront.md).

### Suas permissões do bucket e do objeto do Amazon S3 estão definidas corretamente?
<a name="Troubleshooting.Permissions"></a>

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. Para fornecer o conteúdo aos visualizadores e proteger o acesso ao bucket do Amazon S3, recomendamos usar o controle de acesso de origem (OAC) do CloudFront. Isso significa que o bucket do S3 só pode ser acessado por meio do CloudFront. O OAC controla o acesso do visualizador e a entrega segura via CloudFront. Para ter mais informações sobre OAC, consulte [Restringir o acesso a uma origem do Amazon S3](private-content-restricting-access-to-s3.md).

Para ter mais informações sobre como gerenciar o acesso ao seu bucket, consulte [Bloquear o acesso público ao armazenamento do Amazon S3](https://docs.aws.amazon.com/AmazonS3/latest/userguide/access-control-block-public-access.html) no *Guia do usuário do Amazon S3*.

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?
<a name="Troubleshooting.CNAME"></a>

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.

```
 1. [prompt]> dig images.example.com
 2. 
 3. ; <<> DiG 9.3.3rc2 <<> images.example.com
 4. ;; global options:	printcmd
 5. ;; Got answer:
 6. ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15917
 7. ;; flags: qr rd ra; QUERY: 1, ANSWER: 9, AUTHORITY: 2, ADDITIONAL: 0
 8. ;; QUESTION SECTION:
 9. ;images.example.com.		 IN		A
10. ;; ANSWER SECTION:
11. images.example.com. 10800 IN	CNAME	d111111abcdef8.cloudfront.net.
12. ...
13. ...
```

Para obter mais informações sobre os CNAMEs, consulte [Usar URLs personalizados adicionando nomes de domínio alternativos (CNAMEs)](CNAMEs.md).

### Você está usando o URL correto na distribuição do CloudFront?
<a name="Troubleshooting.URL"></a>

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?
<a name="Troubleshooting.CustomOrigin"></a>

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 obter mais informações, consulte [Usar o Amazon EC2 (ou outra origem personalizada)](DownloadDistS3AndCustomOrigins.md#concept_CustomOrigin). Para obter ajuda adicional, consulte a [Central de Suporte da AWS](https://console.aws.amazon.com/support/home?#/).

## Mensagem de erro: Certificate: <certificate-id> Is Being Used by CloudFront (O certificado: <certificate-id> está sendo usado pelo CloudFront)
<a name="troubleshooting-certificate-error"></a>

**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:
+ [Trocar certificados SSL/TLS](cnames-and-https-rotate-certificates.md)
+ [Reverter um certificado SSL/TLS personalizado para o certificado padrão do CloudFront](cnames-and-https-revert-to-cf-certificate.md)