Noções Básicas do boto3
10 exemplos para você começar com Cloud SDKs - 7 básicos e 3 intermediários.
Busque em todas as páginas da documentação
10 exemplos para você começar com Cloud SDKs - 7 básicos e 3 intermediários.
uv venv && source .venv/bin/activate
uv pip install "boto3>=1.35"
aws configure --profile dev # ou export AWS_PROFILE=dev~/.aws/credentials, variáveis de ambiente ou role IAM de instância/tarefa.boto3.Session é o ponto de entrada para resolução de região, perfil e credenciais.
import boto3
session = boto3.Session(profile_name="dev", region_name="us-east-1")
print(session.region_name)profile_name mapeia para seções em ~/.aws/credentials.region_name explícito - clientes globais ainda precisam de uma região de assinatura.Relacionado: Padrões de Credenciais e Sessão - configurações de privilégio mínimo
Clientes expõem a API bruta da AWS - um método por ação de API.
import boto3
s3 = boto3.client("s3")
resp = s3.list_buckets()
print([b["Name"] for b in resp.get("Buckets", [])])Relacionado: S3 - uploads, downloads, URLs pré-assinadas
Recursos fornecem uma camada orientada a objetos sobre clientes.
import boto3
s3 = boto3.resource("s3")
for bucket in s3.buckets.all():
print(bucket.name)Bucket, Object, Table encapsulam fluxos de trabalho comuns.Relacionado: S3 - operações de streaming e de objetos
Fixe a região para evitar latência inter-regional surpreendente ou comportamento incorreto de partição.
import boto3
session = boto3.Session(region_name="eu-west-1")
dynamodb = session.client("dynamodb")
print(dynamodb.meta.region_name)meta.region_name confirma onde as requisições são assinadas.endpoint_url apenas para LocalStack, endpoints VPC ou gateways personalizados.Relacionado: Retentativas, Paginação e Limitação - chamadas robustas em escala
O boto3 resolve credenciais automaticamente quando você não passa chaves no código.
import boto3
session = boto3.Session()
creds = session.get_credentials()
print(creds.method if creds else "no credentials")AWS_PROFILE seleciona um perfil nomeado sem codificar em fonte.Relacionado: Secrets Manager & SSM - busca de segredos em tempo de execução
Erros da AWS chegam como botocore.exceptions.ClientError com códigos estruturados.
import boto3
from botocore.exceptions import ClientError
s3 = boto3.client("s3")
try:
s3.head_bucket(Bucket="definitely-missing-bucket-xyz")
except ClientError as exc:
code = exc.response["Error"]["Code"]
print(code)Error.Code (404, NoSuchBucket, AccessDenied), não em strings de mensagem.response espelha os payloads de erro XML/JSON da AWS.ResponseMetadata para tickets de suporte da AWS.Relacionado: Melhores Práticas de Cloud SDK - regras seguras de tratamento de erros
Crie clientes uma vez por processo, não por requisição em loops intensivos.
import boto3
_SESSION = boto3.Session()
_SQS = _SESSION.client("sqs")
def send_message(queue_url: str, body: str) -> None:
_SQS.send_message(QueueUrl=queue_url, MessageBody=body)Relacionado: SQS & SNS - padrões de fila e tópico
Pare de criar loops NextToken manualmente - use paginadores integrados.
import boto3
s3 = boto3.client("s3")
paginator = s3.get_paginator("list_objects_v2")
for page in paginator.paginate(Bucket="my-bucket", Prefix="logs/"):
for obj in page.get("Contents", []):
print(obj["Key"], obj["Size"])PaginationConfig={"MaxItems": 100} para limitar scripts de desenvolvimento.Relacionado: DynamoDB - paginação de consulta
Espere até que a AWS conclua a criação assíncrona antes de etapas dependentes.
import boto3
ec2 = boto3.client("ec2")
waiter = ec2.get_waiter("instance_running")
instance_id = "i-0123456789abcdef0"
waiter.wait(InstanceIds=[instance_id])time.sleep em scripts de provisionamento.WaiterConfig={"Delay": 5, "MaxAttempts": 40} para recursos de longa execução.Relacionado: Provisionamento de Recursos na Nuvem - fluxos de trabalho de bootstrap
Ajuste retentativas e timeouts para padrões de tráfego de produção.
import boto3
from botocore.config import Config
config = Config(
retries={"max_attempts": 10, "mode": "standard"},
connect_timeout=5,
read_timeout=60,
)
s3 = boto3.client("s3", config=config)mode: adaptive ajuda sob limitação sustentada; standard é o padrão previsível.Config a cada cliente em uma classe de serviço.Relacionado: Retentativas, Paginação e Limitação - estratégias de limitação
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+ e uv 0.6+.
Revisado por Chris St. John·Última atualização: 19 de jul. de 2026