webentwicklung-frage-antwort-db.com.de

AWS S3 Vorab signierte URL über CLI

Gibt es eine Möglichkeit, mit AWS CLI eine vorsignierte URL für Objekte im S3-Bucket zu erstellen?

Ich weiß, dass dies mit SDK möglich wäre, aber ist es mit CLI möglich?

Ich habe dies in einem der AWS-Dokumente gefunden, kann den Befehl jedoch nicht ausführen: 

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

Irgendeine Hilfe?

15
Shabbir Bata

Hast du versucht aws s3 presign ?

Generieren Sie eine vorsignierte URL für ein Amazon S3-Objekt. Dies erlaubt jedem Wer erhält die vorsignierte URL zum Abrufen des S3-Objekts mit einem HTTP GET-Anfrage. Für Sigv4-Anforderungen muss die Region konfiguriert werden ausdrücklich.

Dadurch wird eine URL generiert, die in 3600 Sekunden abläuft (Standard).

aws s3 presign s3://mybucket/myobject

Dadurch wird eine URL generiert, die in 300 Sekunden abläuft

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

Ausgabe

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

Platzhalter werden jetzt unterstützt.

Z.B. aws s3 presign s3://mybucket/*

2
Gerald B

@Michael und @Shabbir,

Ja, aws s3 presign akzeptiert keine Globbing/Wildcards /, --include, --exclude oder --recursive'. awslsdoes not accept- 1; it behaves asls -lporls -lph`.

eine Schleife funktioniert:

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

Der Befehl für vorsignierte URL lautet also:

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

Aber der Vorbehalt ist; Wir können vorsignierte URLs haben, die für die einzelne Datei-/Objektebene und nicht für die Verzeichnisebene geeignet sind.

Gerne korrigiert zu werden, wenn falsch. 

1
Shabbir Bata