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?
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
Platzhalter werden jetzt unterstützt.
Z.B. aws s3 presign s3://mybucket/*
@Michael und @Shabbir,
Ja, aws s3 presign
akzeptiert keine Globbing/Wildcards /, --include
, --exclude
oder --recursive'.
aws
lsdoes not accept
- 1; it behaves as
ls -lpor
ls -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
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.