2017-03-28 5 views
0

J'ai lu plusieurs messages comme this one sur la façon de transférer des données avec aws cli d'un seau S3 à l'autre en utilisant des comptes différents, mais je suis toujours incapable de le faire. Je suis sûr que c'est parce que je n'ai pas encore complètement saisi les concepts des paramètres de compte + autorisation dans AWS (par exemple, compte iam vs clé d'accès).S3 à S3 transfert en utilisant différents comptes?

J'ai un vendeur qui m'a donné un utilisateur appelé « Foo » et numéro de compte « 123456789012 » avec 2 touches d'accès pour accéder à leur seau S3 « SourceBucket » dans l'UE-centre-1. J'ai créé un profil sur ma machine avec la clé d'accès fournie par le fournisseur appelée "sourceProfile". J'ai mon S3 appelé "DestinationBucket" dans us-east-1 et j'ai mis la politique de compartiment à la suivante.

{ "Version": "2012-10-17", "Id": "Policy123456789", "Statement": [ { "Sid": "Stmt1487222222222", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:user/Foo" }, "Action": [ "s3:PutObject", "s3:PutObjectAcl", "s3:GetObject", "s3:ListBucket" ], "Resource": [ "arn:aws:s3:::DestinationBucket/", "arn:aws:s3:::DestinationBucket/*" ] } ] }

vient ici la partie bizarre. Je suis en mesure de lister les fichiers et même de télécharger des fichiers à partir du "DestinationBucket" en utilisant les lignes de commande suivantes.

aws s3 ls s3://DestinationBucket --profile sourceProfile aws s3 cp s3://DestinationBucket/test ./ --profile sourceProfile

Mais lorsque je tente de mettre copier quoi que ce soit à la « DestinationBucket » en utilisant le profil, je suis erreur d'accès refusé.

aws s3 cp test s3://DestinationBucket --profile sourceProfile --region us-east-1 upload failed: ./test to s3://DestinationBucket/test An error occurred (AccessDenied) when calling the PutObject operation: Access Denied

Ai-je mis en place la politique de seau en particulier la liste des droit d'action? Comment ls et cp peuvent-ils aller de la destination au travail local mais cp du seau local au seau de destination ne fonctionne pas?

+0

Pouvez-vous changer temporairement l'action à '" s3: * "' pour tester si cela fonctionne? Si c'est le cas, il y a probablement des actions supplémentaires dont la commande 'aws s3 cp' a besoin dans le compartiment de destination. –

+0

Oui, j'ai essayé s3: * et obtenu le même résultat –

+0

Ensuite, il devrait certainement fonctionner! Je suggère de le changer temporairement en un Principal de '*' pour voir si cela fonctionne. Cela aidera à affiner ce qui pourrait être faux. –

Répondre

0

Parce que AWS fait en sorte que parent account holder must do the delegation.

En fait, à côté de l'accès des délégués à cet utilisateur de clé d'accès particulier, vous pouvez choisir de faire une réplication sur le compartiment comme indiqué here.

+0

Je pensais que l'étape 2.3 dans l'article suggérée par @mootmoot était la partie manquante mais je reçois toujours la même erreur (AccessDenied) lors de l'appel de l'opération PutObject: Access Denied'. –

+0

@FooBarbaz: vous devez lire toute la documentation. L'étape 2.3 n'est pas suffisante – mootmoot

+0

J'ai inversé la méthode et cela fonctionne maintenant. Au lieu d'utiliser le compte créé par le fournisseur pour extraire l'objet de son compartiment et mettre l'objet sur mon compartiment, j'utilise mon compte qui est capable de mettre un objet dans mon compartiment. La configuration est la même mais en sens inverse (par exemple, configurez la stratégie de compartiment sur le compartiment du fournisseur qui permet à mon compte d'y accéder). Aucune idée de la raison pour laquelle la méthode d'origine n'a pas fonctionné mais n'a pas le temps d'étudier plus avant. –