July 31, 2025

SDKs

📘 ¿Qué es un AWS SDK?

El AWS SDK (Software Development Kit) es una colección de bibliotecas que permite interactuar programáticamente con los servicios de AWS desde tu lenguaje de programación favorito.

  • Permite automatizar tareas, crear aplicaciones cloud-native y manejar infraestructura directamente desde el código.

  • Soporta múltiples lenguajes: Python, JavaScript/TypeScript, Java, Go, .NET, Ruby, PHP, etc.


🌐 Lenguajes y SDKs comunes

LenguajeSDKInstalación
PythonBoto3pip install boto3
JavaScriptAWS SDK v3 (modular)npm install @aws-sdk/client-s3
JavaAWS SDK for Java v2/v1Gradle/Maven
GoAWS SDK for Go v2go get github.com/aws/aws-sdk-go-v2
.NETAWS SDK for .NETNuGet

🔐 Autenticación

Todos los SDKs usan credenciales de AWS desde las mismas fuentes que la CLI:

  1. Variables de entorno (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY)

  2. Archivos ~/.aws/credentials

  3. Roles asignados a instancias (EC2, Lambda, etc.)

  4. AWS SSO o STS (para sesiones temporales)

✅ Puedes usar los mismos perfiles configurados con aws configure.


🧪 Ejemplos prácticos (por lenguaje)

🐍 Python (Boto3)

import boto3

# Crear cliente de S3
s3 = boto3.client('s3')

# Listar buckets
for bucket in s3.list_buckets()['Buckets']:
    print(bucket['Name'])

# Subir archivo
s3.upload_file('local.txt', 'mi-bucket', 'remoto.txt')

🌐 JavaScript (Node.js – AWS SDK v3)

import { S3Client, ListBucketsCommand } from "@aws-sdk/client-s3";

const s3 = new S3Client({ region: "us-east-1" });

const run = async () => {
  const data = await s3.send(new ListBucketsCommand({}));
  data.Buckets.forEach(bucket => console.log(bucket.Name));
};

run();

☕ Java (AWS SDK for Java v2)

S3Client s3 = S3Client.builder().region(Region.US_EAST_1).build();

ListBucketsResponse buckets = s3.listBuckets();
for (Bucket b : buckets.buckets()) {
    System.out.println(b.name());
}

🧠 Ventajas de usar el SDK

VentajaDescripción
Integración directaUsa servicios AWS como parte de tu app (subir archivos, emails, etc.)
Automatización completaSin depender de scripts externos o consola
Alta portabilidadFunciona en local, contenedores, servidores o funciones Lambda
Soporte para IAMHereda permisos del entorno o roles asignados
Modularidad (SDK v3)Importa solo los servicios que usas (JavaScript)

📘 Principales servicios usados con SDK

ServicioUso común desde SDK
S3Subida/descarga/listado de archivos
DynamoDBInserciones, lecturas y escaneos
EC2Lanzar/terminar instancias, consultar estado
LambdaInvocar funciones desde apps
SNS/SQSPublicar mensajes o recibirlos
STSObtener credenciales temporales
SSMAcceder a parámetros seguros o iniciar sesiones con instancias

🔧 SDK vs CLI vs CloudFormation

HerramientaIdeal para…Lenguaje
SDKIntegrar AWS con apps dinámicamenteCódigo (Python, JavaScript, etc.)
CLIAutomatización rápida desde terminalBash / Shell
CloudFormationInfraestructura declarativa y reutilizableYAML / JSON

🔐 Seguridad y buenas prácticas

  • Nunca expongas tus claves en código. Usa perfiles o IAM roles.

  • Usa try/except o control de errores según lenguaje.

  • Usa clientes regionales (region='us-east-1') explícitamente.

  • Reutiliza clientes para evitar latencia.

  • En proyectos grandes: abstrae la lógica AWS en módulos reutilizables.


📚 Documentación oficial


🎓 Preguntas tipo certificación

  1. ¿Qué herramienta permite invocar una función Lambda desde una app?

    • ✅ SDK (por ejemplo: boto3.client('lambda').invoke(...))
  2. ¿Dónde busca el SDK las credenciales?

    • ✅ Variables de entorno, archivo ~/.aws/credentials, IAM roles.
  3. ¿Cuál es una ventaja del SDK sobre la CLI?

    • ✅ Se puede usar directamente dentro del código fuente de una aplicación.

📄 Cheatsheet (Python - Boto3)

# EC2
ec2 = boto3.resource('ec2')
instances = ec2.instances.filter(Filters=[{'Name': 'instance-state-name', 'Values': ['running']}])

# DynamoDB
dynamo = boto3.resource('dynamodb')
table = dynamo.Table('MiTabla')
response = table.get_item(Key={'id': '123'})

# SQS
sqs = boto3.client('sqs')
sqs.send_message(QueueUrl=URL, MessageBody='Hola desde SDK')