L'objectif : un git push sur main qui construit l'image, la pousse sur ECR, déploie sur ECS Fargate, attend que le service soit stable, et revient en arrière tout seul si le déploiement échoue. Voici un pipeline GitHub Actions complet, commenté.
1. L'authentification sans clés longue durée
N'utilisez plus de clés IAM statiques dans les secrets GitHub. L'OIDC permet à Actions d'assumer un rôle AWS le temps du job, sans secret stocké :
2. Build et push de l'image
On tague l'image avec le SHA du commit — traçable et immuable, contrairement à latest :
3. Déploiement ECS avec attente de stabilité
On met à jour la task definition avec la nouvelle image, puis on attend que le service atteigne un état stable. L'option wait-for-service-stability est ce qui rend le déploiement vérifiable :
4. Le rollback automatique
La vraie sécurité ne vient pas du pipeline mais de la stratégie de déploiement ECS. Activez le circuit breaker : si les nouvelles tâches ne passent pas les health checks, ECS rebascule automatiquement sur la version précédente.
Avec minimum_healthy_percent = 100, ECS démarre les nouvelles tâches avant d'arrêter les anciennes : zéro coupure. Si le déploiement échoue, le circuit breaker annule sans intervention humaine.
Ce que ce pipeline garantit
- Aucune clé AWS longue durée stockée dans GitHub.
- Des images immuables tracées par SHA de commit.
- Un déploiement vérifié (attente de stabilité), pas « fire and forget ».
- Un rollback automatique au moindre échec de health check.
À retenir
- L'OIDC remplace les clés IAM statiques : plus de secret à fuiter.
- Taguez les images par SHA, jamais latest.
- wait-for-service-stability rend le déploiement vérifiable.
- Le circuit breaker ECS assure le rollback automatique, zéro downtime.