Sélectionner vos préférences de cookies

Nous utilisons des cookies essentiels et des outils similaires qui sont nécessaires au fonctionnement de notre site et à la fourniture de nos services. Nous utilisons des cookies de performance pour collecter des statistiques anonymes afin de comprendre comment les clients utilisent notre site et d’apporter des améliorations. Les cookies essentiels ne peuvent pas être désactivés, mais vous pouvez cliquer sur « Personnaliser » ou « Refuser » pour refuser les cookies de performance.

Si vous êtes d’accord, AWS et les tiers approuvés utiliseront également des cookies pour fournir des fonctionnalités utiles au site, mémoriser vos préférences et afficher du contenu pertinent, y compris des publicités pertinentes. Pour accepter ou refuser tous les cookies non essentiels, cliquez sur « Accepter » ou « Refuser ». Pour effectuer des choix plus détaillés, cliquez sur « Personnaliser ».

AWS Infrastructure de test à l'aide LocalStack de tests Terraform - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

AWS Infrastructure de test à l'aide LocalStack de tests Terraform

Créée par Ivan Girardi (AWS) et Ioannis Kalyvas (AWS)

Récapitulatif

Ce modèle vous permet de tester localement l'infrastructure sous forme de code (IaC) pour AWS Terraform sans avoir à provisionner l'infrastructure dans votre AWS environnement. Il intègre le framework Terraform Tests à. LocalStack Le conteneur LocalStack Docker fournit un environnement de développement local qui émule divers. Services AWS Cela vous permet de tester et d'itérer les déploiements d'infrastructure sans encourir de coûts. AWS Cloud

Cette solution offre les avantages suivants :

  • Optimisation des coûts — L'exécution de tests permet d' LocalStack éliminer le besoin d'utilisation Services AWS. Cela vous évite d'encourir les coûts associés à la création, à l'exploitation et à la modification de ces AWS ressources.

  • Rapidité et efficacité — Les tests locaux sont également généralement plus rapides que le déploiement AWS des ressources. Cette boucle de rétroaction rapide accélère le développement et le débogage. Comme il LocalStack s'exécute localement, vous pouvez développer et tester vos fichiers de configuration Terraform sans connexion Internet. Vous pouvez déboguer les fichiers de configuration Terraform localement et recevoir des commentaires immédiats, ce qui rationalise le processus de développement.

  • Cohérence et reproductibilité : LocalStack fournit un environnement de test cohérent. Cette cohérence permet de garantir que les tests donnent les mêmes résultats, quels que soient les AWS changements externes ou les problèmes de réseau.

  • Isolation : les tests vous LocalStack évitent d'affecter accidentellement les AWS ressources réelles ou les environnements de production. Cette isolation permet d'expérimenter et de tester différentes configurations en toute sécurité.

  • Automatisation — L'intégration à un pipeline d'intégration continue et de livraison continue (CI/CD) vous permet de tester automatiquement les fichiers de configuration Terraform. Le pipeline teste minutieusement l'iAc avant le déploiement.

  • Flexibilité — Vous pouvez simuler différentes Régions AWS configurations et configurations de service pour mieux correspondre à vos environnements de production. Comptes AWS

Conditions préalables et limitations

Prérequis

Limites

  • Ce modèle fournit des exemples explicites pour tester les ressources Amazon Simple Storage Service (Amazon S3) AWS Lambda, AWS Step Functions, et Amazon DynamoDB. Toutefois, vous pouvez étendre cette solution pour inclure des AWS ressources supplémentaires.

  • Ce modèle fournit des instructions pour exécuter les tests Terraform localement, mais vous pouvez intégrer les tests dans n'importe quel pipeline CI/CD.

  • Ce modèle fournit des instructions pour utiliser l'image de LocalStack la communauté. Si vous utilisez l'image LocalStack Pro, consultez la documentation LocalStack Pro.

  • LocalStack fournit des services d'émulation pour différents. AWS APIs Pour une liste complète, voir Couverture des fonctionnalités du AWS service. Certaines fonctionnalités avancées peuvent nécessiter un abonnement LocalStack Pro.

