Amazon S3 Autorisations de Fichier, Accès Refusé lors de la copie à partir d'un autre compte
J'ai un ensemble de fichiers vidéo qui ont été copiés à partir d'une AWS Seau à partir d'un autre compte à mon compte dans mon seau.
Je suis confronté à un problème maintenant avec tous les fichiers où je reçois des erreurs d'Accès Refusé lorsque je tente de faire tous les fichiers publics.
Plus précisément, je me connecter à mon compte AWS, aller dans S3, forer vers le bas à travers les structures de dossiers pour localiser l'une des vidéos les fichiers.
Quand je regarde ce specificfile, l'onglet permissions sur les fichiers n'affiche pas toutes les autorisations affectées à n'importe qui. Pas d'utilisateurs, de groupes, ou d'un système d'autorisations ont été attribuées.
Au bas de l'onglet Autorisations, je vois une petite case qui dit "Erreur: Accès Refusé". Je ne peux pas changer quoi que ce soit sur le fichier. Je ne peux pas ajouter des méta-données. Je ne peux pas ajouter un utilisateur dans le fichier. Je ne peux pas faire dans le fichier Public.
Est-il un moyen que je peux prendre le contrôle de ces fichiers afin que je puisse les rendre publiques? Il y a plus de 15 000 fichiers /autour de 60GBs de fichiers. J'aimerais éviter de télécharger et reuploading tous les fichiers.
Avec de l'aide et les suggestions des gens ici, j'ai essayé ce qui suit. J'ai fait un nouveau dossier dans mon seau appelé "médias".
J'ai essayé cette commande:
aws s3 cp s3://mybucket/2014/09/17/thumb.jpg s3://mybucket/media --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers full=emailaddress=my_aws_account_email_address
Je reçois une erreur fatale 403 lors de l'appel de la HeadObject opération: Interdit.
- Utiliser AWS CLI de le faire en ligne de commande : docs.aws.amazon.com/cli/latest/userguide/using-s3-commands.html
- je vois l' --consentir des options, mais ce que je ne suis pas sûr de savoir est ce que la commande à utiliser? Je ne veux pas de copier, de supprimer ou de le synchroniser. Je veux juste appliquer les autorisations pour le fichier. Je pense que la synchronisation serait ce que je veux faire depuis que le son ne marche pas comme il l'aurait fait déplacer le fichier ou de le supprimer.
- pourquoi pensez-vous que l'OP auront des autorisations pour le faire à partir de la CLI? Vous devez configurer l'interface CLI avec les informations d'identification AWS. Si vous utilisez les mêmes identifiants que ceux que vous utilisez pour vous connecter à la console AWS, les chances sont que vous allez courir dans les mêmes problèmes d'autorisation.
- J'ai remarqué que le "propriétaire" du fichier est toujours sur le compte que j'ai eu ces fichiers. Comment puis-je le remplacer? Est-il possible?
- Vous êtes de droite. J'en mettant davantage l'accent sur les 60 go de fichiers pour lequel il a voulu changer les permissions mais je voulais éviter de re-télécharger. Il y a deux questions alors. L'un avec la permission et pour d'autres à l'aide de la CLI va lui éviter de passer si tous les fichiers manuellement.
Vous devez vous connecter pour publier un commentaire.
Une très intéressante énigme! Heureusement, il existe une solution.
Tout d'abord, un rappel:
J'ai réussi à reproduire ce et peut confirmer que les utilisateurs en Compte B ne peut pas accéder au fichier, pas même la racine de l'utilisateur dans le Compte B!
Heureusement, les choses peuvent être fixes. Le
aws s3 cp
commande dans le AWS Interface de Ligne de Commande (CLI) pouvez mettre à jour les autorisations sur un fichier lorsqu'il est copié sur le même nom. Cependant, à l'origine de cela, vous devez également mettre à jour quelque chose d'autre, sinon vous obtenez cette erreur:Par conséquent, les autorisations peuvent être mis à jour avec cette commande:
--acl bucket-owner-full-control
accorde l'autorisation de Compte B de sorte que vous serez en mesure d'utiliser les objets comme normalRésultat final: Un seau que vous pouvez utiliser!
--metadata
n'est pas nécessaire à la solution de travail.--acl bucket-owner-full-control
est suffisant.--metadata
partie est nécessaire si l'intention est de modifier les autorisations sur un objet qui existe déjà, sinon lecp
commande échoue parce que rien n'est "changé". Si un nouvel objet est copié (ou d'être copié à partir d'un emplacement différent),--metadata
ne serait pas nécessaire.Au cas où quelqu'un essaie de faire la même, mais l'utilisation d'Hadoop/Spark emploi au lieu de AWS CLI.
les objets de Seau B. (mentionné dans la réponse ci-dessus)
Étape 2: Définir les fs.s3a.acl.option de configuration par défaut à l'aide de Configuration Hadoop. Ce qui peut être défini dans le fichier conf ou dans le programme:
Fichier Conf:
<property>
<name>fs.s3a.acl.default</name>
<description>Set a canned ACL for newly created and copied objects. Value may be Private,
PublicRead, PublicReadWrite, AuthenticatedRead, LogDeliveryWrite, BucketOwnerRead,
or BucketOwnerFullControl.</description>
<value>$chooseOneFromDescription</value>
</property>
Programme:
spark.sparkContext.hadoopConfiguration.set("fs.s3a.acl.default", "BucketOwnerFullControl")
Pour définir correctement les autorisations appropriées pour les nouveaux fichiers ajoutés, ajouter ce seau politique:
Et de définir des ACL pour les fichiers nouvellement créés dans le code. Exemple Python:
source: https://medium.com/artificial-industry/how-to-download-files-that-others-put-in-your-aws-s3-bucket-2269e20ed041 (avertissement: écrit par moi)
Je crains que vous ne serez pas en mesure de transférer la propriété que vous le souhaitez. Voici ce que vous avez fait:
Ancien compte copies d'objets dans un nouveau compte.
La "bonne" façon de faire (en supposant que vous avez voulu assumer la propriété sur le nouveau compte) serait:
Nouveau compte copies des objets à partir de l'ancien compte.
Voir la petite mais importante différence? S3 docs genre de l'expliquer.
Je pense que vous pourriez sortir avec elle sans avoir besoin de télécharger l'ensemble de la chose par une simple copie de tous les fichiers dans le même seau, puis de supprimer les anciens fichiers. Assurez-vous que vous pouvez modifier les autorisations après avoir fait la copie. Cela devrait vous faire économiser de l'argent, que vous n'aurez pas à payer pour les frais de transfert de données de téléchargement de tout.
en mettant