Como uso o CloudFront para servir um site estático hospedado no Amazon S3?

10 minuto de leitura
0

Quero hospedar um site estático em um bucket do Amazon Simple Storage Service (Amazon S3). Em seguida, quero servir meu site por meio de uma distribuição do Amazon CloudFront.

Breve descrição

Para servir um site estático hospedado no Amazon S3, use uma das seguintes configurações para implantar uma distribuição do CloudFront:

  • Use um endpoint da API REST como origem e restrinja o acesso com um controle de acesso de origem (OAC) ou identidade de acesso de origem (OAI)
    Observação: a prática recomendada é usar o controle de acesso de origem (OAC) para restringir o acesso. A identidade de acesso de origem (OAI) é um método legado para esse processo.
  • Use um endpoint do site como origem e permita acesso anônimo (público)
  • Use um endpoint de site como origem e restrinja o acesso com um cabeçalho Referer
  • Use o AWS CloudFormation para implantar um endpoint de site estático como origem e um domínio personalizado apontando para o CloudFront

Para obter mais informações sobre os dois tipos de endpoint, consulte Principais diferenças entre um endpoint de site e um endpoint de API REST.

Resolução

Para configurar uma distribuição do CloudFront com o tipo de endpoint do S3 que você deseja usar como origem, conclua as seguintes etapas:

Use um endpoint da API REST como origem e restrinja o acesso com um OAC ou um OAI (legado)

1.Use o console do Amazon S3 para criar um bucket e fazer upload dos arquivos do seu site.

Observação: você não precisa ativar a hospedagem estática de sites em seu bucket para essa configuração. Essa configuração usa o endpoint da API REST do bucket em vez do endpoint do site do recurso estático de hospedagem de sites.

2.Crie uma distribuição web do CloudFront. Além das configurações de distribuição de casos de uso, conclua as etapas em uma das seções a seguir para restringir o acesso à origem do Amazon S3. A prática recomendada é usar o OAC, pois o OAI é uma configuração legada.

OAC

Ao criar sua distribuição, insira o nome do bucket do Amazon S3 no campo Domínio de origem.

Para o Acesso de origem, selecione as Configurações de controle de acesso de origem (recomendado).

Na lista suspensa de Controle de acesso de origem, selecione o nome do OAC e escolha Criar configuração de controle.

Na caixa de diálogo, nomeie sua configuração de controle**.** É uma prática recomendada deixar a configuração padrão Assinar solicitações (recomendado). Selecione Criar.

O CloudFront fornece a declaração de política para dar permissão ao OAC para acessar seu bucket do Amazon S3 depois de criar a distribuição. Selecione Copiar política e cole a política na configuração da política do bucket do S3.

OAI

Ao criar sua distribuição, insira o nome do bucket do Amazon S3 no campo Domínio de origem.

Para o Acesso de origem, selecione Identidades de acesso legadas.

Na lista suspensa Identidade de acesso de origem, selecione o nome da identidade de acesso de origem. Em seguida, escolha Criar novo OAI.

Na caixa de diálogo, nomeie sua nova identidade de acesso de origem e escolha Criar.

Em Política de bucket, selecione Sim, atualizar a política de bucket.

3.Ao criar sua distribuição, é uma prática recomendada usar SSL (HTTPS) em seu site. Para usar um domínio personalizado com HTTPS, selecione Certificado SSL personalizado. Escolha Solicitar certificado para solicitar um novo certificado. Se você não usa um domínio personalizado, ainda pode usar HTTPS com o nome de domínio cloudfront.net para sua distribuição.
Importante: se você inserir Nomes de domínio alternativos (CNAMEs) para sua distribuição, os CNAMEs devem corresponder ao certificado SSL que você selecionar. Para solucionar problemas com seu certificado SSL, consulte Como posso solucionar problemas com o uso de um certificado SSL personalizado para minha distribuição do CloudFront?

