Article image
Fernanda Araujo
Fernanda Araujo14/07/2025 05:36
Compartilhe

Desenvolvendo com Python na AWS: Ferramentas, Códigos e Boas Práticas Comentadas

  • #AWS
  • #Python

Se você é dev Python e pensa em escalar aplicações, automatizar infraestrutura ou integrar sensores inteligentes, a AWS oferece um verdadeiro arsenal de ferramentas pensadas para você.

Neste artigo, vamos explorar os serviços mais usados para programadores Python na AWS, com direito a analogias práticas, códigos bem comentados e insights valiosos.

O foco será em:

  • SDK para Python (Boto3)
  • Toolkits de IDEs na AWS
  • AWS CDK para Python
  • AWS IoT SDK para Python

image

▫️ Amazon Q Developer

Amazon Q Developer é como ter um copiloto de IA que entende de AWS, DevOps e desenvolvimento — tudo ao mesmo tempo. Ele responde suas dúvidas técnicas dentro do console AWS, VS Code ou JetBrains, sugere trechos de código, explica erros e até gera recursos AWS com base em perguntas.

Imagine que você está em um cockpit e pergunta: “Como faço uma Lambda que roda a cada 5 minutos?”. O Amazon Q já escreve a estrutura do recurso em CDK, mostra onde alterar e explica o cron. É como ter um arquiteto e engenheiro do seu lado.

Exemplo em VS Code com Q Developer ativado:

python

# Suponha que você peça ao Q Developer: "Crie uma função Lambda em Python que imprime 'Olá AWS' a cada 5 minutos."

from aws_cdk import (
  aws_lambda as _lambda,
  aws_events as events,
  aws_events_targets as targets,
  core
)

class LambdaHelloStack(core.Stack):
  def __init__(self, scope: core.Construct, id: str, **kwargs):
      super().__init__(scope, id, **kwargs)

      # Função Lambda simples
      hello_lambda = _lambda.Function(
          self, "HelloLambda",
          runtime=_lambda.Runtime.PYTHON_3_9,
          handler="hello.handler",
          code=_lambda.Code.from_inline(
              "def handler(event, context):\n    print('Olá AWS!')"
          )
      )

      # Evento agendado para rodar a cada 5 minutos
      rule = events.Rule(
          self, "ScheduleRule",
          schedule=events.Schedule.rate(core.Duration.minutes(5))
      )
      rule.add_target(targets.LambdaFunction(hello_lambda))

Explicando o código:

  • Criamos uma Lambda com código embutido (from_inline) que imprime uma mensagem.
  • Um agendador (CloudWatch Event) dispara essa função a cada 5 minutos.
  • O Amazon Q Developer pode sugerir isso automaticamente, explicando cada passo.

▫️ Boto3 – SDK para Python

Boto3 é como a ponte mágica entre o seu código Python e qualquer serviço AWS. Ele permite que você controle S3, EC2, DynamoDB, Lambda, IAM, etc., direto do seu script Python.

Imagine que a AWS é uma fábrica e o Boto3 é o painel de controle que te permite ligar máquinas (instâncias), abrir portas (permissões) e enviar pacotes (objetos S3) com simples comandos.

Exemplo:

python

import boto3

# Conecta ao serviço S3
s3 = boto3.client('s3')

# Cria um novo bucket
response = s3.create_bucket(
  Bucket='meu-bucket-python-exemplo',
  CreateBucketConfiguration={'LocationConstraint': 'us-east-1'}
)

# Faz upload de um arquivo
s3.upload_file('meuarquivo.txt', 'meu-bucket-python-exemplo', 'meuarquivo.txt')

Explicando o código:

  • Criamos um bucket na região us-east-1.
  • Enviamos um arquivo local para ele usando upload_file.
  • Simples, direto e poderoso. Ideal para automações e sistemas que interagem com nuvem.

▫️ Toolkits de IDEs na AWS (Cloud9, VSCode Toolkit)

AWS Toolkit para VS Code e JetBrains transforma seu editor em um painel nativo da AWS. Dá pra navegar recursos, implantar Lambdas, depurar, e visualizar logs sem sair da IDE.

Pense como um canivete suíço embutido no seu editor favorito.

Exemplo de uso:

Você cria um projeto Lambda local com Python no VS Code (terminal usando git bash) e usa o Toolkit para empacotar e fazer deploy com um clique.

bash

sam init --runtime python3.9 --name lambda-exemplo
cd lambda-exemplo
sam build
sam deploy --guided

Explicando:

  • Criamos uma Lambda com SAM CLI (integrado ao toolkit).
  • O toolkit configura deploy, roles, regiões e monitora tudo.
  • Excelente para devs que gostam de tudo no mesmo lugar.

