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ística | Descripción |
|---|---|
| Repositorios Git | Soporta todas las operaciones estándar de Git |
| IAM nativo | Control de acceso granular con roles y políticas |
| Trigger con Lambda | Ejecutar funciones ante commits, push, pull requests |
| Integración con CodeSuite | Se integra fácilmente con CodeBuild, CodeDeploy y CodePipeline |
| Encriptado automático | Los datos están cifrados en reposo con KMS |
| Monitoreo | CloudWatch y CloudTrail para métricas y auditoría |
| Pull Requests | Soporte para PRs, comentarios, revisiones, aprobaciones |
| Repos ilimitados | No 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 acceso | Descripción |
|---|---|
| HTTPS (con IAM user) | Autenticación con credenciales IAM y clave HTTPS Git |
| SSH | Autenticación por par de llaves (clave pública registrada en IAM) |
| Access via federated user (SSO) | IAM Roles temporales o SSO |
| IAM Policies | Control granular por usuario, grupo o repositorio |
| KMS | Cifrado 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)
-
Crear usuario IAM con permisos de CodeCommit.
-
Generar credenciales HTTPS en la consola de IAM.
-
Configurar Git:
git config --global credential.helper '!aws codecommit credential-helper $@'
git config --global credential.UseHttpPath true
🧩 Integraciones con otros servicios AWS
| Servicio | Integración |
|---|---|
| CodeBuild | Fuente para builds automáticas |
| CodeDeploy | Despliegue desde ramas o tags |
| CodePipeline | Orquestación CI/CD |
| CloudWatch | Monitoreo de eventos o errores |
| Lambda | Triggers ante push o PRs |
| SNS/SQS | Notificaciones de eventos |
📁 Estructura de repositorio recomendada
mi-proyecto/
├── README.md
├── buildspec.yml
├── src/
│ └── main.py
├── tests/
│ └── test_main.py
└── .gitignore
🧠 Preguntas tipo certificación
-
¿Qué protocolo de red permite integrarse con IAM directamente?
- ✅ HTTPS
-
¿Cómo se controla el acceso a un repositorio en CodeCommit?
- ✅ Con políticas de IAM
-
¿Puedes usar CodeCommit como fuente en CodePipeline?
- ✅ Sí, de forma directa
-
¿Cómo se ejecutan acciones ante un push?
- ✅ Mediante triggers con Lambda, SNS o CloudWatch Events
-
¿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