Amazon S3 URL mit AWS SDK for PHP Version 3 vorsigniert - 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.

Amazon S3 URL mit AWS SDK for PHP Version 3 vorsigniert

Sie können bestimmte Arten von Anfragen authentifizieren, indem Sie die erforderlichen Informationen als Query-String-Parameter übergeben, anstatt den Authorization-Header zu verwenden. HTTP Dies ist nützlich, um den direkten Browserzugriff von Drittanbietern auf Ihre privaten Amazon S3 S3-Daten zu ermöglichen, ohne die Anfrage weiterzuleiten. Die Idee ist, eine „vorsignierte“ Anfrage zu erstellen und sie so zu codierenURL, dass der Browser eines Endbenutzers sie abrufen 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 Datei, mit der Sie ein URL S3-Objekt abrufen können. createPresignedRequest

Der gesamte Beispielcode für AWS SDK for PHP ist hier verfügbar 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.

Eine vorab signierte Anfrage erstellen

Mithilfe der Aws\S3\S3Client::createPresignedRequest() Methode können Sie das vorsignierte Objekt URL für ein Amazon S3 S3-Objekt 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 Vorsignierung URL des Objekts mithilfe der getUri() Methode der Anfrage abrufen.

Das gängigste Szenario ist die Erstellung eines URL vorsignierten GET Objekts.

Importe

use Aws\Exception\AwsException; use AwsUtilities\PrintableLineBreak; use AwsUtilities\TestableReadline; use DateTime; require 'vendor/autoload.php';

Beispiel-Code

$command = $s3Service->getClient()->getCommand('GetObject', [ 'Bucket' => $bucket, 'Key' => $key, ]);

Erstellen eines vorsignierten URL

Sie können URLs für jeden Amazon S3 S3-Vorgang eine Vorsignierung erstellen, indem Sie die getCommand Methode zum Erstellen eines Befehlsobjekts verwenden und dann die createPresignedRequest() Methode mit dem Befehl aufrufen. 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

try { $preSignedUrl = $s3Service->preSignedUrl($command, $expiration); echo "Your preSignedUrl is \n$preSignedUrl\nand will be good for the next 20 minutes.\n"; echo $linebreak; echo "Thanks for trying the Amazon S3 presigned URL demo.\n"; } catch (AwsException $exception) { echo $linebreak; echo "Something went wrong: $exception"; die(); }

Zu einem URL Objekt gelangen

Wenn Sie nur die Öffentlichkeit für ein Objekt benötigenURL, das in einem Amazon S3 S3-Bucket gespeichert ist, können Sie die Aws\S3\S3Client::getObjectUrl() Methode verwenden. Diese Methode gibt ein unsigniertes Objekt URL an den angegebenen Bucket und Schlüssel zurück.

Beispiel-Code

$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
Wichtig

Das von dieser Methode URL zurückgegebene Objekt wird nicht validiert, um sicherzustellen, dass der Bucket oder der Schlüssel existiert, und diese Methode stellt auch nicht sicher, dass das Objekt einen nicht authentifizierten Zugriff ermöglicht.