URL prefirmato Amazon S3 con versione 3 AWS SDK for PHP - AWS SDK for PHP

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

URL prefirmato Amazon S3 con versione 3 AWS SDK for PHP

È possibile autenticare alcuni tipi di richieste passando le informazioni necessarie come parametri di una stringa di query invece di utilizzare l'intestazione Autorizzazione HTTP. Ciò è utile per consentire l'accesso diretto tramite browser di terze parti ai dati privati di Amazon S3, senza inoltrare la richiesta tramite proxy. L'idea è costruire di una richiesta "prefirmata" e codificarla come URL recuperabile da parte del browser di un utente finale. È inoltre possibile limitare una richiesta prefirmata specificando un periodo di scadenza.

Gli esempi seguenti mostrano come:

Tutto il codice di esempio per il AWS SDK for PHP è disponibile qui. GitHub

Credenziali

Prima di eseguire il codice di esempio, configurate AWS le vostre credenziali, come descritto inCredenziali. Quindi importate il fileAWS SDK for PHP, come descritto inUtilizzo di base.

Creazione di una richiesta prefirmata

Puoi ottenere l'URL prefirmato di un oggetto Amazon S3 utilizzando Aws\S3\S3Client::createPresignedRequest() il metodo. Questo metodo accetta un oggetto Aws\CommandInterface e un timestamp scaduto e restituisce un oggetto Psr\Http\Message\RequestInterface prefirmato. È possibile recuperare l'URL prefirmato dell'oggetto utilizzando il metodo getUri() della richiesta.

Lo scenario più comune è creare un URL prefirmato per OTTENERE un oggetto.

Importazioni

require 'vendor/autoload.php';

Codice di esempio

$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');

Creazione di un URL prefirmato

Puoi creare URL prefirmati per qualsiasi operazione Amazon S3 utilizzando getCommand il metodo per creare un oggetto comando e quindi chiamando createPresignedRequest() il metodo con il comando. Al momento di inviare la richiesta, assicurati di utilizzare lo stesso metodo e le stesse intestazioni della richiesta restituita.

Codice di esempio

//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();

Ottenere l'URL di un oggetto

Se è necessario solo l'URL pubblico di un oggetto archiviato in un bucket Amazon S3, è possibile utilizzare il metodo. Aws\S3\S3Client::getObjectUrl() Questo metodo restituisce un URL non firmato per il bucket e la chiave.

Codice di esempio

//Getting the URL to an object $url = $s3Client->getObjectUrl('my-bucket', 'my-key');
Importante

L'URL restituito da questo metodo non assicura che il bucket o la chiave esistano, né che l'oggetto consenta l'accesso non autenticato.