Dans la console AWS S3, vous pouvez accorder une autorisation aux fichiers pour «Tout utilisateur AWS authentifié» et donner des autorisations «Ouvrir / Télécharger».

Quelle est la commande CLI pour faire de même?

Je connais déjà la commande cp (pour le téléchargement):

aws s3 cp filename s3://bucket/folder/filename

Mais, je ne peux pas comprendre la configuration --grants et la documentation n'est pas spécifique avec les valeurs acceptées.

Bonus si vous pouvez fournir le reste des valeurs acceptées pour l'indicateur --grants (par exemple, afficher les autorisations, modifier les autorisations)?

Cela peut-il être fait de manière récursive?

MODIFIER 1 J'ai trouvé ce qui suit, mais cela rend le fichier accessible à TOUS (public). Alors, où est l'URI de mes groupes? Je suppose que ce n'est pas la même chose que l'ARN du groupe.

aws s3 cp file.txt s3://my-bucket/ --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers

Nous pouvons également faire:

aws s3 cp file.txt s3://my-bucket/ --grants full=emailaddress=user@example.com

Cela donnera tous les droits sur le compte associé à cette adresse e-mail.

Toujours nulle part où mettre en miroir "Tout utilisateur AWS authentifié" (je suppose que cela est authentifié dans mon compte).

3
Brooks 23 déc. 2015 à 00:05

2 réponses

Meilleure réponse

Vous devez utiliser le paramètre --acl pour obtenir les autorisations prédéfinies:

aws s3 cp local.txt s3://some-bucket/remote.txt --acl authenticated-read

La documentation de aws s3 cp décrit la syntaxe abrégée est pour la CLI:

--acl (string) Définit l'ACL de l'objet lorsque la commande est exécutée. Si vous utilisez ce paramètre, vous devez avoir le Autorisation "s3: PutObjectAcl" incluse dans la liste des actions pour votre Stratégie IAM. N'accepte que les valeurs de private, public-read, public-read-write, authenticated-read, bucket-owner-read, bucket-owner-full-control et log-delivery-write. Voir ACL en conserve pour les détails

--grants semble autoriser des ACL personnalisées, mais la syntaxe est plus compliquée, comme vous l'avez découvert.

11
James 22 déc. 2015 à 21:38

Consultez ce lien: Utilisation des commandes s3 de haut niveau avec AWS Interface de ligne de commande

Vous voudrez peut-être faire:

aws s3 cp filename s3://bucket/folder/filename --grants read=uri=http://acs.amazonaws.com/groups/global/AllUsers

Pour récursif, utilisez l'option --recursive

Lorsque l'option --recursive est utilisée sur un répertoire / dossier avec cp, mv ou rm, la commande parcourt l'arborescence de répertoires, y compris tous les sous-répertoires. Ces commandes acceptent également les options --exclude, --include et --acl comme le fait la commande sync.

5
helloV 22 déc. 2015 à 21:37