Não há destinos disponíveis ao tentar definir o destino alternativo do Route 53 para o S3

21

Estou tentando configurar um site simples baseado no Amazon AWS S3, conforme explicado aqui .

Eu configurei o bucket S3 (simples3websitetest.com), dei as permissões (espero) certas:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AddPerm",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::simples3websitetest.com/*"
            ]
        }
    ]
}

Carreguei index.html, acesso ao site de configuração e ele pode ser acessado em http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

Até aí tudo bem, agora eu quero configurar o acesso ao Amazon Route53 e foi aí que fiquei preso.

Configurei uma zona hospedada em um domínio que possuo (resourcesbox.net), cliquei em "criar conjunto de registros" e cheguei à etapa "alias de configuração", mas recebo "Nenhum destino disponível" nos pontos de extremidade do site S3 quando eu tente definir o alvo do alias.

Do que eu perdi ??

Amir Zucker
fonte
A partir de outubro de 2012, a Amazon introduziu uma função para manipular redirecionamentos (HTTP 301) para buckets S3. Você pode ler minha resposta anterior aqui. stackoverflow.com/a/24218895/1160780
Alberto Spelta 14/06

Respostas:

33

O alias do registro A criado deve ser igual ao nome do bloco, porque a hospedagem virtual de blocos no S3 exige que o Host:cabeçalho enviado pelo navegador corresponda ao nome do bloco. Não há realmente outra maneira prática pela qual a hospedagem virtual de buckets possa ser realizada ... o bucket deve ser identificado por algum mecanismo, e esse mecanismo são os cabeçalhos http.

Para criar um alias para um bucket dentro do domínio "example.com", o nome do bucket também precisará ser um nome de host que você pode declarar legalmente nesse domínio ... o registro A do Route 53 "testbucket.example .com ", por exemplo, pode ser aliasado a um bloco chamado" testbucket.example.com "... e a nenhum outro bloco.

Na sua pergunta, você está quebrando essa restrição ... mas só é possível criar um alias para um bloco chamado "simples3websitetest.com" dentro do (e no ápice do) domínio "simples3websitetest.com".

Isso ocorre por design e não é exatamente uma limitação da Rota 53 nem do S3. Eles estão apenas impedindo que você faça algo que não pode funcionar. Os servidores da Web desconhecem qualquer alias ou CNAMEs ou qualquer outra coisa feita no DNS - eles recebem apenas o nome do host original ao qual o navegador acredita que está tentando se conectar, nos cabeçalhos http enviados pelo navegador ... e o S3 usa isso informações para identificar o nome do bloco ao qual a solicitação hospedada virtual se aplica.

O Amazon S3 exige que você dê ao seu bucket o mesmo nome que o seu domínio. Isso é para que o Amazon S3 possa resolver adequadamente os cabeçalhos de host enviados pelos navegadores da web quando um usuário solicita conteúdo do seu site. Portanto, recomendamos que você crie seus buckets para seu site no Amazon S3 antes de pagar para registrar seu nome de domínio.

http://docs.aws.amazon.com/gettingstarted/latest/swh/getting-started-create-bucket.html#bucket-requirements

Observe, no entanto, que essa restrição se aplica apenas quando você não está usando o CloudFront na frente do seu bucket.

Com o CloudFront, há mais flexibilidade, porque o Host:cabeçalho pode ser reescrito (pelo próprio CloudFront) antes que a solicitação seja passada para o S3. Você configura o "host de origem" em sua distribuição do CloudFront como your-bucket.s3-website-xx-yyyy-n.amazonaws.comonde xx-yyyy-n é a região da AWS do S3 onde seu bucket foi criado. Esse terminal é mostrado no console do S3 para cada bucket.

Michael - sqlbot
fonte
1
Na verdade, esse era o problema: criei um bucket chamado resourcesbox.net e ele apareceu. Obrigado! Pergunta de acompanhamento rápido: o que isso significa é que, se eu quiser ter diferentes buckets para esse domínio, eu devo ter subdomínios adequados a cada bucket, certo? Não tem como contornar isso?
Amir Zucker #
Não sei exatamente o que você quer dizer com "Eu devo ter subdomínios". Você precisa criar um registro A na rota 53 com um nome de host correspondente a cada intervalo que deseja usar para hospedar um site no S3, sim.
Michael - sqlbot
1
@oberstet esta pergunta é sobre aliasregistros do Route 53 apontados para buckets S3 com hospedagem de site ativada, o que faz com que o DNS seja resolvido no ponto de extremidade do site, não no ponto de extremidade REST. Os pontos finais do site não suportam SSL ; somente os terminais REST fazem. Além disso, todos os certificados curinga suportam apenas um máximo de um * e podem aparecer apenas no componente de nome do host mais à esquerda, portanto, essa não é realmente uma limitação do S3.
Michael - sqlbot
1
@oberstet 6.4.3.1 O cliente NÃO DEVE tentar corresponder a um identificador apresentado no qual o caractere curinga compreende um rótulo diferente do rótulo mais à esquerda. Portanto, não existe um curinga de várias camadas. De qualquer forma, seu problema de boto é uma questão de a opção "formato de chamada" ser aparentemente implementada incorretamente. Cada depósito pode ser acessado por https com o nome do depósito como o primeiro elemento do caminho na URL S3 da região correta do depósito, por exemplo https://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/key. Terminal regional errado = erro de redirecionamento.
Michael - sqlbot
1
@MartinLyne thanks. Adicionei uma referência à documentação do S3, sobre o nome do depósito e o nome de domínio que precisam ser os mesmos, além de mencionar a solução alternativa para um nome de depósito já utilizado, usando o CloudFront. Nas regiões us-east-1 e us-west-2, e possivelmente em outras, o custo do uso do CloudFront é insignificante e pode até economizar um pouco, pois os downloads de CF são $ 0,005 / GB mais baratos em largura de banda do que o S3 direto em alguma margem Localizações.
Michael - sqlbot 28/09
0

Suponha que você tenha uma zona hospedada abc.com. e você cria um bucket abc.com (que não aparece na lista em aliases de rotas) - você pode pensar que é. após o nome - com o qual você não pode nomear os baldes

Tente isso também. Porque a primeira vez que criei o bucket com o nome correto e ainda não funcionou. Acredite, eu tenho TOC, então não perdi um ponto final ou vírgula.

  1. Crie outra zona hospedada com o mesmo nome abc.com
  2. Agora você verá 2 da mesma zona hospedada (abc.com. E abc.com.)
  3. Excluir o novo
  4. Volte para a antiga zona hospedada abc.com
  5. Você pode ver os pontos de extremidade s3 chegando - isso pode ser um problema no Route53

Isso funcionou para mim, tentando quase tudo - algumas sugestões que vejo é sair e fazer login para algum tipo de cache limpo - não tenho certeza

Chathushka
fonte