Zum Inhalt springen

PreSigned URL

Erstellung einer Pre-Signed-URL mit einem S3-Client

Abschnitt betitelt „Erstellung einer Pre-Signed-URL mit einem S3-Client“

Das folgende Beispiel verwendet S3cmd, um eine Pre-Signed-URL zu erstellen:

Mit dem Befehl signurl können Sie eine URL erstellen, die ein Objekt vorübergehend veröffentlicht.

Terminal-Fenster
s3cmd signurl <bucket-name> <expiry_epoch|+expiry_offset>

Der Wert für expiry_epoch stellt einen Epoch-Zeitstempel für das Ablaufdatum und die Uhrzeit dar. Alternativ können Sie auch ein + gefolgt von der Zeitspanne definieren, für die die URL gültig bleiben soll. Für den Bucket s3://my-example-bucket sieht der Befehl wie folgt aus:

Terminal-Fenster
$ s3cmd signurl s3://my-example-bucket/testfile.txt +3600 http://object.storage.eu01.onstackit.cloud:443/my-example-bucket/testfile.txt?AWSAccessKeyId=KPVIPPUECP9XX40CVKEA&Expires=1638891653&Signature=abI28tb61IZoUmbXV4cu3opc18w%3D

Dadurch wird eine URL erstellt, die für 3600s(1h) Lesezugriff auf die Datei testfile im genannten Bucket gewährt.

Das folgende kleine Beispiel zeigt, wie Sie das AWS S3 Python SDK (Boto3) verwenden, um eine Pre-Signed-URL mit Schreibzugriff (PUT) auf ein bestimmtes Objekt innerhalb eines Buckets zu erstellen:

import boto3 def request\_presigned\_post(): S3\_ENDPOINT = "https://object.storage.eu01.onstackit.cloud" S3\_ACCESS\_KEY = "YOUR\_ACCESS\_KEY" S3\_SECRET\_KEY = "YOUR\_SECRET\_KEY" S3\_BUCKET = "YOUR\_BUCKET" s3key = "YOUR\_FILE" #create s3 client s3client = boto3.client('s3', endpoint\_url=S3\_ENDPOINT, aws\_access\_key\_id=S3\_ACCESS\_KEY, aws\_secret\_access\_key=S3\_SECRET\_KEY, ) #create presigned url presigned\_request = s3client.generate\_presigned\_url( 'put\_object', Params={'Bucket': S3\_BUCKET, 'Key': s3key}, ExpiresIn=3600) print(presigned\_request) def main(): request\_presigned\_post() if \_\_name\_\_ == "\_\_main\_\_": main()

Weitere Informationen finden Sie in der offiziellen Boto3-Dokumentation!