Amazon S3 prefirmato URL con la 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à.

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

Puoi autenticare determinati tipi di richieste passando le informazioni richieste come parametri della stringa di query anziché utilizzare l'intestazione Authorization. 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 è quella di creare una richiesta «prefirmata» e codificarla in modo che il browser dell'utente finale URL possa recuperare. È inoltre possibile limitare una richiesta prefirmata specificando un periodo di scadenza.

Gli esempi seguenti mostrano come:

Tutto il codice di esempio per 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 file AWS SDK for PHP, come descritto inUtilizzo di base.

Creazione di una richiesta prefirmata

Puoi ottenere il prefirmato URL su 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 la prefirma URL dell'oggetto utilizzando il getUri() metodo della richiesta.

Lo scenario più comune è la creazione di un prefirmato URL su un oggetto. GET

Importazioni

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

Codice di esempio

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

Creazione di un file prefirmato URL

È possibile creare elementi prefirmati URLs per qualsiasi operazione Amazon S3 utilizzando getCommand il metodo per la creazione di 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

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

Accedere URL a un oggetto

Se hai bisogno solo del pubblico URL di un oggetto archiviato in un bucket Amazon S3, puoi utilizzare il metodo. Aws\S3\S3Client::getObjectUrl() Questo metodo restituisce un valore non firmato URL al bucket e alla chiave specificati.

Codice di esempio

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

Il valore URL restituito da questo metodo non viene convalidato per garantire l'esistenza del bucket o della chiave, né garantisce che l'oggetto consenta l'accesso non autenticato.