Trabajo con S3 y almacenamiento en la nube en PHP: biblioteca AWS SDK para PHP

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Trabajo con S3 y almacenamiento en la nube en PHP: AWS SDK para PHP



Las aplicaciones web modernas utilizan cada vez más el almacenamiento en la nube para guardar archivos, imágenes, copias de seguridad y otro contenido. Amazon S3 (Simple Storage Service) es uno de los servicios de almacenamiento de objetos más populares, que proporciona un almacenamiento escalable, seguro y de alto rendimiento. En este artículo, veremos cómo trabajar con S3 y el almacenamiento en la nube en PHP utilizando el AWS SDK oficial para PHP.



¿Qué es AWS SDK para PHP?



AWS SDK para PHP es la biblioteca oficial de Amazon que permite interactuar con los servicios de AWS, incluido S3, desde aplicaciones PHP. Proporciona una interfaz orientada a objetos conveniente, gestión automática de firmas de solicitudes, manejo de errores y soporte para todas las versiones modernas de PHP (7.2+).



Instalación de AWS SDK



La instalación se realiza a través de Composer. Ejecute el comando en la raíz de su proyecto:



composer require aws/aws-sdk-php


Después de la instalación, incluya la carga automática de Composer en su archivo PHP:



require 'vendor/autoload.php';


Configuración de la conexión a S3



Para trabajar con S3, necesitará un Access Key ID y un Secret Access Key, que puede obtener en la consola de AWS IAM. También debe especificar la región de su bucket (por ejemplo, us-east-1 o eu-central-1).



Ejemplo de configuración básica del cliente S3:



use Aws\\S3\\S3Client;

$s3Client = new S3Client([ 'version' => 'latest', 'region' => 'us-east-1', 'credentials' => [ 'key' => 'TU_ACCESS_KEY', 'secret' => 'TU_SECRET_KEY', ],]);


Para producción, se recomienda usar variables de entorno o archivos de configuración de AWS para no almacenar las claves en el código:



putenv('AWS_ACCESS_KEY_ID=TU_ACCESS_KEY');putenv('AWS_SECRET_ACCESS_KEY=TU_SECRET_KEY');putenv('AWS_DEFAULT_REGION=us-east-1');


Operaciones principales con S3 en PHP



1. Creación de un bucket



Un bucket es un contenedor para sus objetos (archivos). El nombre del bucket debe ser globalmente único:



try {    $result = $s3Client->createBucket([        'Bucket' => 'my-unique-bucket-name',    ]);    echo "Bucket creado: " . $result['Location'];} catch (Aws\\Exception\\AwsException $e) {    echo "Error: " . $e->getMessage();}


2. Carga de archivo (PutObject)



Carga de un archivo desde el sistema de archivos local a S3:



try {    $result = $s3Client->putObject([        'Bucket' => 'my-unique-bucket-name',        'Key'    => 'images/photo.jpg',         // ruta al objeto en el bucket        'SourceFile' => '/local/path/to/photo.jpg', // archivo local        'ACL'    => 'public-read',               // permisos de acceso    ]);    echo "Archivo cargado. URL: " . $result['ObjectURL'];} catch (Aws\\Exception\\AwsException $e) {    echo "Error de carga: " . $e->getMessage();}


También puede cargar datos directamente desde una cadena usando el parámetro Body:



$result = $s3Client->putObject([    'Bucket' => 'my-unique-bucket-name',    'Key'    => 'data.txt',    'Body'   => 'Contenido del archivo',]);


3. Descarga de archivo (GetObject)



Puede descargar un archivo de S3 a un archivo o a una variable:



// A un archivo$result = $s3Client->getObject([    'Bucket' => 'my-unique-bucket-name',    'Key'    => 'images/photo.jpg',    'SaveAs' => '/local/path/to/downloaded_photo.jpg',]);

// A una variable$result = $s3Client->getObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'data.txt',]);$content = $result['Body']->getContents();echo $content;


4. Eliminación de archivo (DeleteObject)



try {    $                    

Recommendations