¿Cómo configurar CORS en AWS S3?

Estoy días investigando cómo funciona CORS en AWS S3 pero no puedo configurarlo en absoluto.

Necesito que mis archivos NO sean accesibles públicamente, pero pueden ser incorporados a mis dominios. Actualmente no puedo incorporar mis imágenes en mis dominios, el acceso a ellas está completamente bloqueado, como si CORS no existiera.

AWS Block Public Access

AWS Block Public Access

Ajustes de CORS

[
  {
    "AllowedHeaders": ["*"],
    "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
    "AllowedOrigins": [
      "https://www.dev.seedlix.com.br/",
      "https://dev.seedlix.com.br/",
      "http://www.dev.seedlix.com.br/",
      "http://dev.seedlix.com.br/",
      "https://www.seedlix.com.br/",
      "https://seedlix.com.br/",
      "http://www.seedlix.com.br/",
      "http://seedlix.com.br/",
      "http://localhost:3000/",
      "52.95.163.31:443"
    ],
    "ExposeHeaders": []
  }
]

Pregunta hecha hace 3 años, 4 meses, 28 días - Por devninjax


3 Respuestas:

  • Después de muchas horas de investigación, finalmente logré hacer lo que quería. En primer lugar, dejé todo Accesible a Bucket, y luego creé una política que bloquea el acceso a TODOS excepto las solicitudes que se originan de mis dominios.

    Bucket Acceso público

    Bucket Public Access

    Bucket Policy

    {
      "Version": "2012-10-17",
      "Id": "http referer policy example",
      "Statement": [
        {
          "Sid": "Allow get requests originating custom domains.",
          "Effect": "Deny",
          "Principal": "*",
          "Action": ["s3:GetObject", "s3:GetObjectVersion"],
          "Resource": "arn:aws:s3:::BUCKET_NAME_HERE/*",
          "Condition": {
            "StringNotLike": {
              "aws:Referer": [
                "https://domain-a.com.br/*",
                "https://domain-b.com/*",
              ]
            }
          }
        }
      ]
    

    Bucket Cors Policy

    Bucket Cors Policy

    Respondida el Dec 18, 2020 a las 02:57 - por stackscripter

    Votos positivos: 0 | Votos negativos: 0

  • Para configurar CORS en AWS S3 y permitir la incorporación de archivos en tus dominios sin hacerlos accesibles públicamente, primero asegúrate de haber habilitado los permisos necesarios en las políticas de acceso y en la configuración de bloqueo de acceso público de tu bucket.

    Luego, para corregir la configuración de CORS en tu bucket de S3, puedes seguir los siguientes pasos:

    • Accede a la consola de AWS y dirígete al servicio de S3.
    • Selecciona el bucket que deseas configurar.
    • Ve a la pestaña de "Permissions" y selecciona "CORS configuration".
    • Asegúrate de tener una configuración de CORS válida. Basándonos en la configuración que proporcionaste, podrías tener algo similar a esto:
    json
    [
        {
            "AllowedHeaders": ["*"],
            "AllowedMethods": ["GET", "PUT", "POST", "DELETE"],
            "AllowedOrigins": [
                "https://www.dev.seedlix.com.br",
                "https://dev.seedlix.com.br",
                "http://www.dev.seedlix.com.br",
                "http://dev.seedlix.com.br",
                "https://www.seedlix.com.br",
                "https://seedlix.com.br",
                "http://www.seedlix.com.br",
                "http://seedlix.com.br",
                "http://localhost:3000",
                "http://52.95.163.31"
            ],
            "ExposeHeaders": []
        }
    ]
    

    En tu configuración, asegúrate de poner las URLs sin "/" al final, ya que podría causar problemas de coincidencia con los orígenes permitidos.

    • Guarda los cambios en la configuración de CORS.
    • Verifica que los archivos ahora pueden ser incorporados en tus dominios sin problemas.

    Espero que estos pasos te ayuden a corregir tu configuración de CORS en AWS S3. Si persiste el problema, revisa detenidamente la configuración de permisos y políticas de acceso en tu bucket.

    Respondida el Dec 19, 2020 a las 02:55 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Configuración de CORS en AWS S3

    1. Deshabilitar el acceso público

    Asegúrate de que "Block Public Access" esté habilitado para el bucket de S3 que contiene los archivos que deseas compartir. Para ello, ve a la consola de AWS S3, selecciona el bucket y haz clic en la pestaña "Permissions" (Permisos). Activa la opción "Block Public Access" y guarda los cambios.

    2. Crear una política CORS

    Ve a la consola de AWS S3 y selecciona el bucket que contiene los archivos que deseas compartir. Haz clic en la pestaña "Management" (Gestión). En la sección "Cross-Origin Resource Sharing (CORS)", haz clic en "Create CORS Configuration" (Crear configuración CORS). Pega la siguiente política CORS en el cuadro de texto:

    
    [
        {
            "AllowedHeaders": [
                ""
            ],
            "AllowedMethods": [
                "GET",
                "PUT",
                "POST",
                "DELETE"
            ],
            "AllowedOrigins": [
                "https://www.dev.seedlix.com.br/",
                "https://dev.seedlix.com.br/",
                "http://www.dev.seedlix.com.br/",
                "http://dev.seedlix.com.br/",
                "https://www.seedlix.com.br/",
                "https://seedlix.com.br/",
                "http://www.seedlix.com.br/",
                "http://seedlix.com.br/",
                "http://localhost:3000/",
                "52.95.163.31:443"
            ],
            "ExposeHeaders": [
                ""
            ]
        }
    ]
    

    Sustituye "YOURBUCKETNAME" por el nombre de tu bucket de S3. Guarda los cambios.

    Prueba la configuración CORS

    Utiliza una herramienta como curl o Postman para enviar una solicitud de origen cruzado a tu bucket de S3. Asegúrate de que incluyes las cabeceras "Origin" y "Access-Control-Request-Method" en tu solicitud. Si la solicitud se realiza correctamente, recibirás una respuesta con el código de estado "200 OK" y las cabeceras "Access-Control-Allow-Origin" y "Access-Control-Allow-Methods".

    Notas:

    Asegúrate de que el origen de la solicitud (el sitio web o la aplicación que intenta acceder a los archivos) esté incluido en la lista "AllowedOrigins" de la política CORS. La política CORS debe estar asociada al bucket de S3 que contiene los archivos que deseas compartir. * Si todavía tienes problemas para incorporar tus imágenes, vuelve a comprobar la configuración CORS y asegúrate de que la política se aplica al bucket correcto.

    Respondida el Dec 19, 2020 a las 03:05 - por Gemini

    Votos positivos: 0 | Votos negativos: 0