Tester et déployer vos API

Développer des applications sur AWS

Ricardo Sueiras

Principal Technologist

Infrastructure-as-Code pour les développeurs

 

iac

  • Les apps cloud natives se déploient via l'Infrastructure-as-Code (IaC).
  • Définissez les ressources cloud dans des fichiers de configuration.
  • Évite les réglages manuels dans l'AWS Management Console (clickops).
Développer des applications sur AWS

AWS CloudFormation

 

cloudformation

  • Le service IaC fondamental d'AWS.
  • Définissez des ressources AWS avec des modèles YAML ou JSON.
Développer des applications sur AWS

AWS Cloud Development Kit (CDK)

 

cdk

  • CDK définit l'IaC avec du code.
  • Écrivez en Python, TypeScript ou Java plutôt qu'en YAML ou JSON.
  • Les apps sont synthétisées en modèles CloudFormation au déploiement.
Développer des applications sur AWS

AWS Serverless Application Model (SAM)

  • Étend CloudFormation.
  • Syntaxe simplifiée pour les ressources serverless et les API.
  • Sert de couche de transformation.
  • Traduit la syntaxe SAM en modèles CloudFormation complets.

 

sam

Développer des applications sur AWS

Fonctionnalités de SAM

  • Génère automatiquement des rôles IAM à privilèges minimum, avec possibilité d'affiner.
  • Définissez votre pipeline de déploiement en configuration.
  • Packager et déployer avec sam build et sam deploy.
  • Détecter tôt les erreurs de modèle avec sam validate.
  • Émuler Lambda en local avec sam local start-lambda.
    • Fournit un point de terminaison local persistant

 

sam features

Développer des applications sur AWS

Tester avec SAM

  • Construire, appeler et tester des apps serverless en local avant déploiement.
  • Tester les fonctions Lambda et les intégrations API Gateway.
  • Appeler une fonction en local avec sam local invoke.
    • Appel ponctuel
  • Émuler API Gateway avec sam local start-api.

 

testing with sam

Développer des applications sur AWS

Tests unitaires

 

unit tests

  • Utilisez SAM avec des tests unitaires pour valider le comportement de Lambda.
  • Les tests locaux accélèrent les cycles de développement.
  • À associer à des frameworks comme pytest, JUnit ou Jest.
Développer des applications sur AWS

Flux de test

 

test workflow

  • Générez des événements de test avec sam local generate-event.
  • Produit des fichiers d'événements JSON.
  • Invoquez en local avec sam local invoke FunctionName -e event.json.
  • Ajoutez des assertions du framework pour vérifier la réponse avant déploiement.
Développer des applications sur AWS

Simuler les services AWS (mocking)

 

mocking tests

  • Combinez les tests locaux avec des bibliothèques de mocking comme moto.
  • Interagissez avec des services AWS simulés, sans appels réels.
  • Améliore la vitesse des tests.
  • Réduit les coûts de test.
  • Valide des scénarios d'erreur comme le throttling ou les échecs.
Développer des applications sur AWS

Intégration et déploiement continus (CI/CD)

  • Les apps SAM sont souvent déployées via des pipelines CI/CD.
  • Automatisez build, tests, packaging et déploiement.
  • AWS CodeCommit stocke le code et les modèles SAM.
  • AWS CodeBuild exécute les tests et sam build.
  • AWS CodePipeline orchestre le flux.

 

cicd

Développer des applications sur AWS

Flux CI/CD

  • Validez le code source et le modèle SAM dans un dépôt.
  • Exécutez des tests et des validations automatisés.
  • Packager l'app avec sam build.
  • Déployez les ressources avec sam deploy.
  • Surveillez après déploiement avec CloudWatch.

 

workflow

Développer des applications sur AWS

Dépanner les déploiements

  troubleshooting

  • Le dépannage est une compétence opérationnelle clé.
  • Échecs de déploiement fréquents :
  • Problèmes d'autorisations IAM.
  • Modèles SAM ou CloudFormation invalides.
  • Échec du packaging Lambda ou dépendances manquantes.
  • Mauvaises configurations d'API Gateway.
Développer des applications sur AWS

Dépanner les déploiements

  troubleshooting

  • Les déploiements SAM s'exécutent sur CloudFormation en arrière-plan.
  • Fournit des événements de pile et un rollback automatique.
  • Aide à identifier les échecs de déploiement.
  • Revient en arrière pour restaurer l'état précédent de l'environnement.
Développer des applications sur AWS

Dépanner les déploiements

  troubleshooting

  • Dépannez avec :
  • CloudWatch Logs.
  • Journaux d'exécution d'API Gateway.
  • Journaux Lambda.
  • Métriques CloudWatch.
Développer des applications sur AWS

Passons à la pratique !

Développer des applications sur AWS

Preparing Video For Download...