Especificar um objeto raiz padrão - Amazon CloudFront

Especificar um objeto raiz padrão

É possível configurar o CloudFront para retornar um objeto específico (o objeto raiz padrão) quando um usuário solicita o URL raiz da sua distribuição ao invés de solicitar um objeto em sua distribuição. A especificação de um objeto raiz padrão evita a exposição do conteúdo da sua distribuição.

Como especificar um objeto raiz padrão

Para evitar a exposição do conteúdo de sua distribuição ou a devolução de um erro, execute as etapas a seguir para especificar um objeto raiz padrão para sua distribuição.

Para especificar um objeto raiz padrão para sua distribuições
  1. Faça upload do objeto raiz padrão na origem à qual sua distribuição aponta.

    O arquivo pode ser qualquer tipo compatível com o CloudFront. Para obter uma lista de restrições do nome do arquivo, consulte a descrição do elemento DefaultRootObject em DistributionConfig.

    nota

    Se o nome do arquivo do objeto raiz padrão for muito longo ou contiver um caractere inválido, o CloudFront retornará o erro HTTP 400 Bad Request - InvalidDefaultRootObject. Além disso, o CloudFront armazena o código em cache por 10 segundos (por padrão) e grava os resultados nos logs de acesso.

  2. Confirme se as permissões do objeto concedem pelo menos acesso read ao CloudFront.

    Para obter mais informações sobre permissões do Amazon S3, consulte Identity and Access Management no Amazon S3 no Guia do usuário do Amazon Simple Storage Service.

  3. Atualize a distribuição para fazer referência ao objeto raiz padrão usando o console ou a API do CloudFront.

    Para especificar um objeto raiz padrão usando o console do CloudFront:

    1. Faça login no AWS Management Console e abra o console do CloudFront em https://console.aws.amazon.com/cloudfront/v4/home.

    2. Na lista de distribuições no painel superior, selecione a distribuição a ser atualizada.

    3. No painel Settings (Configurações), na guia General (Geral), escolha Edit (Editar).

    4. Na caixa de diálogo Edit settings (Editar configurações), no campo Default root object (Objeto raiz padrão), insira o nome do arquivo do objeto raiz padrão.

      Insira somente o nome do objeto, por exemplo, index.html. Não adicione / antes do nome do objeto.

    5. Escolha Salvar alterações.

    Para atualizar a configuração usando a API do CloudFront, especifique um valor para o elemento DefaultRootObject na distribuição. Para obter informações sobre o uso da API do CloudFront para especificar um objeto raiz padrão, consulte UpdateDistribution na Referência da API do Amazon CloudFront.

  4. Confirme se você ativou o objeto raiz padrão ao solicitar o URL raiz. Se o navegador não exibir o objeto raiz padrão, execute as seguintes etapas:

    1. Confirme se a distribuição está totalmente implantada consultando o status dela no console do CloudFront.

    2. Repita as etapas 2 e 3 para verificar se foram concedidas as permissões corretas e se a configuração da distribuição foi atualizada corretamente para especificar o objeto raiz padrão.

Como funciona o objeto raiz padrão

Suponhamos, os seguintes pontos de solicitação do objeto image.jpg:

https://d111111abcdef8.cloudfront.net/image.jpg

Em contrapartida, os seguintes pontos de solicitação do URL raiz da mesma distribuição, em vez de um objeto específico, como no primeiro exemplo:

https://d111111abcdef8.cloudfront.net/

Ao definir um objeto raiz padrão, uma solicitação do usuário chamando a raiz da distribuição retornará o objeto raiz padrão. Por exemplo, se você designar o arquivo index.html como o objeto raiz padrão, uma solicitação de:

https://d111111abcdef8.cloudfront.net/

Retorna:

https://d111111abcdef8.cloudfront.net/index.html

nota

O CloudFront não determina se um URL com várias barras finais (https://d111111abcdef8.cloudfront.net///) é equivalente a https://d111111abcdef8.cloudfront.net/. O servidor de origem faz essa comparação.

Se você definir um objeto raiz padrão, uma solicitação do usuário de um subdiretório da distribuição não retornará o objeto raiz padrão. Por exemplo, suponha que index.html seja seu objeto raiz padrão, e o CloudFront receba uma solicitação de usuário final do diretório install da distribuição do CloudFront:

https://d111111abcdef8.cloudfront.net/install/

O CloudFront não retornará o objeto raiz padrão, mesmo que uma cópia de index.html apareça no diretório install.

Se você configurar a distribuição para permitir todos os métodos HTTP compatíveis com o CloudFront, o objeto raiz padrão se aplicará a todos os métodos. Por exemplo, se o objeto raiz padrão for index.php e você escrever a aplicação para enviar uma solicitação POST à raiz do domínio (https://example.com), o CloudFront enviará a solicitação para https://example.com/index.php.

O comportamento dos objetos raiz padrão do CloudFront é diferente do comportamento dos documentos de índice do Amazon S3. Ao configurar um bucket do Amazon S3 como um site e especificar o documento de índice, o Amazon S3 retornará o documento de índice mesmo que o usuário solicite um subdiretório no bucket. (Uma cópia do documento de índice deve ser exibida em cada subdiretório.) Para obter mais informações sobre como configurar buckets do Amazon S3 como sites e sobre documentos de índice, consulte o capítulo Hospedar sites no Amazon S3 no Manual do usuário do Amazon Simple Storage Service.

Importante

Lembre-se de que um objeto raiz padrão se aplica apenas à sua distribuição do CloudFront. É necessário gerenciar a segurança da sua origem. Por exemplo, se você estiver usando uma origem do Amazon S3, ainda precisará definir as ACLs do bucket do Amazon S3 adequadamente para garantir o nível de acesso desejado no bucket.

Como funciona o CloudFront se você não define um objeto raiz

Se você não definir um objeto raiz padrão, as solicitações da raiz da distribuição passarão para o servidor de origem. Se estiver usando uma origem do Amazon S3, qualquer um dos seguintes poderá ser retornado:

  • Uma lista do conteúdo do seu bucket do Amazon S3: em qualquer uma destas condições, o conteúdo da origem ficará visível para qualquer pessoa que usar o CloudFront para acessar sua distribuição:

    • Seu bucket não está configurado corretamente.

    • As permissões do Amazon S3 no bucket associado à distribuição e nos objetos do bucket concedem acesso a todos.

    • Um usuário final acessa sua origem usando o URL raiz dela.

  • Uma lista de conteúdo privado da sua origem: se você configurar a origem como uma distribuição privada (somente você e o CloudFront têm acesso), o conteúdo do bucket do Amazon S3 associado à distribuição ficará visível para qualquer pessoa que tiver as credenciais para acessar sua distribuição por meio do CloudFront. Nesse caso, os usuários não podem acessar seu conteúdo pelo URL raiz da origem. Para obter mais informações sobre distribuição de conteúdo privado, consulte Veicular conteúdo privado com URLs e cookies assinados.

  • Error 403 Forbidden: o CloudFront retornará esse erro se as permissões do bucket do Amazon S3 associado à sua distribuição ou as permissões dos objetos desse bucket negarem acesso ao CloudFront e a todos.