2015-12-25 5 views
1

Comment accorder l'accès à votre seau amazon s3 depuis votre machine locale? Je continue à obtenir cette erreur:Rails localhost se connectant au seau amazon s3

Expected(200) <=> Actual(403 Forbidden) excon.error.response :body => "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Error><Code>AllAccessDisabled</Code><Message>All access to this object has been disabled</Message> 

Dans la console IAM je me suis donné des politiques AmazonS3FullAccess et AdministratorAccess.

Dans la console S3 sous la rubrique « Autorisations » J'ai cette configuration CORS:

<?xml version="1.0" encoding="UTF-8"?> 
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> 
    <CORSRule> 
     <AllowedOrigin>http://localhost:3000</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
    <CORSRule> 
     <AllowedOrigin>https://localhost:3000</AllowedOrigin> 
     <AllowedMethod>GET</AllowedMethod> 
     <AllowedMethod>POST</AllowedMethod> 
     <AllowedMethod>PUT</AllowedMethod> 
     <AllowedHeader>*</AllowedHeader> 
    </CORSRule> 
</CORSConfiguration> 

Cependant, dans la console S3, lorsque je clique sur "Ajouter politique seau l'éditeur de stratégie est vide. Les deux règles créées dans la console IAM ne doivent-elles pas apparaître ici? Ou sont-ils des choses différentes?

Quelle politique dois-je ajouter dans l'éditeur de règles? J'ai essayé d'en créer un mais j'ai beaucoup d'erreurs.

+0

Vous vous connectez via HTTP ou par XML? –

+0

Il y a plusieurs problèmes ici ... CORS config n'a * rien * à voir avec les contrôles d'accès, les politiques IAM n'apparaissent pas dans la politique du compartiment car ce ne sont pas des stratégies de compartiment. Les stratégies IAM et les stratégies de compartiment fonctionnent ensemble - si l'une ou l'autre ou les deux accordent, l'autorisation est accordée; Si l'un ou les deux refusent, l'autorisation est refusée. Enfin, 'Tout accès à cet objet a été désactivé 'implique que vous accédez au mauvais compartiment - cette erreur semble apparaître lorsque vous accédez à un compartiment appartenant à un compte est annulé. –

Répondre

0

Le problème est probablement lié à votre stratégie de compartiment. Tant que votre localhost comme la clé et SECRET cela ne devrait pas importer.

Essayez d'ajouter cette politique à l'utilisateur IAM vous connectez avec:

{ 
    "Version": "2015-12-26", 
    "Statement": [ 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:ListBucket" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::BUCKET_NAME" 
      ] 
     }, 
     { 
      "Effect": "Allow", 
      "Action": [ 
       "s3:*" 
      ], 
      "Resource": [ 
       "arn:aws:s3:::BUCKET_NAME/*" 
      ] 
     } 
    ] 
} 

Que cela ne permet à l'utilisateur de recherche qui le nom du godet (partie supérieure) et d'interagir ensuite avec tous les dossiers arn:aws:s3:::BUCKET_NAME/*.

Si vous souhaitez restreindre cet utilisateur à des sous-dossiers, modifiez simplement cette partie ci-dessus. Faites-moi savoir si cela fonctionne.

+0

Merci, j'ai ajouté la politique à mon utilisateur IAM mais j'ai toujours la même erreur. Juste pour être clair, je n'ai actuellement aucune politique associée au seau. Devrais-je en ajouter un? Aussi, que voulez-vous dire par le localhost comme la clé et le secret? – Bazley

+0

Il a soudainement commencé à travailler, et je ne sais pas trop comment. Je ne suis pas sûr, mais je pense que c'est peut-être quand j'ai fermé et rouvert une fenêtre de terminal. Si un terminal ne peut pas "voir" la variable d'environnement s3_bucket, cela signifie-t-il qu'il n'est pas envoyé dans la requête? – Bazley

+0

difficile de répondre sans connaître votre environnement de dev, cette politique aurait dû débarrasser votre erreur 403 si – blnc