2011-06-07 23 views
20

Estoy buscando servir mi sitio estático con Amazon S3. Creé un cubo y cargué mis archivos; en la pestaña "Sitio web" de AWS Management Console, he marcado "Activado" e ingresé index.html en el campo "Documento de índice". Tengo la siguiente política de cubo:¿Por qué Amazon S3 no sirve automáticamente /foo/index.html cuando solicito/foo o/foo /?

{ 
    "Version": "2008-10-17", 
    "Id": "924a2348-de0e-43aa-bb06-83adbcd1db22", 
    "Statement": [ 
     { 
      "Sid": "PublicReadForGetBucketObjects", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": "*" 
      }, 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::my-bucket/*" 
     } 
    ] 

} 

donde tengo el nombre de mi cubo en lugar de my-bucket. Debajo de la pestaña "Permisos", también otorgué a "Todos" la capacidad de la lista.

Si intento acceder al my-bucket.s3.amazonaws.com/index.html mi página (y sus imágenes, CSS, etc.) aparece como se esperaba. Sin embargo, solo yendo a my-bucket.s3.amazonaws.com o my-bucket.s3.amazonaws.com/ da un archivo XML de listado de directorio en lugar de mostrar la página. Si trato de ir al my-bucket.s3.amazonaws.com/subdirectory me aparece un error (en XML) que dice "La clave especificada no existe". Más extrañamente, si trato de ir a my-bucket.s3.amazonaws.com/subdirectory/ (con una barra inclinada), no se carga ninguna página pero mi navegador descarga una archivo vacío llamado download. (Una vez más, yendo a my-bucket.s3.amazonaws.com/subdirectory/index.html muestra la página como se esperaba.)

¿Estoy haciendo algo mal aquí? ¿Cómo obtengo que S3 muestre el archivo index.html cuando se solicita un nombre de directorio?

Respuesta

12
+24

He encontrado el problema. Ya había leído su segundo enlace en algún momento, pero volví y volví a leerlo y me di cuenta de que estaba usando un nombre de dominio incorrecto. En lugar de esperar que mi sitio se aloje en 'my-bucket.s3.amazonaws.com', que solo era de alguna forma, debería haber estado usando' my-bucket.s3-website-us-east-1.amazonaws. com'. (También puede cambiar la región según corresponda). Esta distinción es obvia ahora que sé que debo buscarla, pero ¡vaya! ¡Se ha pasado por alto este subdominio! De todos modos, espero que ahora otros puedan beneficiarse de mi falta de atención :-) – bdesham

+0

para conocer su URL real, vaya a 'console.aws.amazon.com' y haga clic en la pestaña' propiedades' en la parte superior, elija su cubo y allí puede ver su url "endpoint" – vsync

+0

También vale la pena señalar, si utiliza el CNAME incorrecto inicialmente (por ejemplo, my-bucket.s3.amazon.com), no olvide (como lo hice) que el DNS lo almacenará en caché Un rato. :) –