Amazon Web Services (AWS) é uma plataforma poderosa que oferece uma ampla gama de serviços para desenvolvedores e empresas. Dentre esses serviços, o Amazon Simple Storage Service (S3) é um dos mais populares e amplamente utilizados. Para interagir com o S3 programaticamente, você pode usar o AWS SDK para PHP. Neste artigo, orientaremos você no processo de configuração do AWS SDK para PHP com S3.
Antes de começarmos, certifique-se de ter o seguinte:
Para instalar o AWS SDK para PHP, você pode usar o Composer. Execute o seguinte comando em seu terminal:
composer require aws/aws-sdk-php
Este comando instalará a versão mais recente do AWS SDK para PHP em seu projeto.
Depois de instalar o SDK, você precisa configurá-lo com seu ID de chave de acesso da AWS e sua chave de acesso secreta. Você pode fazer isso criando um arquivo de configuração ou definindo variáveis de ambiente.
Crie um novo arquivo chamado config.php em seu projeto e adicione o seguinte código:
'us-east-1', 'version' => 'latest', 'credentials' => [ 'key' => 'YOUR_ACCESS_KEY_ID', 'secret' => 'YOUR_SECRET_ACCESS_KEY', ] ]); $s3Client = $sdk->createS3();
Substitua YOUR_ACCESS_KEY_ID e YOUR_SECRET_ACCESS_KEY pelo seu ID de chave de acesso AWS e chave de acesso secreta reais.
Como alternativa, você pode definir o ID da chave de acesso da AWS e a chave de acesso secreta como variáveis de ambiente:
export AWS_ACCESS_KEY_ID=YOUR_ACCESS_KEY_ID export AWS_SECRET_ACCESS_KEY=YOUR_SECRET_ACCESS_KEY
Em seguida, crie o cliente S3 da seguinte maneira:
'us-east-1', 'version' => 'latest', ]); $s3Client = $sdk->createS3();
Pronto para aprender mais sobre AWS e PHP? Confira nossos outros artigos sobre AWS configurando SSO e corrigindo erros de permissão negada do laravel.
Agora que configurou o AWS SDK para PHP com S3, você pode começar a usá-lo para interagir com seus buckets S3. Aqui está um exemplo de como listar todos os buckets da sua conta:
$buckets = $s3Client->listBuckets(); foreach ($buckets['Buckets'] as $bucket) { echo $bucket['Name'] . PHP_EOL; }
Claro, aqui estão alguns exemplos adicionais e práticas recomendadas para usar o AWS SDK para PHP com S3.
Para fazer upload de um arquivo para um bucket S3, você pode usar o método putObject. Aqui está um exemplo:
$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 fará upload do arquivo localizado em /path/to/my-file.txt para o bucket my-bucket e imprimirá o URL do arquivo enviado.
Para baixar um arquivo de um bucket S3, você pode usar o método getObject. Aqui está um exemplo:
$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 fará download do arquivo com a chave my-file.txt do bucket my-bucket e o salvará em /path/to/downloaded-file.txt.
Para listar os objetos em um bucket S3, você pode usar o método listObjects. Aqui está um exemplo:
$bucketName = 'my-bucket'; $result = $s3Client->listObjects([ 'Bucket' => $bucketName, ]); foreach ($result['Contents'] as $object) { echo $object['Key'] . PHP_EOL; }
Este código listará todos os objetos no bucket my-bucket e imprimirá suas chaves.
Aqui estão algumas práticas recomendadas que você deve ter em mente ao usar o AWS SDK para PHP com S3:
Claro, aqui estão algumas dicas adicionais para usar o AWS SDK para PHP com S3 no Laravel.
O Laravel tem suporte integrado para o AWS SDK para PHP, o que facilita o uso do S3 em seus aplicativos Laravel. Aqui estão algumas dicas para usar o SDK com 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)); } }
Aqui estão algumas práticas recomendadas que você deve ter em mente ao usar o AWS SDK para PHP com S3 no Laravel:
Neste artigo, abordamos os princípios básicos da configuração do AWS SDK para PHP com S3 e fornecemos alguns exemplos adicionais e práticas recomendadas para usar o SDK com S3. Também fornecemos algumas dicas adicionais para usar o SDK com S3 no Laravel. Seguindo essas diretrizes, você pode garantir que seus aplicativos PHP sejam seguros, eficientes e escaláveis.
Quer saber mais sobre AWS e PHP? Confira nossos outros artigos sobre DevOps Mind.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3