4.Atualize os registros DNS do seu domínio para direcionar o domínio do seu site para o CloudFront. Encontre o nome de domínio da sua distribuição no console do CloudFront. O nome do domínio é semelhante ao exemplo a seguir: d1234abcd.cloudfront.net.

5.Aguarde até que suas alterações de DNS se propaguem e que as entradas de DNS anteriores expirem.
Observação: o período para os valores de DNS anteriores expirarem depende do valor de TTL definido na sua zona hospedada. Também depende se seu resolvedor local usa esses valores de TTL.

Use um endpoint do site como origem e permita acesso anônimo (público)

Essa configuração permite acesso público de leitura no bucket do seu site. Para obter mais informações, consulte Configuração de permissões para acesso ao site.
Observação: quando você usa o endpoint estático do site do Amazon S3, as conexões entre o CloudFront e o Amazon S3 ficam disponíveis somente por HTTP. Para usar HTTPS para conexões entre o CloudFront e o Amazon S3, configure um endpoint da API REST do S3 para sua origem.

  1. Use o console do Amazon S3 para criar um bucket e ativar a hospedagem estática de sites no bucket.
  2. Na caixa de diálogo Hospedagem de site estático, copie o Endpoint do seu bucket sem o http:// inicial. O formato é semelhante ao DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Você precisa do endpoint nesse formato para uma etapa posterior.
  3. Adicione uma política de bucket que permita acesso público de leitura ao bucket que você criou.
    Observação: para essa configuração, você deve desativar as configurações de bloqueio de acesso público do bucket do S3. Se seu caso de uso exigir que você ative as configurações de bloqueio de acesso público, use o endpoint da API REST como origem. Em seguida, restrinja o acesso por meio de um controle de acesso de origem (OAC) ou identidade de acesso de origem (OAI).
  4. Crie uma distribuição web do CloudFront. Além das configurações de distribuição de casos de uso, conclua as seguintes etapas:
    Para o Domínio de origem, insira o endpoint que você copiou na etapa anterior.
    Observação: não selecione o bucket na lista suspensa. A lista suspensa inclui somente os endpoints da API REST do bucket do S3 que você não usa nessa configuração.
  5. Ao criar sua distribuição, é uma prática recomendada usar SSL (HTTPS) em seu site. Para usar um domínio personalizado com HTTPS, selecione Certificado SSL personalizado. Escolha Solicitar certificado para solicitar um novo certificado. Se você não usa um domínio personalizado, ainda pode usar HTTPS com o nome de domínio cloudfront.net para sua distribuição.
    Importante: se você inserir Nomes de domínio alternativos (CNAMEs) para sua distribuição, os CNAMEs devem corresponder ao certificado SSL que você selecionar. Para solucionar problemas com seu certificado SSL, consulte Como posso solucionar problemas com o uso de um certificado SSL personalizado para minha distribuição do CloudFront?
  6. Atualize os registros DNS do seu domínio para direcionar o domínio do seu site para o CloudFront. Encontre o nome de domínio da sua distribuição no console do CloudFront. O formato do nome de domínio é semelhante ao exemplo a seguir: d1234abcd.cloudfront.net.
  7. Aguarde até que suas alterações de DNS se propaguem e que as entradas de DNS anteriores expirem.
    Observação: o período para os valores de DNS anteriores expirarem depende do valor de TTL definido na sua zona hospedada. Também depende se seu resolvedor local usa esses valores de TTL.

Use um endpoint de site como origem e restrinja o acesso com um cabeçalho Referer

Importante: verifique se o acesso que essa configuração permite atende aos requisitos do seu caso de uso.

Essa configuração configura um cabeçalho Referer personalizado na distribuição para restringir o acesso. Em seguida, ele usa uma política de bucket para permitir o acesso somente às solicitações com o cabeçalho Referer personalizado.

