Login
Login

O boto3 é o SDK oficial da Amazon para trabalhar com S3 em Python. Ele permite gerenciar objetos no armazenamento: enviar e baixar arquivos, listar objetos, trabalhar com metadados, realizar uploads multipart e gerar URLs pré-assinadas.

Instalação

Para instalar o boto3, use o pip:

pip install boto3

Após a instalação, a biblioteca estará pronta para uso no seu código Python.

Configurar acesso

Ao usar o boto3, 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 o seguinte:

[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

Se você usar o perfil default, nenhuma configuração adicional é necessária no código; o boto3 carregará essas configurações automaticamente.

Usar variáveis de ambiente

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

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

Passar credenciais no código

As credenciais podem ser passadas diretamente ao criar o cliente S3:

import boto3

s3 = boto3.client(
    "s3",
    aws_access_key_id="<ACCESS_KEY>",
    aws_secret_access_key="<SECRET_KEY>",
    endpoint_url="https://s3.hmstorage.net",
    region_name="us-2"
)

Essa abordagem não é recomendada para produção, pois as chaves de acesso ficam armazenadas diretamente no código-fonte.

Usar perfis nomeados

Se houver vários perfis configurados em ~/.aws/config e ~/.aws/credentials, você pode especificar explicitamente o perfil desejado ao criar uma sessão:

import boto3

session = boto3.Session(profile_name="myprofile")
s3 = session.client("s3")

Isso é útil quando a mesma base de código é usada para trabalhar com múltiplos buckets ou ambientes.

Exemplo

Abaixo está um exemplo que demonstra operações básicas com objetos usando o SDK. O script realiza as seguintes ações:

  • envia um arquivo para um bucket;
  • lista todos os objetos no bucket;
  • baixa o arquivo enviado com outro nome;
  • exclui o objeto do armazenamento.

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

Código de exemplo:

import boto3
import os

bucket_name = "bucket_name"
endpoint_url = "https://s3.hmstorage.net"
local_upload_path = "example.txt"
s3_key = "example.txt"
local_download_path = "downloaded_example.txt"

# Criar cliente S3
s3 = boto3.client("s3", endpoint_url=endpoint_url)

# 1. Enviar arquivo para o bucket
if os.path.exists(local_upload_path):
    print(f"Uploading {local_upload_path} to the bucket...")
    s3.upload_file(local_upload_path, bucket_name, s3_key)
    print("Upload completed.")
else:
    print(f"File {local_upload_path} not found. Skipping upload.")

# 2. Listar objetos no bucket
print("\nBucket contents:")
paginator = s3.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket=bucket_name):
    for obj in page.get("Contents", []):
        print(f"- {obj['Key']}")

# 3. Baixar arquivo do bucket
print(f"\nDownloading {s3_key} to {local_download_path}...")
s3.download_file(bucket_name, s3_key, local_download_path)
print("Download completed.")

# 4. Excluir arquivo do bucket
print(f"\nDeleting {s3_key} from the bucket...")
s3.delete_object(Bucket=bucket_name, Key=s3_key)
print("Deletion completed.")
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