cloud · temario
6.1tema 1 de 4

AWS Esencial

Regiones, IAM, S3, costos y credenciales seguras para proyectos de IA.

AWS es la plataforma cloud dominante para proyectos de IA en producción. Antes de lanzar un modelo, necesitas entender su geografía: las regiones son centros de datos físicamente separados (us-east-1, sa-east-1, etc.) y determinan la latencia para tus usuarios, el cumplimiento legal de los datos y qué servicios están disponibles. Elegir la región equivocada al inicio es un error caro de corregir después.

IAM (Identity and Access Management) es el sistema de permisos de AWS. Funciona como el control de acceso de un edificio: cada persona (usuario o servicio) tiene una tarjeta (rol o política) que le da acceso solo a los pisos que necesita. El principio de least privilege es fundamental: un script de entrenamiento no necesita permisos de borrar toda la cuenta. Políticas demasiado amplias son la causa número uno de incidentes de seguridad en la nube.

S3 (Simple Storage Service) es el sistema de almacenamiento de objetos de AWS. Para IA, es donde guardas datasets de entrenamiento, checkpoints de modelos y artefactos de despliegue. Piénsalo como un disco duro infinito organizado en 'buckets'. Su modelo de costos es por GB almacenado y por solicitudes de lectura/escritura, por lo que leer muchas veces un dataset grande desde S3 puede generar facturas sorpresa.

El control de costos en AWS requiere atención desde el día uno. Los servicios de IA como SageMaker, Bedrock y las instancias GPU son costosos. AWS Cost Explorer y los budgets con alertas son herramientas no opcionales. Un error frecuente es olvidar terminar instancias de entrenamiento o dejar endpoints activos sin tráfico: en AWS, lo que corre, cobra.

Las credenciales son el punto más crítico de seguridad. Nunca hardcodees AWS Access Key ID y Secret Access Key en el código fuente ni en archivos de configuración que se suban a git. La forma correcta es usar variables de entorno, AWS CLI profiles, o roles IAM asignados a instancias EC2/Lambda/SageMaker. Un secreto en git público es una brecha inmediata.

El AWS CLI es la interfaz de línea de comandos para interactuar con todos los servicios. Junto con boto3 (SDK de Python), son las herramientas cotidianas para automatizar creación de recursos, subida de datasets a S3 y gestión de endpoints. Configura siempre perfiles nombrados (`aws configure --profile mi-proyecto`) para no mezclar credenciales entre proyectos.

structure.txt
# Configure a named profile (never use default for production)
aws configure --profile ai-project
# AWS Access Key ID: AKIA...
# AWS Secret Access Key: ****
# Default region name: us-east-1
# Default output format: json

# List S3 buckets
aws s3 ls --profile ai-project

# Create a bucket in a specific region
aws s3 mb s3://my-ml-datasets --region us-east-1 --profile ai-project

# Upload a dataset to S3
aws s3 cp ./data/train.csv s3://my-ml-datasets/train.csv --profile ai-project

# Sync a local directory to S3
aws s3 sync ./models/ s3://my-ml-datasets/models/ --profile ai-project

# Minimal IAM policy for S3 read-only access
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": ["s3:GetObject", "s3:ListBucket"],
    "Resource": [
      "arn:aws:s3:::my-ml-datasets",
      "arn:aws:s3:::my-ml-datasets/*"
    ]
  }]
}

# Read credentials from environment variables (boto3)
import boto3, os
session = boto3.Session(
    aws_access_key_id=os.environ['AWS_ACCESS_KEY_ID'],
    aws_secret_access_key=os.environ['AWS_SECRET_ACCESS_KEY'],
    region_name=os.environ['AWS_DEFAULT_REGION'],
)

# Better: use a named profile, no keys in code
session = boto3.Session(profile_name='ai-project')
s3 = session.client('s3')

Debugging lab

Detecta y corrige el error en el código.

0/5 tests passing0%
  1. 6.1.5.1

    policy = {"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"*","Resource":"*"}]}

  2. 6.1.5.2

    AWS_ACCESS_KEY_ID = 'AKIAIOSFODNN7EXAMPLE' AWS_SECRET_ACCESS_KEY = 'wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY' s3 = boto3.client('s3', aws_access_key_id=AWS_ACCESS_KEY_ID, aws_secret_access_key=AWS_SECRET_ACCESS_KEY)

  3. 6.1.5.3

    aws s3 cp ./dataset.csv s3://my-bucket/dataset.csv

  4. 6.1.5.4

    aws s3 mb s3://My_Dataset_Bucket --region us-east-1

  5. 6.1.5.5

    role_arn = 'arn:aws:iam::123456789:role/SageMakerRole' # Policy attached: AdministratorAccess