Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Vorsignierte Amazon S3-URL mit AWS SDK for PHP Version 3
Einige Anfragetypen können Sie authentifizieren, indem Sie die angeforderten Informationen als Abfragezeichenfolgenparameter übergeben, statt den Authentifizierungs-HTTP-Header zu verwenden. Dies ist nützlich, um direkten Browserzugriff von Drittanbietern auf Ihre privaten Amazon S3-Daten zu ermöglichen, ohne die Anfrage zu leiten. Das Konzept besteht darin, eine „vorab signierte“ Anfrage zu erstellen und sie als URL zu codieren, die der Browser eines Endbenutzers laden kann. Darüber hinaus können Sie eine vorab signierte Anfrage durch Angabe einer Ablaufzeit begrenzen.
In den nachstehenden Beispielen wird Folgendes veranschaulicht:
-
Erstellen Sie eine vorsignierte URL, um ein S3-Objekt mit abzurufencreatePresignedRequest.
Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHub
Anmeldeinformationen
Bevor Sie den Beispielcode ausführen, konfigurieren Sie Ihre AWS Anmeldeinformationen, wie unter beschriebenAnmeldeinformationen. Importieren Sie dann die AWS SDK for PHP, wie unter beschriebenGrundlegende Verwendung.
Erstellen einer vorsignierten Anforderung
Sie können die vorsignierte URL zu einem Amazon S3-Objekt mithilfe der -Aws\S3\S3Client::createPresignedRequest()
Methode abrufen. Diese Methode akzeptiert ein Aws\CommandInterface
-Objekt und einen abgelaufenen Zeitstempel und gibt ein vorzeichenbehaftetes Psr\Http\Message\RequestInterface
-Objekt zurück. Sie können die zuvor signierte URL des Objekts mit der Methode getUri()
der Anfrage abrufen.
Das häufigste Szenario ist das Erstellen einer vorab signierten URL zum Abrufen eines Objekts.
Importe
require 'vendor/autoload.php';
Beispiel-Code
$s3Client = new Aws\S3\S3Client([ 'profile' => 'default', 'region' => 'us-east-2', 'version' => '2006-03-01', ]); $cmd = $s3Client->getCommand('GetObject', [ 'Bucket' => 'my-bucket', 'Key' => 'testKey' ]); $request = $s3Client->createPresignedRequest($cmd, '+20 minutes');
Erstellen einer vorsignierten URL
Sie können vorsignierte URLs für jede Amazon S3-Operation mit der getCommand
Methode zum Erstellen eines Befehlsobjekts und zum Aufrufen der createPresignedRequest()
Methode mit dem Befehl erstellen. Stellen Sie beim endgültigen Senden der Anforderung sicher, dass Sie die gleiche Methode und die gleichen Header wie die zurückgegebene Anforderung verwenden.
Beispiel-Code
//Creating a presigned URL $cmd = $s3Client->getCommand('GetObject', [ 'Bucket' => 'my-bucket', 'Key' => 'testKey' ]); $request = $s3Client->createPresignedRequest($cmd, '+20 minutes'); // Get the actual presigned-url $presignedUrl = (string)$request->getUri();
Abrufen der URL zu einem Objekt
Wenn Sie nur die öffentliche URL zu einem Objekt benötigen, das in einem Amazon S3-Bucket gespeichert ist, können Sie die -Aws\S3\S3Client::getObjectUrl()
Methode verwenden. Diese Methode gibt eine unsignierte URL für den angegebenen Bucket und Schlüssel zurück.
Beispiel-Code
//Getting the URL to an object $url = $s3Client->getObjectUrl('my-bucket', 'my-key');
Wichtig
Die von dieser Methode zurückgegebene URL wird nicht überprüft, um sicherzustellen, dass der Bucket oder Schlüssel vorhanden ist, und diese Methode stellt auch nicht sicher, dass das Objekt nicht authentifizierten Zugriff zulässt.