"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Configuración de AWS SDK para PHP con S3

Configuración de AWS SDK para PHP con S3

Publicado el 2024-11-08
Navegar:464

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.

Configuring AWS SDK for PHP with S3

Requisitos previos

Antes de comenzar, asegúrese de tener lo siguiente:

  • Una cuenta de AWS
  • ID de clave de acceso de AWS y clave de acceso secreta
  • PHP 5.6 o superior
  • Compositor instalado

Instalación

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.

Configuración

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.

Archivo de configuración

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.

Variables de entorno

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.

Uso

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.

Subiendo un archivo

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.

Descargando un archivo

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.

Listado de objetos

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.

Mejores prácticas: AWS SDK PHP S3

A continuación se detallan algunas prácticas recomendadas que se deben tener en cuenta al utilizar AWS SDK para PHP con S3:

  • Utilice funciones y políticas de IAM para administrar el acceso a sus recursos de S3.
  • Utilice el control de versiones para conservar varias versiones de sus objetos y protegerlos contra la eliminación accidental.
  • Utilice políticas de ciclo de vida para administrar automáticamente el almacenamiento y la retención de sus objetos.
  • Utiliza la aceleración de transferencia para mejorar el rendimiento de tus cargas y descargas.
  • Utilice cifrado del lado del servidor para proteger sus datos en reposo.
  • Utilice notificaciones de eventos para activar acciones basadas en cambios en sus objetos de S3.

Claro, aquí hay algunos consejos adicionales para usar AWS SDK para PHP con S3 en Laravel.

Usando el SDK de AWS para PHP con 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:

  • Instale el paquete AWS SDK para PHP a través de Composer:
composer require aws/aws-sdk-php
  • Configure sus credenciales de AWS en su archivo .env:
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_DEFAULT_REGION=your_region
  • Utilice la fachada de Almacenamiento para interactuar con S3:
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;
}
  • Utilice el adaptador Flysystem de Laravel para personalizar el comportamiento de la fachada de almacenamiento:
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')
            );
        });
    }
}
  • Utilice el sistema de colas de Laravel para realizar operaciones de S3 de forma asincrónica:
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));
    }
}

Mejores prácticas: AWS SDK PHP Laravel

Estas son algunas de las mejores prácticas a tener en cuenta al utilizar AWS SDK para PHP con S3 en Laravel:

  • Utilice el soporte integrado de Laravel para AWS SDK para PHP para simplificar su código y reducir la cantidad de código repetitivo que necesita escribir.
  • Utilice el sistema de colas de Laravel para realizar operaciones S3 de forma asincrónica, lo que puede mejorar el rendimiento y la escalabilidad de sus aplicaciones Laravel.
  • Utilice el adaptador Flysystem de Laravel para personalizar el comportamiento de la fachada de almacenamiento e integrar S3 con otras funciones de Laravel, como el sistema de caché de Laravel.
  • Utilice el sistema de colas de Laravel para realizar operaciones S3 de forma asincrónica, lo que puede mejorar el rendimiento y la escalabilidad de sus aplicaciones Laravel.
  • Utilice las funciones de cifrado de Laravel para cifrar datos confidenciales antes de almacenarlos en S3.
  • Utilice las funciones de registro de Laravel para registrar cualquier error o excepción que se produzca al utilizar AWS SDK para PHP con S3.

Conclusión

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.

Declaración de liberación Este artículo se reproduce en: https://dev.to/fernandomullerjr/configuring-aws-sdk-for-php-with-s3-257f?1 Si hay alguna infracción, comuníquese con [email protected] para eliminarlo.
Último tutorial Más>

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