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 (visualizador) solicita o URL raiz da sua distribuição, em vez de solicitar um objeto em sua distribuição. Você pode especificar um objeto raiz padrão para evitar a exposição do conteúdo da sua distribuição.

Como especificar um objeto raiz padrão

Para evitar expor o conteúdo de sua distribuição ou a exibição de um erro, especifique um objeto raiz padrão para sua distribuição. Você pode especificar o nome exato do arquivo ou o caminho para o arquivo. Por exemplo, se o objeto raiz for um arquivo index.html, você poderá especificar esse nome de arquivo. Se o arquivo index.html estiver em outra pasta, especifique o caminho em vez disso, como exampleFolderName/index.html. Se você definir um caminho para o objeto raiz padrão, as solicitações do visualizador para o URL raiz da distribuição exibirão o arquivo especificado desse caminho. Você pode usar um caminho de arquivo para ter maior flexibilidade para organizar seu conteúdo na origem, pois seu objeto raiz padrão pode estar em uma pasta em vez de no nível raiz.

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 de nome de arquivo, consulte o elemento DefaultRootObject em DistributionConfig da Referência de API do Amazon CloudFront.

    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 de leitura 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 Editar configurações, no campo Objeto raiz padrão, insira o nome do arquivo ou o caminho do objeto raiz padrão.

      dica

      A string não pode começar com uma barra (/). Especifique somente o nome do objeto ou o caminho até o objeto. Por exemplo, use index.html ou exampleFolderName/index.html. A especificação de /exampleFolderName/index.html ou /index.html pode provocar um erro 403: Acesso Negado.

    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. No entanto, se você especificou um caminho para o objeto raiz padrão (install/index.html), o CloudFront retornará o objeto raiz padrão de solicitações do usuário final para o 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.