2013-10-17 2 views
6

J'ai essayé télécharger sur s3 et quand je vois les journaux du seau s3 enregistre c'est ce qu'il dit:Accès Refusé téléchargement à s3

mybucket-me [17/Oct/2013:08:18:57 +0000] 120.28.112.39 
arn:aws:sts::778671367984:federated-user/[email protected] BB3AA9C408C0D26F 
REST.POST.BUCKET avatars/dean%2540player.com/4.png "POST/HTTP/1.1" 403 
AccessDenied 231 - 132 - "http://localhost:8080/ajaxupload/test.html" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.17 (KHTML, like Gecko) Chrome/24.0.1312.52 Safari/537.17" - 

Je suis un accès refusé. D'où il pointe, je pense que la seule chose qui me manque est l'ajout de la politique de seau. Alors voilà.

En utilisant mon email, je pourrais me connecter à mon application et télécharger un avatar. Le nom du compartiment où je veux mettre mon avatar est mybucket-me et en ce qu'il a un sous-compartiment nommé avatars.

-mybucket-me 
-avatars 
    [email protected] //dynamic based on who are logged in 
    -myavatar.png //image uploaded 

Comment puis-je ajouter une politique de seau pour que je puisse accorder une telle fédération que je à télécharger dans s3 ou quelle est la déclaration correcte que je vais ajouter ma politique de seau afin qu'il puisse accorder moi une permission de télécharger dans notre seau?

Répondre

3

Vous pouvez joindre la politique suivante au godet:

{ 
    "Version": "2008-10-17", 
    "Id": "Policy1358656005371", 
    "Statement": [ 
     { 
      "Sid": "Stmt1354655992561", 
      "Effect": "Allow", 
      "Principal": { 
       "AWS": [ 
        "arn:aws:sts::778671367984:federated-user/[email protected]"     
       ] 
      }, 
      "Action": [ 
       "s3:List*", 
       "s3:Get*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::my.bucket", 
       "arn:aws:s3:::my.bucket/*" 
      ] 
     } 
    ] 
} 

accorder à l'utilisateur fédéré [email protected] autorisations en lecture seule à « my.bucket ».

Cette politique n'est pas très maintenable car elle nomme cet utilisateur en particulier. Pour autoriser l'accès à certains utilisateurs fédérés uniquement de manière plus évolutive, il est préférable de le faire lorsque vous appelez GetFederationToken. Si vous publiez votre code STS, je peux vous aider à assigner la politique, mais c'est très similaire à ce qui précède.

+0

Salut, désolé pour la réponse tardive. Im en utilisant le téléchargement du navigateur S3, nous avons une API que nous appelons qui nous donnent les informations d'identification. Voici un lien où presque tout le code pertinent est posté. [link] (http://stackoverflow.com/questions/19401936/signaturedoesnotmatch-browser-based-upload-to-s3?noredirect=1#comment28781719_19401936) –

+0

Est-ce que ce sera correct les actions sont seulement "List & Get"? Qu'est-ce que j'essaie de faire est une méthode de téléchargement ou de publication. Aussi votre correcte ce dont j'ai besoin est la manière évolutive, l'utilisateur différent sera télécharger sur le seau. S'il vous plaît aider. –

+0

Vous devez changer les actions à tout ce dont vous avez besoin, juste "s3: *" vous donnera accès à toutes les actions S3. Quelle langue utilisez-vous? Postez le code que vous avez jusqu'à présent – prestomation

1

Pour télécharger au seau S3, vous devez ajouter/Créer IAM/stratégie de groupe, par exemple:

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Action": ["s3:ListBucket"], 
     "Resource": ["arn:aws:s3:::test"] 
    }, 
    { 
     "Effect": "Allow", 
     "Action": [ 
     "s3:PutObject", 
     "s3:GetObject", 
     "s3:DeleteObject" 
     ], 
     "Resource": ["arn:aws:s3:::test/*"] 
    } 
    ] 
} 

arn:aws:s3:::test est votre nom de ressource Amazon (ARN).

Source: Writing IAM Policies: How to Grant Access to an Amazon S3 Bucket

connexes: