"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Configurando AWS SDK para PHP com S3

Configurando AWS SDK para PHP com S3

Publicado em 2024-11-08
Navegar:739

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.

Configuring AWS SDK for PHP with S3

Pré-requisitos

Antes de começarmos, certifique-se de ter o seguinte:

  • Uma conta AWS
  • ID da chave de acesso AWS e chave de acesso secreta
  • PHP 5.6 ou superior
  • Compositor instalado

Instalação

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.

Configuração

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.

Arquivo de configuração

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.

Variáveis ​​de ambiente

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.

Uso

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.

Fazendo upload de um arquivo

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.

Baixando um arquivo

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.

Listando objetos

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.

Melhores práticas - AWS SDK PHP S3

Aqui estão algumas práticas recomendadas que você deve ter em mente ao usar o AWS SDK para PHP com S3:

  • Use funções e políticas do IAM para gerenciar o acesso aos seus recursos S3.
  • Use o controle de versão para manter múltiplas versões de seus objetos e proteger contra exclusão acidental.
  • Use políticas de ciclo de vida para gerenciar automaticamente o armazenamento e a retenção de seus objetos.
  • Use a aceleração de transferência para melhorar o desempenho de seus uploads e downloads.
  • Use criptografia do lado do servidor para proteger seus dados em repouso.
  • Use notificações de eventos para acionar ações com base em alterações em seus objetos S3.

Claro, aqui estão algumas dicas adicionais para usar o AWS SDK para PHP com S3 no Laravel.

Usando o AWS SDK para PHP com 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:

  • Instale o pacote AWS SDK para PHP via Composer:
composer require aws/aws-sdk-php
  • Configure suas credenciais da AWS em seu arquivo .env:
AWS_ACCESS_KEY_ID=your_access_key_id
AWS_SECRET_ACCESS_KEY=your_secret_access_key
AWS_DEFAULT_REGION=your_region
  • Use a fachada do Storage para interagir com o 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;
}
  • Use o adaptador Flysystem do Laravel para personalizar o comportamento da fachada de armazenamento:
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 o sistema de filas do Laravel para realizar operações S3 de forma assíncrona:
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));
    }
}

Melhores práticas - AWS SDK PHP Laravel

Aqui estão algumas práticas recomendadas que você deve ter em mente ao usar o AWS SDK para PHP com S3 no Laravel:

  • Use o suporte integrado do Laravel para o AWS SDK para PHP para simplificar seu código e reduzir a quantidade de código padrão que você precisa escrever.
  • Use o sistema de filas do Laravel para realizar operações S3 de forma assíncrona, o que pode melhorar o desempenho e a escalabilidade de seus aplicativos Laravel.
  • Use o adaptador Flysystem do Laravel para personalizar o comportamento da fachada de armazenamento e para integrar o S3 com outros recursos do Laravel, como o sistema de cache do Laravel.
  • Use o sistema de filas do Laravel para realizar operações S3 de forma assíncrona, o que pode melhorar o desempenho e a escalabilidade de seus aplicativos Laravel.
  • Use os recursos de criptografia do Laravel para criptografar dados confidenciais antes de armazená-los no S3.
  • Use os recursos de registro do Laravel para registrar quaisquer erros ou exceções que ocorram ao usar o AWS SDK para PHP com S3.

Conclusão

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.

Declaração de lançamento Este artigo está reproduzido em: https://dev.to/fernandomullerjr/configurando-aws-sdk-for-php-with-s3-257f?1 Se houver alguma infração, entre em contato com [email protected] para excluí-la
Tutorial mais recente Mais>

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