2017-10-13 15 views
0

J'essaie d'utiliser une requête ajax pour obtenir tous les fichiers image dans un sous-dossier de mon compartiment s3.Accès aux fichiers dans le sous-dossier AWS S3

J'ai rendu le sous-dossier public en utilisant le menu déroulant (voir image), mais je reçois toujours une réponse 403 (Forbidden). J'ai également essayé d'ajouter une politique de compartiment pour ce dossier spécifique mais toujours pas de chance.

Y a-t-il quelque chose que je devrais faire en ce qui concerne les permissions que je manque? J'aurais pensé que rendre le sous-dossier public aurait fait l'affaire.

Voici mon code d'appel si cela aide:

var imgUrl = "http://s3.amazonaws.com/[BUCKET NAME]/images/gallery"; 
var loadedImages; 
var imgData = { 
     images: [] 
    } 

$.ajax({ 
    url: imgUrl, 
    success: function getData(data) { 
     $(data).find("a").attr("href", function(i, val) { 
      if (val.match(/\.(jpe?g|png|gif)$/)) { 

       loadedImages = $(this).attr("href"), 
        imgData.images.push($(loadedImages)); 
        console.log(imgData) 
      } 
     }); 
    } 
    }); 

EDIT: Voici ma permission seau dans son état actuel:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
     { 
      "Sid": "AddPerm", 
      "Effect": "Allow", 
      "Principal": "*", 
      "Action": "s3:GetObject", 
      "Resource": "arn:aws:s3:::[BUCKET NAME]/*" 
     }, 
     { 
    "Sid":"PublicReadGetObject", 
     "Effect":"Allow", 
     "Principal": "*", 
     "Action":["s3:GetObject"], 
     "Resource":["arn:aws:s3:::[BUCKET NAME]/images/gallery/*" 
     ] 
    } 
    ] 
} 

S3 subfolder permissions dropdown

+0

vous trouverez peut-être cette page https://brandonwamboldt.ca/understanding-s3-permissions-1662/ intéressante – Vorsprung

+0

connexes: https://stackoverflow.com/questions/41251450/how-to -make-ajax-call-à-aws-s3-bucket-to-get-file-names-from-folder – jarmod

+0

Notez que "make public" s'applique uniquement aux objets existants, pas aux futurs objets. –

Répondre

0

Veuillez Partagez votre politique seau ou si vous devez fournir accès en lecture publique à la mise à jour du buc litique comme ceci:

{ 
    "Version":"2012-10-17", 
    "Statement":[{ 
    "Sid":"PublicReadGetObject", 
     "Effect":"Allow", 
     "Principal": "*", 
     "Action":["s3:GetObject"], 
     "Resource":["arn:aws:s3:::example-bucket/foldername/*" 
     ] 
    } 
    ] 
} 
+0

Ajout de ma politique de compartiment à la question d'origine –