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.
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:
$ 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%3DDadurch wird eine URL erstellt, die für 3600s(1h) Lesezugriff auf die Datei testfile im genannten Bucket gewährt.
Erstellen einer Pre-Signed-URL mit dem Python SDK
Abschnitt betitelt „Erstellen einer Pre-Signed-URL mit dem Python SDK“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!