Architecture

Le schéma suivant montre l'architecture de cette solution. Les principaux composants sont un référentiel de code source, un pipeline CI/CD et un conteneur LocalStack Docker. Le conteneur LocalStack Docker héberge les éléments suivants Services AWS localement :

  • Un compartiment Amazon S3 pour stocker des fichiers

  • Amazon CloudWatch pour la surveillance et la journalisation

  • Une AWS Lambda fonction pour exécuter du code sans serveur

  • Une machine à AWS Step Functions états pour orchestrer des flux de travail en plusieurs étapes

  • Une table Amazon DynamoDB pour stocker des données NoSQL

Un pipeline CI/CD crée et teste le conteneur LocalStack Docker et les ressources AWS.

Le schéma suivant illustre le flux de travail suivant :

  1. Vous ajoutez et validez un fichier de configuration Terraform dans le référentiel de code source.

  2. Le pipeline CI/CD détecte les modifications et lance un processus de génération pour l'analyse statique du code Terraform. Le pipeline construit et exécute le conteneur LocalStack Docker. Ensuite, le pipeline lance le processus de test.

  3. Le pipeline télécharge un objet dans un compartiment Amazon S3 hébergé dans le conteneur LocalStack Docker.

  4. Le téléchargement de l'objet appelle une AWS Lambda fonction.

  5. La fonction Lambda enregistre la notification d'événement Amazon S3 dans un CloudWatch journal.

  6. La fonction Lambda démarre une machine à AWS Step Functions états.

  7. La machine d'état écrit le nom de l'objet Amazon S3 dans une table DynamoDB.

  8. Le processus de test dans le pipeline CI/CD vérifie que le nom de l'objet chargé correspond à l'entrée de la table DynamoDB. Il vérifie également que le compartiment S3 est déployé avec le nom spécifié et que la AWS Lambda fonction a été déployée avec succès.

Outils

Services AWS

  • Amazon vous CloudWatch aide à surveiller les indicateurs de vos AWS ressources et des applications que vous utilisez AWS en temps réel.

  • Amazon DynamoDB est un service de base de données NoSQL entièrement géré, offrant des performances rapides, prévisibles et évolutives.

  • AWS Lambda est un service de calcul qui vous aide à exécuter du code sans avoir à allouer ni à gérer des serveurs. Il exécute votre code uniquement lorsque cela est nécessaire et évolue automatiquement, de sorte que vous ne payez que pour le temps de calcul que vous utilisez.

  • Amazon Simple Storage Service (Amazon S3) est un service de stockage d'objets basé sur le cloud qui vous permet de stocker, de protéger et de récupérer n'importe quel volume de données.

  • AWS Step Functionsest un service d'orchestration sans serveur qui vous aide à combiner des AWS Lambda fonctions et autres Services AWS pour créer des applications critiques pour l'entreprise.

Autres outils

  • Docker est un ensemble de produits de plateforme en tant que service (PaaS) qui utilisent la virtualisation au niveau du système d'exploitation pour fournir des logiciels dans des conteneurs.

  • Docker Compose est un outil permettant de définir et d'exécuter des applications multi-conteneurs.

  • LocalStackest un émulateur de service cloud qui s'exécute dans un conteneur unique. En utilisant LocalStack, vous pouvez exécuter des charges de travail sur votre machine locale qui l'utilise Services AWS, sans vous connecter au AWS Cloud.

  • Terraform est un outil IaC HashiCorp qui vous aide à créer et à gérer des ressources sur site et dans le cloud.

  • Terraform Tests vous aide à valider les mises à jour de configuration des modules Terraform par le biais de tests analogues à des tests d'intégration ou unitaires.

Référentiel de code

Le code de ce modèle est disponible dans l'AWS infrastructure de GitHub test à l'aide du LocalStack référentiel Terraform Tests.

Bonnes pratiques