Observação: quando você usa o endpoint estático do site do Amazon S3, as conexões entre o CloudFront e o Amazon S3 ficam disponíveis somente por HTTP. Para usar HTTPS para conexões entre o CloudFront e o Amazon S3, configure um endpoint da API REST do S3 para sua origem.

  1. Use o console do Amazon S3 para criar um bucket e ativar a hospedagem estática de sites no bucket.
  2. Na caixa de diálogo Hospedagem de site estático, copie o Endpoint do seu bucket sem o http:// inicial. O formato é semelhante ao DOC-EXAMPLE-BUCKET.s3-website-region.amazonaws.com. Você precisa do endpoint nesse formato para uma etapa posterior.
  3. Crie uma distribuição web do CloudFront. Além das configurações de distribuição de casos de uso, conclua as seguintes etapas:
    Para o Domínio de origem, insira o endpoint que você copiou na etapa anterior.
    Observação: não selecione o bucket na lista suspensa. A lista suspensa inclui somente os endpoints da API REST do Bucket do S3 que essa configuração não usa.
    Em Adicionar cabeçalho personalizado, escolha Adicionar cabeçalho.
    Em Nome do cabeçalho, insira Referer.
    Em Valor, insira o valor do cabeçalho do cliente que você deseja encaminhar para a origem (bucket do S3). Para restringir o acesso à origem, insira um valor aleatório ou secreto que somente você conheça.
  4. Ao criar sua distribuição, é uma prática recomendada usar SSL (HTTPS) em seu site. Para usar um domínio personalizado com HTTPS, selecione Certificado SSL personalizado. Escolha Solicitar certificado para solicitar um novo certificado. Se você não usa um domínio personalizado, ainda pode usar HTTPS com o nome de domínio cloudfront.net para sua distribuição.
    Importante: se você inserir Nomes de domínio alternativos (CNAMEs) para sua distribuição, os CNAMEs devem corresponder ao certificado SSL que você selecionar. Para solucionar problemas com seu certificado SSL, consulte Como posso solucionar problemas com o uso de um certificado SSL personalizado para minha distribuição do CloudFront?
  5. Abra o bucket do seu site no console do Amazon S3. Em seguida, adicione uma política de bucket que permita s3:GetObject com a condição de que a solicitação inclua o cabeçalho Referer personalizado que você especificou na etapa 3. Para essa configuração, você deve desativar as configurações de bloqueio de acesso público do bucket do S3. O Amazon S3 considera pública uma política de bucket que concede acesso anônimo restrito por um Referer. Se seu caso de uso exigir que você ative as configurações de bloqueio de acesso público, use o endpoint da API REST como origem. Em seguida, restrinja o acesso com um controle de acesso de origem (OAC) ou identidade de acesso de origem (OAI).
    Observação: para bloquear o acesso de qualquer solicitação que não inclua o cabeçalho Referer personalizado, use uma declaração de negação explícita na política do bucket.
  6. Atualize os registros DNS do seu domínio para direcionar o domínio do seu site para o CloudFront. Encontre o nome de domínio da sua distribuição no console do CloudFront. O nome do domínio é semelhante ao exemplo a seguir: d1234abcd.cloudfront.net.
  7. Aguarde até que suas alterações de DNS se propaguem e que as entradas de DNS anteriores expirem.
    Observação: o período para os valores de DNS anteriores expirarem depende do valor de TTL definido na sua zona hospedada. Também depende se seu resolvedor local usa esses valores de TTL.

Use o CloudFormation para implantar um endpoint de site estático como origem e um domínio personalizado direcionando para o CloudFront

Essa solução usa a seguinte configuração para seu site:

  • Implanta seu site com o CloudFormation
  • Hospeda seu site no Amazon S3
  • Distribui seu site com o CloudFront
  • Usa um certificado SSL/TLS do AWS Certificate Manager (ACM)
  • Usa políticas de cabeçalho de resposta do CloudFront para adicionar cabeçalhos de segurança a cada resposta do servidor

Para obter instruções sobre como implantar essa solução, consulte o site Amazon CloudFront Secure Static no site do GitHub.

Informações relacionadas

Começando com um site estático seguro

Validação de e-mail

Validação de DNS

Usando nomes de domínio alternativos e HTTPS

AWS OFICIAL
AWS OFICIALAtualizada há 9 meses