web-dev-qa-db-fra.com

URL pré-signée AWS S3 via CLI

Existe-t-il un moyen de créer une URL pré-signée pour les objets dans le compartiment S3 à l'aide de l'AWS CLI?

Je sais que cela pourrait être fait avec SDK, mais est-ce possible avec CLI?

J'ai trouvé ceci sur l'un des documents AWS, mais je ne peux pas exécuter la commande: 

s3cmd signurl s3://BUCKET/OBJECT <expiry_Epoch|+expiry_offset>

De l'aide?

15
Shabbir Bata

Avez-vous essayé aws s3 presign ?

Générez une URL pré-signée pour un objet Amazon S3. Cela permet à n'importe qui qui reçoit l'URL pré-signée pour récupérer l'objet S3 avec un HTTP Demande GET. Pour les demandes sigv4, la région doit être configurée explicitement.

Cela générera une URL qui expirera dans 3600 secondes (par défaut)

aws s3 presign s3://mybucket/myobject

Cela générera une URL qui expirera dans 300 secondes

aws s3 presign s3://mybucket/myobject  --expires-in 300

Sortie

https://mybucket.s3.amazonaws.com/myobject?AWSAccessKeyId=AKIAJXXXXXXXXXXXXXXX&Expires=1503602631&Signature=ibOGfAovnhIF13DALdAgsdtg2s%3D
34
helloV

Les caractères génériques sont maintenant supportés.

Par exemple. aws s3 presign s3://mybucket/*

2
Gerald B

@Michael et @Shabbir,

Oui, aws s3 presign n'accepte pas les caractères génériques /, --include, --exclude et --recursive'. awslsdoes not accept- 1; it behaves asls -lporls -lph`.

une boucle fonctionne:

for file in $(aws s3 ls s3://mybucket --profile myprofile \
--endpoint-url <my-endpoint> | awk '{print $NF}'); do
    aws s3 presign --expires-in 300 "s3://mybucket/$file" |
    --profile my-profile --endpoint-url <my-endpoint>
done
1
Monte Hayward

Donc, la commande pour l'URL pré-signée est:

aws s3 presign s3://bucket-address/  --expires-in 300

Mais la mise en garde est; nous pouvons avoir des URL pré-signées qui fonctionnent pour un niveau de fichier/objet individuel et non au niveau du répertoire.

Heureux d'être corrigé si mal. 

1
Shabbir Bata