Épopées

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Dans un shell bash, entrez la commande suivante. Cela clone l'AWS infrastructure de test à l'aide d'un référentiel LocalStack de tests Terraform à partir de : GitHub

git clone https://github.com/aws-samples/localstack-terraform-test.git
DevOps ingénieur

Faites fonctionner le LocalStack conteneur.

  1. Entrez la commande suivante pour accéder au référentiel cloné :

    cd localstack-terraform-test
  2. Entrez la commande suivante pour démarrer le conteneur LocalStack Docker en mode détaché :

    docker-compose up -d
  3. Attendez que le conteneur LocalStack Docker soit opérationnel.

DevOps ingénieur

Initialisez Terraform.

Entrez la commande suivante pour initialiser Terraform :

terraform init
DevOps ingénieur

Exécutez des tests Terraform.

  1. Entrez la commande suivante pour exécuter les tests Terraform :

    terraform test
  2. Vérifiez que tous les tests ont été effectués avec succès. La sortie doit ressembler à ce qui suit :

    Success! 3 passed, 0 failed.
DevOps ingénieur

Nettoyez les ressources.

Entrez la commande suivante pour détruire le LocalStack conteneur :

docker-compose down
DevOps ingénieur

Déployez la solution

TâcheDescriptionCompétences requises

Pour cloner le référentiel.

Dans un shell bash, entrez la commande suivante. Cela clone l'AWS infrastructure de test à l'aide d'un référentiel LocalStack de tests Terraform à partir de : GitHub

git clone https://github.com/aws-samples/localstack-terraform-test.git
DevOps ingénieur

Faites fonctionner le LocalStack conteneur.

  1. Entrez la commande suivante pour accéder au référentiel cloné :

    cd localstack-terraform-test
  2. Entrez la commande suivante pour démarrer le conteneur LocalStack Docker en mode détaché :

    docker-compose up -d
  3. Attendez que le conteneur LocalStack Docker soit opérationnel.

DevOps ingénieur

Initialisez Terraform.

Entrez la commande suivante pour initialiser Terraform :

terraform init
DevOps ingénieur

Exécutez des tests Terraform.

  1. Entrez la commande suivante pour exécuter les tests Terraform :

    terraform test
  2. Vérifiez que tous les tests ont été effectués avec succès. La sortie doit ressembler à ce qui suit :

    Success! 3 passed, 0 failed.
DevOps ingénieur

Nettoyez les ressources.

Entrez la commande suivante pour détruire le LocalStack conteneur :

docker-compose down
DevOps ingénieur

Résolution des problèmes

ProblèmeSolution

Error: reading DynamoDB Table Item (Files|README.md): emptyrésultat lors de l'exécution de la terraform test commande.

  1. Entrez à nouveau la terraform test commande.

  2. Si cela ne résout pas l'erreur, modifiez le fichier main.tf pour augmenter le délai de veille à une valeur supérieure à 15 secondes :

    resource "time_sleep" "wait" { create_duration = "15s" triggers = { s3_object = local.key_json } }

Ressources connexes

Informations supplémentaires

Intégration avec les GitHub actions

Vous pouvez intégrer LocalStack et Terraform des tests dans un pipeline CI/CD à l'aide d'Actions. GitHub Pour plus d'informations, consultez la documentation sur GitHub les actions. Voici un exemple de fichier de configuration d' GitHub actions :

name: LocalStack Terraform Test on: push: branches: - '**' workflow_dispatch: {} jobs: localstack-terraform-test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Build and Start LocalStack Container run: | docker compose up -d - name: Setup Terraform uses: hashicorp/setup-terraform@v3 with: terraform_version: latest - name: Run Terraform Init and Validation run: | terraform init terraform validate terraform fmt --recursive --check terraform plan terraform show - name: Run Terraform Test run: | terraform test - name: Stop and Delete LocalStack Container if: always() run: docker compose down
ConfidentialitéConditions d'utilisation du sitePréférences de cookies
© 2025, Amazon Web Services, Inc. ou ses affiliés. Tous droits réservés.