Travailler avec S3 et les stockages cloud en PHP : AWS SDK pour PHP
Les applications web modernes utilisent de plus en plus les stockages cloud pour stocker des fichiers, des images, des sauvegardes et d'autres contenus. Amazon S3 (Simple Storage Service) est l'un des services de stockage d'objets les plus populaires, offrant un stockage scalable, sécurisé et haute performance. Dans cet article, nous allons voir comment travailler avec S3 et les stockages cloud en PHP à l'aide du SDK AWS officiel pour PHP.
Qu'est-ce que le SDK AWS pour PHP ?
Le SDK AWS pour PHP est la bibliothèque officielle d'Amazon qui permet d'interagir avec les services AWS, y compris S3, depuis des applications PHP. Il fournit une interface orientée objet pratique, une gestion automatique des signatures de requêtes, la gestion des erreurs et le support de toutes les versions modernes de PHP (7.2+).
Installation du SDK AWS
L'installation se fait via Composer. Exécutez la commande à la racine de votre projet :
composer require aws/aws-sdk-phpAprès l'installation, incluez l'autoloader de Composer dans votre fichier PHP :
require 'vendor/autoload.php';Configuration de la connexion à S3
Pour travailler avec S3, vous aurez besoin d'un Access Key ID et d'un Secret Access Key, que vous pouvez obtenir dans la console AWS IAM. Vous devez également spécifier la région de votre bucket (par exemple, us-east-1 ou eu-central-1).
Exemple de configuration de base du client S3 :
use Aws\\S3\\S3Client;
$s3Client = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1', 'credentials' => [ 'key' => 'VOTRE_ACCESS_KEY', 'secret' => 'VOTRE_SECRET_KEY', ],]);Pour la production, il est recommandé d'utiliser des variables d'environnement ou des fichiers de configuration AWS afin de ne pas stocker les clés dans le code :
putenv('AWS_ACCESS_KEY_ID=VOTRE_ACCESS_KEY');putenv('AWS_SECRET_ACCESS_KEY=VOTRE_SECRET_KEY');putenv('AWS_DEFAULT_REGION=us-east-1');Opérations principales avec S3 en PHP
1. Création d'un bucket
Un bucket est un conteneur pour vos objets (fichiers). Le nom du bucket doit être globalement unique :
try { $result = $s3Client->createBucket([ 'Bucket' => 'my-unique-bucket-name', ]); echo "Bucket créé : " . $result['Location'];} catch (Aws\\Exception\\AwsException $e) { echo "Erreur : " . $e->getMessage();}2. Téléchargement d'un fichier (PutObject)
Téléchargement d'un fichier depuis le système de fichiers local vers S3 :
try { $result = $s3Client->putObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'images/photo.jpg', // chemin de l'objet dans le bucket 'SourceFile' => '/local/path/to/photo.jpg', // fichier local 'ACL' => 'public-read', // droits d'accès ]); echo "Fichier téléchargé. URL : " . $result['ObjectURL'];} catch (Aws\\Exception\\AwsException $e) { echo "Erreur de téléchargement : " . $e->getMessage();}Vous pouvez également télécharger des données directement depuis une chaîne avec le paramètre Body :
$result = $s3Client->putObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'data.txt', 'Body' => 'Contenu du fichier',]);3. Téléchargement d'un fichier (GetObject)
Télécharger un fichier depuis S3 peut se faire dans un fichier ou dans une variable :
// Dans un fichier$result = $s3Client->getObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'images/photo.jpg', 'SaveAs' => '/local/path/to/downloaded_photo.jpg',]);
// Dans une variable$result = $s3Client->getObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'data.txt',]);$content = $result['Body']->getContents();echo $content;4. Suppression d'un fichier (DeleteObject)
try { $ Aussi dans la bibliothèque
Générateur de QR codes en JavaScript (Node.js) avec qrcode et qr-image
Géolocalisation et cartes en C# (.NET) : bibliothèques, exemples et recommandations
Bibliothèque GraphQL pour Go (Golang) — guide complet
Surveillance des applications Kotlin : bibliothèque Ktor Metrics et Micrometer
Travailler avec Markdown en Go (Golang) : bibliothèques, analyse et conversion