Login
Login

O aws/aws-sdk-php é o SDK oficial da Amazon para trabalhar com o serviço S3 em PHP. Ele permite realizar operações básicas com objetos no S3, incluindo enviar e baixar arquivos, excluir objetos, listar o conteúdo de buckets e gerar URLs pré-assinadas.

Instalação

Instale a biblioteca usando o Composer:

composer require aws/aws-sdk-php

Após a instalação, a biblioteca ficará localizada no diretório vendor. Para utilizá-la, inclua o autoloader:

require 'vendor/autoload.php';

O SDK requer que a extensão ext-xml do PHP esteja instalada.

Verifique se a extensão está disponível:

php -m | grep xml

Se a extensão não estiver instalada, use o gerenciador de pacotes:

  • Debian / Ubuntu:

sudo apt install php-xml
  • Alpine:

apk add php8-xml
  • RHEL / CentOS:

sudo yum install php-xml

Configurar acesso

As credenciais de acesso podem ser configuradas de várias formas.

Usar ~/.aws/config e ~/.aws/credentials

Ao usar a AWS CLI, um diretório .aws com arquivos de configuração é criado automaticamente no diretório home do usuário. Se necessário, você pode criar esse diretório e os arquivos manualmente, sem instalar a AWS CLI.

O arquivo ~/.aws/credentials deve conter:

[default]
aws_access_key_id = <ACCESS_KEY>
aws_secret_access_key = <SECRET_KEY>

E o ~/.aws/config:

[default]
output = json
endpoint_url = https://s3.hmstorage.net
region = us-2

Usar variáveis de ambiente

Você também pode fornecer credenciais por meio de variáveis de ambiente:

export AWS_ACCESS_KEY_ID=<ACCESS_KEY>
export AWS_SECRET_ACCESS_KEY=<SECRET_KEY>

Nesse caso, você pode usar o SDK sem configuração adicional:

$s3 = new Aws\S3\S3Client([
    'region' => 'us-2',
    'version' => 'latest',
    'endpoint' => 'https://s3.hmstorage.net',
]);

Passar credenciais no código

As credenciais podem ser fornecidas explicitamente ao criar o cliente:

<code here>

Usar um perfil diferente da AWS CLI

Se houver múltiplos perfis configurados em ~/.aws/credentials, você pode especificar o perfil necessário:

$s3 = new S3Client([
    'profile' => 'myprofile',
    'region' => 'us-2',
    'version' => 'latest',
    'endpoint' => 'https://s3.hmstorage.net',
]);

Exemplo

O exemplo abaixo demonstra operações básicas com objetos:

  • enviar um arquivo para um bucket;
  • listar objetos no bucket;
  • baixar um arquivo;
  • excluir um objeto.

Antes de executar o script, crie um arquivo chamado example.txt no mesmo diretório do script.

Código de exemplo:

<?php

require 'vendor/autoload.php';

use Aws\S3\S3Client;
use Aws\Exception\AwsException;

$bucket = 'bucket_name';
$key = 'example.txt';
$localUpload = 'example.txt';
$localDownload = 'downloaded_example.txt';

$s3 = new S3Client([
    'region' => 'us-2',
    'version' => 'latest',
    'endpoint' => 'https://s3.hmstorage.net',
    'credentials' => [
        'key' => '<ACCESS_KEY>',
        'secret' => '<SECRET_KEY>',
    ],
]);

try {
    // 1. Enviar arquivo para o bucket
    if (file_exists($localUpload)) {
        echo "Uploading file $localUpload...\n";
        $s3->putObject([
            'Bucket' => $bucket,
            'Key' => $key,
            'SourceFile' => $localUpload,
        ]);
        echo "Upload completed.\n";
    } else {
        echo "File $localUpload not found. Skipping upload.\n";
    }

    // 2. Listar objetos
    echo "\nBucket contents:\n";
    $result = $s3->listObjectsV2([
        'Bucket' => $bucket,
    ]);

    if (!empty($result['Contents'])) {
        foreach ($result['Contents'] as $object) {
            echo "- {$object['Key']}\n";
        }
    } else {
        echo "(Bucket is empty)\n";
    }

    // 3. Baixar arquivo
    echo "\nDownloading $key to $localDownload...\n";
    $s3->getObject([
        'Bucket' => $bucket,
        'Key' => $key,
        'SaveAs' => $localDownload,
    ]);
    echo "Download completed.\n";

    // 4. Excluir arquivo
    echo "\nDeleting $key from the bucket...\n";
    $s3->deleteObject([
        'Bucket' => $bucket,
        'Key' => $key,
    ]);
    echo "Deletion completed.\n";

} catch (AwsException $e) {
    echo "Error: {$e->getMessage()}\n";
}
Esta página foi útil?
Atualizado em 19 de March de 2026

Tem perguntas,
comentários ou preocupações?

Nossos profissionais estão disponíveis para ajudá-lo a qualquer momento,
seja para assistência ou apenas se você não souber por onde começar.
Envie-nos um e-mail
Hostman's Support