No hay objetivos disponibles al intentar establecer el objetivo de alias de la Ruta 53 a S3

21

Estoy tratando de configurar un sitio web simple basado en Amazon AWS S3, como se explica aquí .

He configurado el bucket S3 (simples3websitetest.com), le di los permisos correctos (con suerte):

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

Subí index.html, configuré el acceso al sitio web y se puede acceder a través de http://simples3websitetest.com.s3-website-us-west-2.amazonaws.com/index.html

Hasta ahora todo bien, ahora quiero configurar el acceso a Amazon Route53 y aquí es donde me quedé atascado.

Configuré una zona alojada en un dominio que poseo (resourcesbox.net), hice clic en "crear conjunto de registros" y llegué al paso "configurar alias", pero obtengo "No hay objetivos disponibles" en los puntos finales del sitio web S3 cuando intenta establecer el objetivo de alias.

¿¿Qué me perdí??

Amir Zucker
fuente
A partir de octubre de 2012, Amazon introdujo una función para manejar las redirecciones (HTTP 301) para los buckets S3. Puedes leer mi respuesta anterior aquí. stackoverflow.com/a/24218895/1160780
Alberto Spelta

Respuestas:

33

El alias de registro A que cree debe ser el mismo que el nombre del depósito, ya que el alojamiento virtual de depósitos en S3 requiere que el Host:encabezado enviado por el navegador coincida con el nombre del depósito. Realmente no hay otra forma práctica en la que se pueda lograr el alojamiento virtual de cubos ... el cubo debe ser identificado por algún mecanismo, y ese mecanismo son los encabezados http.

Para crear un alias a un depósito dentro del dominio "ejemplo.com", el nombre del depósito también tendrá que ser un nombre de host que pueda declarar legalmente dentro de ese dominio ... el ejemplo de prueba de la Ruta 53 A-Record "testbucket.example .com, "por ejemplo, solo puede ser alias a un depósito llamado" testbucket.example.com "... y ningún otro depósito.

En su pregunta, está rompiendo esta restricción ... pero solo puede crear un alias para un depósito llamado "simples3websitetest.com" dentro (y en la cúspide) del dominio "simples3websitetest.com".

Esto es por diseño, y no es exactamente una limitación de la Ruta 53 ni de S3. Solo te impiden hacer algo que no puede funcionar. Los servidores web no tienen conocimiento de ningún alias o CNAME o cualquier otra cosa que se haga en el DNS: solo reciben el nombre de host original al que el navegador cree que está intentando conectarse, en los encabezados http enviados por el navegador ... y S3 usa esto información para identificar el nombre del depósito al que se aplica la solicitud alojada virtual.

Amazon S3 requiere que le dé a su depósito el mismo nombre que su dominio. Esto es para que Amazon S3 pueda resolver adecuadamente los encabezados de host enviados por los navegadores web cuando un usuario solicita contenido de su sitio web. Por lo tanto, le recomendamos que cree sus cubos para su sitio web en Amazon S3 antes de pagar para registrar su nombre de dominio.

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

Sin embargo, tenga en cuenta que esta restricción solo se aplica cuando no está utilizando CloudFront frente a su bucket.

Con CloudFront, hay más flexibilidad, porque el Host:encabezado se puede reescribir (por el propio CloudFront) antes de que la solicitud pase a S3. Configura el "host de origen" en su distribución de CloudFront como your-bucket.s3-website-xx-yyyy-n.amazonaws.comdonde xx-aaaa-n es la región de AWS de S3 donde se creó su depósito. Este punto final se muestra en la consola S3 para cada depósito.

Michael - sqlbot
fuente
1
Este fue el problema, creé un cubo llamado resourcesbox.net y apareció. ¡Gracias! Pregunta de seguimiento rápido: lo que esto significa es que si quiero tener diferentes cubetas para ese dominio, ¿debo tener subdominios que se adapten a cada cubeta? ¿No hay forma de evitarlo?
Amir Zucker
No estoy exactamente seguro de lo que quieres decir con "debo tener subdominios". Debe crear un registro A en la ruta 53 con un nombre de host que coincida con cada depósito que desea utilizar para alojar un sitio web en S3, sí.
Michael - sqlbot
1
@oberstet, esta pregunta trata sobre los aliasregistros de la Ruta 53 que apuntan a cubos S3 con el alojamiento del sitio web habilitado, lo que hace que el DNS se resuelva en el punto final del sitio web, no en el punto final REST. Los puntos finales del sitio web no admiten SSL en absoluto ; solo lo hacen los puntos finales REST. Además, todos los certificados comodín solo admiten un máximo de uno * y solo puede aparecer en el componente de nombre de host más a la izquierda, por lo que no es realmente una limitación de S3.
Michael - sqlbot
1
@oberstet 6.4.3.1 El cliente NO DEBE intentar hacer coincidir un identificador presentado en el que el carácter comodín comprende una etiqueta distinta de la etiqueta situada más a la izquierda. Por lo tanto, no existe un comodín de varios niveles. En cualquier caso, su problema de boto es una cuestión de la opción "formato de llamada" aparentemente implementada incorrectamente. Se puede acceder a cada depósito a través de https con el nombre del depósito como el primer elemento de ruta bajo la URL S3 para la región correcta del depósito, por ejemplo https://s3-us-west-2.amazonaws.com/my-bucket.with-dots.in-us-west-2/key. Punto final regional incorrecto = error de redireccionamiento.
Michael - sqlbot
1
@MartinLyne gracias. Agregué una referencia a la documentación de S3, sobre el nombre del depósito y el nombre de dominio que deben ser los mismos, así como mencionar la solución para un nombre de depósito ya tomado, usando CloudFront. En las regiones us-east-1 y us-west-2, y posiblemente en otras, el costo de usar CloudFront es insignificante y puede incluso ahorrar un poco, ya que las descargas de CF son $ 0.005 / GB más baratas en ancho de banda que S3 directo en algún borde ubicaciones.
Michael - sqlbot
0

Suponga que tiene una zona alojada abc.com. y crea un cubo abc.com (que no aparece en la lista en alias de rutas), puede pensar que es el. después del nombre, que no puede nombrar los cubos con

Prueba esto también. Porque la primera vez que creé el cubo con el nombre correcto y aún no funcionó. Créeme, tengo TOC, así que no me perdí una parada completa o una coma.

  1. Cree otra zona alojada con el mismo nombre abc.com
  2. Ahora verá 2 de la misma zona alojada (abc.com. Y abc.com).
  3. Eliminar el nuevo
  4. Regrese a la antigua zona alojada abc.com
  5. Es posible que pueda ver los puntos finales s3 que vienen, esto puede ser un problema en Route53

Esto funcionó para mí probando casi todo: algunas sugerencias que veo es cerrar sesión e iniciar sesión para algún tipo de borrado de caché, no estoy seguro

Chathushka
fuente