Erstellen Sie vorsignierte URLs in Object Storage
Zuletzt aktualisiert am
Eine vorsignierte URL gewährt temporären Zugriff ohne Anmeldeinformationen auf ein bestimmtes Objekt. Dies ist nützlich, um Dateien mit externen Benutzern zu teilen oder zeitlich begrenzte Uploads zu ermöglichen, ohne Ihre Anmeldeinformationen preiszugeben.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Object Storage aktiviert und Anmeldeinformationen konfiguriert: Object Storage aktivieren
- AWS CLI oder s5cmd installiert und für STACKIT Object Storage konfiguriert
Erstellen Sie mit der CLI eine vorsignierte URL
Abschnitt betitelt „Erstellen Sie mit der CLI eine vorsignierte URL“Verwenden Sie den Befehl presign, um eine vorsignierte URL für ein Objekt zu erstellen. Der Wert von --expires-in wird in Sekunden angegeben:
aws s3 presign s3://my-example-bucket/testfile.txt \ --expires-in 3600 \ --endpoint-url https://object.storage.eu01.onstackit.cloudDadurch wird eine URL erstellt, die für 3600 Sekunden (1 Stunde) Lesezugriff auf testfile.txt gewährt.
Verwenden Sie den Unterbefehl presign, um eine vorsignierte URL für ein Objekt zu erstellen. Der Wert von --expire akzeptiert eine Zeitangabe (z. B. 1h, 30m):
s5cmd --endpoint-url https://object.storage.eu01.onstackit.cloud \ presign --expire 1h \ s3://my-example-bucket/testfile.txtErstellen Sie eine vorsignierte URL mit dem Python SDK
Abschnitt betitelt „Erstellen Sie eine vorsignierte URL mit dem Python SDK“Im folgenden Beispiel wird das AWS SDK for Python (Boto3) verwendet, um eine vorsignierte URL mit Schreibzugriff (PUT) auf ein bestimmtes Objekt 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"
s3client = boto3.client( 's3', endpoint_url=S3_ENDPOINT, aws_access_key_id=S3_ACCESS_KEY, aws_secret_access_key=S3_SECRET_KEY, )
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()Ausführliche Informationen zum Generieren vorsignierter URLs finden Sie in der Boto3-Dokumentation.