Trabalhando com S3 e armazenamento em nuvem em PHP: biblioteca AWS SDK para PHP

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com S3 e armazenamento em nuvem em PHP: AWS SDK para PHP



As aplicações web modernas cada vez mais utilizam armazenamento em nuvem para guardar arquivos, imagens, backups e outros conteúdos. O Amazon S3 (Simple Storage Service) é um dos serviços de armazenamento de objetos mais populares, que oferece armazenamento escalável, seguro e de alto desempenho. Neste artigo, veremos como trabalhar com S3 e armazenamento em nuvem em PHP usando o AWS SDK oficial para PHP.



O que é o AWS SDK para PHP?



O AWS SDK para PHP é uma biblioteca oficial da Amazon que permite interagir com os serviços da AWS, incluindo o S3, a partir de aplicações PHP. Ele fornece uma interface orientada a objetos conveniente, gerenciamento automático de assinaturas de requisições, tratamento de erros e suporte para todas as versões modernas do PHP (7.2+).



Instalação do AWS SDK



A instalação é feita através do Composer. Execute o comando na raiz do seu projeto:



composer require aws/aws-sdk-php


Após a instalação, inclua o autoload do Composer no seu arquivo PHP:



require 'vendor/autoload.php';


Configuração da conexão com o S3



Para trabalhar com o S3, você precisará de uma Access Key ID e uma Secret Access Key, que podem ser obtidas no console do AWS IAM. Também é necessário especificar a região do seu bucket (por exemplo, us-east-1 ou eu-central-1).



Exemplo de configuração básica do cliente S3:



use Aws\\S3\\S3Client;

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


Para produção, é recomendado usar variáveis de ambiente ou arquivos de configuração da AWS para não armazenar as chaves no código:



putenv('AWS_ACCESS_KEY_ID=SUA_ACCESS_KEY');putenv('AWS_SECRET_ACCESS_KEY=SUA_SECRET_KEY');putenv('AWS_DEFAULT_REGION=us-east-1');


Operações principais com S3 em PHP



1. Criando um bucket (Bucket)



Um bucket é um contêiner para seus objetos (arquivos). O nome do bucket deve ser globalmente único:



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


2. Upload de arquivo (PutObject)



Upload de um arquivo do sistema de arquivos local para o S3:



try {    $result = $s3Client->putObject([        'Bucket' => 'my-unique-bucket-name',        'Key'    => 'images/photo.jpg',         // caminho do objeto no bucket        'SourceFile' => '/local/path/to/photo.jpg', // arquivo local        'ACL'    => 'public-read',               // permissões de acesso    ]);    echo "Arquivo enviado. URL: " . $result['ObjectURL'];} catch (Aws\\Exception\\AwsException $e) {    echo "Erro no upload: " . $e->getMessage();}


Você também pode enviar dados diretamente de uma string usando o parâmetro Body:



$result = $s3Client->putObject([    'Bucket' => 'my-unique-bucket-name',    'Key'    => 'data.txt',    'Body'   => 'Conteúdo do arquivo',]);


3. Download de arquivo (GetObject)



Baixar um arquivo do S3 pode ser feito para um arquivo ou para uma variável:



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

// Para uma variável$result = $s3Client->getObject([ 'Bucket' => 'my-unique-bucket-name', 'Key' => 'data.txt',]);$content = $result['Body']->getContents();echo $content;


4. Exclusão de arquivo (DeleteObject)



try {    $                    

Recommendations