Estoy tratando de acceder a algunas páginas web disponibles usando S3 y funciona bien usando una URL como la siguiente: http://my-crazy-bucket.s3-website-us-east-1.amazonaws.com
La cosa es ... Necesito ocultar la URL de esa página detrás de una aplicación de proxy escrita en javascript, usando express. Pude hacer esto antes de usar frijoles mágicos elásticos en lugar de S3. Pero cuando traté de migrar esas páginas estáticas de EB a S3 y accedí a ellas usando la URL del proxy para ese depósito s3 dado. Esto resultó en el siguiente error:
404 Not Found Code: NoSuchBucket Message: The specified bucket does not exist BucketName: my-proxy-url.com RequestId: some stuff... HostId: some more stuff... Esperaba ver my-crazy-bucket en lugar de my-proxy-url.com en el BucketName de este error.
Configuré el CORS como permisivo en la configuración del depósito de esta manera:
<CORSConfiguration> <CORSRule> <AllowedOrigin>https://my-proxy-url.com</AllowedOrigin> <AllowedMethod>GET</AllowedMethod> <MaxAgeSeconds>3000</MaxAgeSeconds> <AllowedHeader>Authorization</AllowedHeader> </CORSRule> </CORSConfiguration>Pero aún así el problema persiste.
¿Creen que necesito alguna configuración S3 adicional o el problema está en mi proxy (aunque funcionó antes de apuntar a las mismas páginas estáticas alojadas en las antiguas instancias de beanstalk elásticos)?
No es un problema de CORS.
Debe cambiar (reescribir) el encabezado HTTP Host: de la solicitud entrante, dentro del proxy, antes de enviar la solicitud saliente, para que S3 comprenda que el depósito en cuestión es my-crazy-bucket.s3-website-us-east-1.amazonaws.com .
No basta con enviar la solicitud a S3. Debe dirigirse al depósito correcto, y S3 determina qué depósito es, observando el Host: encabezado para un punto final de depósito o un nombre de depósito.
Sin ver su código de proxy, no puedo ser más específico.