Vorsignierte Amazon S3-URL mit AWS SDK for PHP Version 3 - AWS SDK for PHP

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:

Der gesamte Beispielcode für die AWS SDK for PHP ist hier auf GitHubverfügbar.

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.