URL pré-signée Amazon S3 avec AWS SDK for PHP version 3 - AWS SDK for PHP

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

URL pré-signée Amazon S3 avec AWS SDK for PHP version 3

Vous pouvez authentifier certains types de demandes en transférant les informations requises en tant que paramètres de la chaîne de requête au lieu d'utiliser l'en-tête HTTP Authorization. Cela est utile pour permettre à un navigateur tiers d'accéder directement à vos données privées Amazon S3 par un navigateur tiers, sans passer par proxy à la demande. L'idée est de créer une demande « pré-signée » et de l'encoder comme une URL récupérable par le navigateur d'un utilisateur final. De plus, vous pouvez limiter une demande pré-signée en spécifiant un délai d'expiration.

Les exemples suivants montrent comment :

Tous les exemples de code pour le AWS SDK for PHP sont disponibles ici GitHub.

Informations d’identification

Avant d'exécuter l'exemple de code, configurez vos AWS informations d'identification, comme décrit dansInformations d'identification. Importez ensuite le AWS SDK for PHP, comme décrit dansUtilisation de base.

Création d'une demande pré-signée

Vous pouvez obtenir l'URL pré-signée d'un objet Amazon S3 à l'aide de Aws\S3\S3Client::createPresignedRequest() cette méthode. Cette méthode accepte un objet Aws\CommandInterface et un horodatage expiré, et renvoie un objet Psr\Http\Message\RequestInterface pré-signé. Vous pouvez récupérer l'URL pré-signée de l'objet à l'aide de la méthode getUri() de la demande.

Le scénario le plus courant consiste à créer une URL pré-signée pour OBTENIR un objet.

Importations

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

Exemple de code

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

Création d'une URL pré-signée

Vous pouvez créer des URL pré-signées pour n'importe quelle opération Amazon S3 en utilisant la getCommand méthode de création d'un objet de commande, puis en appelant la createPresignedRequest() méthode avec la commande. Lors de l'envoi final de la demande, veillez à utiliser la même méthode et les mêmes en-têtes que ceux de la demande renvoyée.

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

Obtenir l'URL d'un objet

Si vous n'avez besoin que de l'URL publique d'un objet stocké dans un compartiment Amazon S3, vous pouvez utiliser Aws\S3\S3Client::getObjectUrl() cette méthode. Cette méthode renvoie une URL non signée au compartiment et à la clé fournis.

Exemple de code

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

L'URL renvoyée par cette méthode n'est pas validée pour garantir l'existence du compartiment ou de la clé, et cette méthode ne garantit pas non plus que l'objet autorise un accès non authentifié.