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.
Amazon S3 pré-signé URL avec la AWS SDK for PHP version 3
Vous pouvez authentifier certains types de demandes en transmettant les informations requises sous forme de paramètres de chaîne de requête au lieu d'utiliser l'en-tête Authorization. HTTP Cela est utile pour permettre à un navigateur tiers d'accéder directement à vos données privées Amazon S3 par un navigateur tiers, sans transmettre la demande par proxy. L'idée est de créer une demande « pré-signée » et de l'encoder afin que le navigateur de URL l'utilisateur final puisse la récupérer. De plus, vous pouvez limiter une demande pré-signée en spécifiant un délai d'expiration.
Les exemples suivants montrent comment :
-
Créez un pré-signé URL pour obtenir un objet S3 à l'aide createPresignedRequest.
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 le pré-signé URL sur un objet Amazon S3 en utilisant 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 le pré-signé URL de l'objet en utilisant la getUri()
méthode de la demande.
Le scénario le plus courant consiste URL à créer GET un objet pré-signé.
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'un pré-signé URL
Vous pouvez créer une version pré-signée URLs 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(); }
Accéder URL à un objet
Si vous avez uniquement besoin du public URL pour accéder à un objet stocké dans un compartiment Amazon S3, vous pouvez utiliser Aws\S3\S3Client::getObjectUrl()
cette méthode. Cette méthode renvoie une valeur non signée URL au bucket et à la clé donnés.
Exemple de code
$preSignedUrl = $s3Service->preSignedUrl($command, $expiration);
Important
Le résultat URL renvoyé par cette méthode n'est pas validé 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é.