Carregar arquivos para o Amazon S3 usando AWS PHP SDK
Você deseja fazer upload de arquivos para o Amazon S3 programaticamente? Amazon S3 é um serviço de armazenamento em nuvem onde se pode armazenar arquivos, imagens, etc. Esses documentos podem ser públicos ou privados, dependendo da escolha do proprietário. Neste artigo, estudamos como fazer upload de arquivos para o Amazon S3 usando a biblioteca oficial AWS PHP SDK.
O Amazon S3 oferece armazenamento de objetos altamente escalonável. Por causa de sua robustez e desempenho, é um serviço de nuvem popular entre os usuários.
Por que precisa fazer upload de arquivos no Amazon S3?
Bem, há vários motivos para manter seus arquivos no Amazon S3. Por ser um serviço baseado em nuvem, você pode acessar seus arquivos de qualquer lugar. Ao usar este serviço, os usuários podem manter seus documentos confidenciais. A AWS fornece um recurso para manter seu documento público ou privado. Em segundo lugar, se você estiver executando um site da Web, manter seus arquivos na nuvem economizará muita largura de banda. Ele economiza espaço de hospedagem e reduz as cargas em seu servidor.
Dito isso, vamos dar uma olhada em como fazer upload de arquivos no Amazon S3 usando PHP.
Obtenha suas credenciais de segurança
Para começar a usar o S3, você deve ter uma conta na AWS. Depois de criar a conta AWS, certifique-se de ativar o serviço S3 seguindo seu processo de verificação.
Ao ativar o serviço S3, obtenha suas credenciais de segurança que solicitaremos ao trabalhar com as APIs.
Código para upload de arquivos para Amazon S3
Estamos prontos com as chaves de API da AWS. Em seguida, instale uma biblioteca oficial AWS PHP SDK em seu projeto. Eu recomendo usar o Composer para instalar esta biblioteca. Abra o terminal no diretório raiz do seu projeto e execute o comando abaixo.
composer require aws/aws-sdk-php
Este comando instalará a biblioteca com suas dependências em seu projeto.
Criar um intervalo na AWS
Na AWS, precisamos criar um Bucket para armazenar nossos arquivos. O balde nada mais é do que uma unidade lógica de armazenamento na AWS. Todos os seus arquivos serão armazenados dentro do balde.
Você pode criar um bucket no painel S3 diretamente. Mas se alguém deseja criá-lo dinamicamente, consulte o código abaixo.
create-bucket.php
<?php
require 'vendor/autoload.php';
use AwsS3S3Client;
$bucketName = 'YOUR_BUCKET_NAME';
$client = new S3Client([
'version' => 'latest',
'region' => 'YOUR_AWS_REGION',
'credentials' => [
'key' => 'ACCESS_KEY_ID',
'secret' => 'SECRET_ACCESS_KEY'
]
]);
try {
$result = $client->createBucket([
'Bucket' => $bucketName, // REQUIRED
'ACL' => 'public-read',
]);
echo "Bucket created successfully.";
} catch (AwsS3ExceptionS3Exception $e) {
// output error message if fails
echo $e->getMessage();
}
Certifique-se de substituir os marcadores de posição pelos valores reais. Este código cria um depósito em seu painel S3. Faremos o upload dos arquivos neste intervalo por meio da API.
No código acima, passei chave => par de valores como 'ACL' => 'public-read'
. Este par define o acesso público ao seu intervalo ou arquivos. Se você deseja manter seu armazenamento privado, remova esta linha do código.
O próximo trabalho é escrever código para fazer upload de arquivos no Amazon S3. Por causa do tutorial, estou criando diferentes arquivos PHP e escrevendo código neles. No seu caso, sinta-se à vontade para implementar a lógica dependendo do fluxo do seu projeto.
Carregar arquivo para Amazon S3
Você está pronto com o balde para armazenar seus arquivos. Crie um arquivo upload-to-s3.php
e coloque o código abaixo neste arquivo.
upload-to-s3.php
<?php
require 'vendor/autoload.php';
use AwsS3S3Client;
// Instantiate an Amazon S3 client.
$s3 = new S3Client([
'version' => 'latest',
'region' => 'YOUR_AWS_REGION',
'credentials' => [
'key' => 'ACCESS_KEY_ID',
'secret' => 'SECRET_ACCESS_KEY'
]
]);
$bucketName = 'YOUR_BUCKET_NAME';
$file_Path = __DIR__. '/my-image.png';
$key = basename($file_Path);
// Upload a publicly accessible file. The file size and type are determined by the SDK.
try {
$result = $s3->putObject([
'Bucket' => $bucketName,
'Key' => $key,
'Body' => fopen($file_Path, 'r'),
'ACL' => 'public-read',
]);
echo "Image uploaded successfully. Image path is: ". $result->get('ObjectURL');
} catch (AwsS3ExceptionS3Exception $e) {
echo "There was an error uploading the file.n";
echo $e->getMessage();
}
Aqui, você deve atribuir o nome do intervalo para a $bucketName
variável. No meu caso, estou enviando um arquivo que diz ‘my-image.png’ cujo caminho eu defini no código. Conseqüentemente, você deve ajustar o caminho de seus arquivos. Finalmente, estou imprimindo o caminho de um arquivo carregado usando o get()
método na resposta recebida.
Tudo feito! Agora execute o upload-to-s3.php
arquivo no navegador e seu arquivo deve ser carregado no bucket do Amazon S3.
Espero que você entenda como criar um bucket e fazer upload de arquivos para o Amazon S3. Você também pode verificar os códigos de exemplo fornecidos pela AWS no GitHub.
Artigos relacionados
- Como fazer upload de arquivo para S3 usando o sistema de arquivos Laravel
- Como fazer upload de imagens para outro servidor através de FTP no Laravel
- Como integrar a API do Planilhas Google com PHP