▫️ AWS CDK para Python

O CDK (Cloud Development Kit) permite criar infraestrutura como código usando Python. Ao invés de escrever JSON/YAML (CloudFormation), você escreve código Python moderno, com loops, objetos e classes. Muito mais limpo e reutilizável.

É como programar prédios inteiros com Lego, mas usando Python ao invés de blocos.

Exemplo:

python

from aws_cdk import (
  aws_s3 as s3,
  core
)

class StorageStack(core.Stack):
  def __init__(self, scope: core.Construct, id: str, **kwargs):
      super().__init__(scope, id, **kwargs)

      # Cria um bucket S3 com versionamento
      s3.Bucket(self, 
                "MeuBucketComCDK",
                versioned=True,
                removal_policy=core.RemovalPolicy.DESTROY)

Explicando:

  • Criamos um bucket S3 com versionamento ativado.
  • Se o stack for destruído, o bucket será também (RemovalPolicy.DESTROY).
  • CDK torna a infraestrutura repetível, validável e integrada ao versionamento Git.

▫️AWS IoT SDK para Python

Esse SDK permite conectar dispositivos físicos (sensores, placas, câmeras) ao mundo AWS. Perfeito para projetos IoT que precisam enviar dados para a nuvem em tempo real.

Imagine uma estufa inteligente: o sensor lê a temperatura e envia para a AWS a cada minuto. Esse SDK é o "intérprete" entre o sensor e o MQTT broker na nuvem.

Exemplo:

python

from awscrt import io, mqtt, auth, http
from awsiot import mqtt_connection_builder
import time

# Conexão com o endpoint IoT da AWS
mqtt_connection = mqtt_connection_builder.mtls_from_path(
  endpoint="a1b2c3d4wxyz.iot.us-east-1.amazonaws.com",
  cert_filepath="device.pem.crt",
  pri_key_filepath="private.pem.key",
  client_bootstrap=io.ClientBootstrap.get_or_create_static_default(),
  ca_filepath="AmazonRootCA1.pem",
  client_id="sensor-temperatura-01",
  clean_session=False,
  keep_alive_secs=30
)

# Conecta ao broker
mqtt_connection.connect().result()

# Publica dados
for i in range(5):
  temperatura = 22 + i
  mensagem = {"temperatura": temperatura}
  mqtt_connection.publish(
      topic="estufa/sensores/temperatura",
      payload=str(mensagem),
      qos=mqtt.QoS.AT_LEAST_ONCE
  )
  print("Enviado:", mensagem)
  time.sleep(2)

Explicando:

  • Estabelecemos uma conexão segura com o endpoint IoT.
  • Publicamos leituras fictícias de temperatura num tópico MQTT.
  • Ideal para protótipos de automação residencial, agricultura e cidades inteligentes.

▫️Conclusão

Trabalhar com Python na AWS é mais do que possível, é poderoso. Com ferramentas como o Amazon Q Developer e SDKs específicos, o desenvolvedor tem liberdade para codar, automatizar e escalar de forma elegante e comentada.

📚 Referências Oficiais da AWS para Desenvolvedores Python

  • AWS Samples no GitHub (Python)
  • Repositório oficial com centenas de exemplos prontos, divididos por serviço e linguagem.
  • 📎 https://github.com/aws-samples
Compartilhe
Comentários (3)
DIO Community
DIO Community - 16/07/2025 09:43

Fernanda, seu artigo sobre Python e AWS é incrível! A forma como você conecta ferramentas e SDKs da AWS com Python, proporcionando uma compreensão prática de como essas tecnologias podem ser usadas no desenvolvimento de sistemas modernos, é essencial para desenvolvedores que querem escalar suas aplicações e aproveitar ao máximo a nuvem.

O uso do Amazon Q Developer como copiloto de IA é uma excelente analogia. Ele realmente transforma a maneira como desenvolvedores interagem com a AWS, tornando o processo de criação de recursos muito mais intuitivo e rápido. A explicação sobre o uso do Boto3, AWS CDK, e outros SDKs é clara e prática, com exemplos que tornam a implementação mais acessível.

Agora, o que me deixa curioso é como você sugeriria que desenvolvedores iniciantes que estão começando com Python e AWS possam construir um projeto simples para testar essas ferramentas? Você tem algum exemplo de caso real para um primeiro projeto na nuvem que integrem essas tecnologias?

Fernanda Araujo
Fernanda Araujo - 14/07/2025 15:15

Obrigada pelo feedback!! 👩🏻‍💻

RM

Rodrigo Miranda - 14/07/2025 13:40

Ótimo!