Amazon Web Services (AWS) es una poderosa plataforma que ofrece una amplia gama de servicios para desarrolladores y empresas. Entre estos servicios, Amazon Simple Storage Service (S3) es uno de los más populares y utilizados. Para interactuar con S3 mediante programación, puede utilizar AWS SDK para PHP. En este artículo, lo guiaremos a través del proceso de configuración de AWS SDK para PHP con S3.
Antes de comenzar, asegúrese de tener lo siguiente:
Para instalar AWS SDK para PHP, puede utilizar Composer. Ejecute el siguiente comando en su terminal:
composer require aws/aws-sdk-php
Este comando instalará la última versión de AWS SDK para PHP en su proyecto.
Una vez que haya instalado el SDK, deberá configurarlo con su ID de clave de acceso de AWS y su clave de acceso secreta. Puede hacerlo creando un archivo de configuración o estableciendo variables de entorno.
Cree un nuevo archivo llamado config.php en su proyecto y agregue el siguiente código:
'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => 'YOUR_ACCESS_KEY_ID', 'secret' => 'YOUR_SECRET_ACCESS_KEY', ] ]); $s3Client = $sdk->createS3();
Reemplace YOUR_ACCESS_KEY_ID y YOUR_SECRET_ACCESS_KEY con su ID de clave de acceso de AWS y su clave de acceso secreta reales.
Como alternativa, puede configurar el ID de clave de acceso de AWS y la clave de acceso secreta como variables de entorno:
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
Luego, cree el cliente S3 de la siguiente manera:
'us-east-1', 'version' => 'latest', ]); $s3Client = $sdk->createS3();
¿Listo para aprender más sobre AWS y PHP? Consulte nuestros otros artículos sobre configuración de SSO de AWS y cómo solucionar errores de permiso denegado de laravel.
Ahora que ha configurado AWS SDK para PHP con S3, puede comenzar a usarlo para interactuar con sus depósitos de S3. A continuación se muestra un ejemplo de cómo enumerar todos los depósitos de su cuenta:
$buckets = $s3Client->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'] . PHP_EOL; }
Claro, aquí hay algunos ejemplos adicionales y mejores prácticas para usar AWS SDK para PHP con S3.
Para cargar un archivo en un depósito de S3, puede utilizar el método putObject. Aquí tienes un ejemplo:
$bucketName = 'my-bucket'; $keyName = 'my-file.txt'; $filePath = '/path/to/my-file.txt'; $result = $s3Client->putObject([ 'Bucket' => $bucketName, 'Key' => $keyName, 'SourceFile' => $filePath, ]); echo $result['ObjectURL'] . PHP_EOL;
Este código cargará el archivo ubicado en /path/to/my-file.txt en el depósito my-bucket e imprimirá la URL del archivo cargado.
Para descargar un archivo desde un depósito de S3, puede utilizar el método getObject. Aquí tienes un ejemplo:
$bucketName = 'my-bucket'; $keyName = 'my-file.txt'; $filePath = '/path/to/downloaded-file.txt'; $result = $s3Client->getObject([ 'Bucket' => $bucketName, 'Key' => $keyName, 'SaveAs' => $filePath, ]); echo $result['ContentLength'] . ' bytes downloaded.' . PHP_EOL;
Este código descargará el archivo con la clave my-file.txt del depósito my-bucket y lo guardará en /path/to/downloaded-file.txt.
Para enumerar los objetos en un depósito de S3, puede utilizar el método listObjects. Aquí tienes un ejemplo:
$bucketName = 'my-bucket'; $result = $s3Client->listObjects([ 'Bucket' => $bucketName, ]); foreach ($result['Contents'] as $object) { echo $object['Key'] . PHP_EOL; }
Este código enumerará todos los objetos en el depósito my-bucket e imprimirá sus claves.
A continuación se detallan algunas prácticas recomendadas que se deben tener en cuenta al utilizar AWS SDK para PHP con S3:
Claro, aquí hay algunos consejos adicionales para usar AWS SDK para PHP con S3 en Laravel.
Laravel tiene soporte integrado para AWS SDK para PHP, lo que facilita el uso de S3 en sus aplicaciones Laravel. Aquí hay algunos consejos para usar el SDK con Laravel:
composer require aws/aws-sdk-php
AWS_ACCESS_KEY_ID=your_access_key_id AWS_SECRET_ACCESS_KEY=your_secret_access_key AWS_DEFAULT_REGION=your_region
use Illuminate\Support\Facades\Storage; // Upload a file Storage::disk('s3')->put('my-file.txt', file_get_contents('/path/to/my-file.txt')); // Download a file Storage::disk('s3')->download('my-file.txt', '/path/to/downloaded-file.txt'); // List the objects in a bucket $objects = Storage::disk('s3')->listContents('my-bucket'); foreach ($objects as $object) { echo $object['path'] . PHP_EOL; }
use Illuminate\Support\ServiceProvider; use League\Flysystem\AwsS3V3\AwsS3V3Adapter; use Aws\S3\S3Client; class S3ServiceProvider extends ServiceProvider { public function register() { $this->app->singleton('filesystems.disks.s3', function ($app) { return new AwsS3V3Adapter( new S3Client([ 'region' => config('filesystems.disks.s3.region'), 'version' => 'latest', 'credentials' => [ 'key' => config('filesystems.disks.s3.key'), 'secret' => config('filesystems.disks.s3.secret'), ], ]), config('filesystems.disks.s3.bucket') ); }); } }
use Illuminate\Support\Facades\Storage; use Illuminate\Queue\InteractsWithQueue; use Illuminate\Contracts\Queue\ShouldQueue; class UploadFile implements ShouldQueue { use InteractsWithQueue; protected $filePath; public function __construct($filePath) { $this->filePath = $filePath; } public function handle() { Storage::disk('s3')->put('my-file.txt', file_get_contents($this->filePath)); } }
Estas son algunas de las mejores prácticas a tener en cuenta al utilizar AWS SDK para PHP con S3 en Laravel:
En este artículo, cubrimos los conceptos básicos de la configuración de AWS SDK para PHP con S3 y proporcionamos algunos ejemplos adicionales y mejores prácticas para usar el SDK con S3. También proporcionamos algunos consejos adicionales para usar el SDK con S3 en Laravel. Si sigue estas pautas, podrá asegurarse de que sus aplicaciones PHP sean seguras, eficientes y escalables.
¿Quiere obtener más información sobre AWS y PHP? Consulte nuestros otros artículos sobre DevOps Mind.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3