July 31, 2025

CodeCommit

📘 ¿Qué es AWS CodeCommit?

AWS CodeCommit es un servicio de control de versiones totalmente gestionado que permite almacenar código fuente en repositorios privados de Git en AWS.

✅ Similar a GitHub o GitLab, pero hospedado dentro de AWS con integración nativa a IAM, CloudWatch, CodePipeline, etc.


🎯 Casos de uso

  • Repositorio Git privado para proyectos internos o confidenciales.

  • Almacenamiento de artefactos de infraestructura como código (IaC) o scripts de automatización.

  • CI/CD con CodePipeline, CodeBuild, CodeDeploy.

  • Control de versiones de configuraciones y recursos compartidos entre equipos.


🧩 Características principales

CaracterísticaDescripción
Repositorios GitSoporta todas las operaciones estándar de Git
IAM nativoControl de acceso granular con roles y políticas
Trigger con LambdaEjecutar funciones ante commits, push, pull requests
Integración con CodeSuiteSe integra fácilmente con CodeBuild, CodeDeploy y CodePipeline
Encriptado automáticoLos datos están cifrados en reposo con KMS
MonitoreoCloudWatch y CloudTrail para métricas y auditoría
Pull RequestsSoporte para PRs, comentarios, revisiones, aprobaciones
Repos ilimitadosNo hay límite fijo en cantidad de repositorios

⚙️ Arquitectura básica

Desarrollador ➝ Git Push ➝ CodeCommit Repo
                              |
                              ├─▶ CodePipeline (CI/CD)
                              ├─▶ Lambda (eventos personalizados)
                              └─▶ CloudWatch (auditoría, métricas)

🔐 Seguridad y autenticación

Método de accesoDescripción
HTTPS (con IAM user)Autenticación con credenciales IAM y clave HTTPS Git
SSHAutenticación por par de llaves (clave pública registrada en IAM)
Access via federated user (SSO)IAM Roles temporales o SSO
IAM PoliciesControl granular por usuario, grupo o repositorio
KMSCifrado automático de los repositorios en reposo

🧰 Comandos Git comunes con CodeCommit

# Clonar repositorio
git clone https://git-codecommit.us-east-1.amazonaws.com/v1/repos/mi-repo

# Crear rama
git checkout -b nueva-rama

# Push a una rama
git push origin nueva-rama

# Pull Request desde consola o CLI

📌 El formato de la URL depende del protocolo elegido (HTTPS o SSH) y la región.


🧪 Configuración inicial (HTTPS con IAM)

  1. Crear usuario IAM con permisos de CodeCommit.

  2. Generar credenciales HTTPS en la consola de IAM.

  3. Configurar Git:

git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true

🧩 Integraciones con otros servicios AWS

ServicioIntegración
CodeBuildFuente para builds automáticas
CodeDeployDespliegue desde ramas o tags
CodePipelineOrquestación CI/CD
CloudWatchMonitoreo de eventos o errores
LambdaTriggers ante push o PRs
SNS/SQSNotificaciones de eventos

📁 Estructura de repositorio recomendada

mi-proyecto/
├── README.md
├── buildspec.yml
├── src/
│   └── main.py
├── tests/
│   └── test_main.py
└── .gitignore

🧠 Preguntas tipo certificación

  1. ¿Qué protocolo de red permite integrarse con IAM directamente?

    • ✅ HTTPS
  2. ¿Cómo se controla el acceso a un repositorio en CodeCommit?

    • ✅ Con políticas de IAM
  3. ¿Puedes usar CodeCommit como fuente en CodePipeline?

    • ✅ Sí, de forma directa
  4. ¿Cómo se ejecutan acciones ante un push?

    • ✅ Mediante triggers con Lambda, SNS o CloudWatch Events
  5. ¿Está cifrado el contenido del repositorio?

    • ✅ Sí, por defecto con KMS

💲 Precios

  • Gratis hasta:

    • 5 usuarios activos al mes

    • 50 GB de almacenamiento

    • 10,000 solicitudes Git/mes

  • A partir de ahí, se cobra por:

    • Usuarios activos adicionales

    • Almacenamiento y transferencias extra

💡 Ideal para organizaciones que ya trabajan con AWS y quieren repositorios privados.


📚 Recursos útiles


✅ Buenas prácticas

  • Usa ramas para entornos (dev, staging, prod)

  • Aplica políticas IAM estrictas por repositorio

  • Habilita triggers para validar calidad (tests, lint, etc.)

  • Requiere revisión de Pull Requests antes de fusionar

  • Integra con CodePipeline para automatizar builds y despliegues