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-phpApó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 { $ Também na biblioteca
Monitoramento de aplicações Kotlin: bibliotecas e ferramentas para rastreamento de desempenho
Trabalhando com datas em JavaScript (Node.js): bibliotecas populares
OpenCV C++: Guia Completo com Exemplos Práticos
Aprendizado de Máquina em Go: uma visão geral das bibliotecas para Golang