LocalStack est un émulateur de services cloud qui s'exécute dans un seul conteneur sur ordinateur portable ou dans un environnement CI. Avec LocalStack, il est possible d’exécuter des applications AWS ou Lambdas entièrement sur une machine locale sans se connecter à un fournisseur de cloud distant ! Que vous testiez des applications CDK ou des configurations Terraform complexes, ou que vous commenciez tout juste à vous familiariser avec les services AWS, LocalStack aide à accélérer et à simplifier votre flux de travail de test et de développement. Plus de téléchargement fastidieux du code de l'application pour exécuter un test rapide. Plus d'argent dépensé pour des ressources de test coûteuses sur AWS.
Rappelons qu’un cloud est un environnement qui dissocie, regroupe et partage des ressources évolutives sur un réseau. Un cloud s'utilise dans le cadre d'une stratégie de cloud computing, qui consiste à exécuter des charges de travail dans un environnement cloud. Les clouds sont un type de PaaS, puisqu'une personne autre que l'utilisateur met à disposition l'infrastructure sous-jacente sur laquelle la plateforme web est fournie.
À l'instar de toutes les autres solutions informatiques, les services cloud reposent sur du matériel et des logiciels. Toutefois, contrairement aux solutions matérielles et logicielles traditionnelles, les services cloud sont accessibles simplement à l'aide d'un ordinateur, d'une connexion réseau et d'un système d'exploitation. Les fournisseurs de services cloud peuvent également utiliser leurs ressources matérielles pour créer des plateformes cloud, qui sont des environnements en ligne où les utilisateurs peuvent développer du code ou exécuter des applications.
Contrairement à une infrastructure cloud, la création d'une plateforme cloud implique plus que la séparation des capacités d'un ordinateur de ses composants matériels. Pour fournir des plateformes cloud, il faut ajouter des niveaux de développement supplémentaires pour intégrer des technologies telles que la conteneurisation, l'orchestration, les API (interface de programmation d'applications), le routage, la sécurité, la gestion et l'automatisation. Par défaut, LocalStack est lancé dans un conteneur Docker en exécutant :
Code : | Sélectionner tout |
localstack start
Il est possible d’utiliser directement docker et utiliser la commande suivante pour démarrer avec localstack :
Code : | Sélectionner tout |
docker run --rm -it -p 4566:4566 -p 4571:4571 localstack/localstack
Il est également possible d’utiliser Helm pour installer LocalStack dans un cluster Kubernetes en exécutant les commandes suivantes :
Code : | Sélectionner tout |
1 2 | helm repo add localstack-repo https://helm.localstack.cloud helm upgrade --install localstack localstack-repo/localstack |
LocalStack prend en charge un nombre croissant de services AWS, comme AWS Lambda, S3, Dynamodb, Kinesis, SQS, SNS, et bien d'autres encore ! La version Pro de LocalStack prend en charge des API supplémentaires et des fonctionnalités avancées. L’émulateur de services cloud propose également des fonctionnalités supplémentaires pour faciliter la vie des développeurs cloud ! Il fournit un cadre de test/mocking facile à utiliser pour développer des applications cloud. Il fait tourner un environnement de test sur une machine locale qui offre les mêmes fonctionnalités et API que le véritable environnement cloud AWS.
Sur une machine locale, les développeurs peuvent exécuter les fonctions Lambda, stocker des données dans des tables DynamoDB, envoyer des événements via des flux Kinesis, placer l’application derrière une passerelle API. Le diagramme ci-dessous illustre le pipeline efficace du développement/test et de déploiement que permet LocalStack. LocalStack fournit toutes les ressources cloud nécessaires dans un conteneur local.
Les changements sont fréquemment poussés vers un serveur d'intégration continue qui exécute les tests automatisés. LocalStack fournit toutes les ressources cloud nécessaires dans l'environnement du serveur d'intégration continue. Une fois que tous les tests sont au vert, l'application peut être déployée très simplement de manière transparente dans l'environnement réel du cloud AWS.
Interagir avec LocalStack
Il existe plusieurs façons d'interagir avec LocalStack. Pour essayer LocalStack, l'AWS CLI est un bon point de départ, mais il est également possible d’utiliser Terraform, CDK, les bibliothèques client AWS et de nombreux autres outils de l'écosystème AWS.
AWS CLI
Il est possible d’indiquer à AWS CLI (et à d'autres outils similaires) d'utiliser LocalStack en configurant le point de terminaison du service, par exemple :
Code : | Sélectionner tout |
1 2 3 4 | aws --endpoint-url=http://localhost:4566 kinesis list-streams { "StreamNames": [] } |
La commande ci-dessous peut être utilisée pour installer aws CLI, s'il n'est pas déjà installé.
Code : | Sélectionner tout |
pip install awscli
Configuration de la région locale et des informations d'identification pour exécuter LocalStack. AWS exige que la région et les informations d'identification soient définies afin d'exécuter les commandes AWS. Créez la configuration par défaut et les informations d'identification. La clé ci-dessous demandera l'ID de la clé d'accès, la clé d'accès secrète, la région et le format de sortie.
Code : | Sélectionner tout |
1 2 | export AWS_ACCESS_KEY_ID=test export AWS_SECRET_ACCESS_KEY=test |
awslocal
awslocal est un wrapper CLI léger qui exécute les commandes directement contre LocalStack (plus besoin de spécifier --endpoint-url). Il peut être intallé via pip install awscli-local, et utilisé ensuite comme suit :
Code : | Sélectionner tout |
1 2 3 4 | awslocal kinesis list-streams { "StreamNames": [] } |
AWS CLI v2 avec Docker et LocalStack
Par défaut, le conteneur exécutant amazon/aws-cli est isolé de 0.0.0.0:4566 sur la machine hôte, ce qui signifie qu'aws-cli ne peut pas atteindre localstack via le shell. Pour s'assurer que les deux conteneurs docker peuvent communiquer, il est nécessaire de créer un réseau sur le moteur docker :
Code : | Sélectionner tout |
1 2 3 | $ docker network create localstack 0c9cb3d37b0ea1bfeb6b77ade0ce5525e33c7929d69f49c3e5ed0af457bdf123 |
Puis modifiez le fichier docker-compose.yml en spécifiant le réseau à utiliser :
Code : | Sélectionner tout |
1 2 3 4 | networks: default: external: name: "localstack" |
Exécutez le conteneur docker AWS Cli v2 en utilisant ce réseau (exemple) :
Code : | Sélectionner tout |
1 2 3 4 | $ docker run --network localstack --rm -it amazon/aws-cli --endpoint-url=http://localstack:4566 lambda list-functions { "Functions": [] } |
Pour utiliser AWS CLI v2 depuis un conteneur docker, il est nécessaire de créer un alias :
$ alias laws='docker run --network localstack --rm -it amazon/aws-cli --endpoint-url=http://localstack:4566'
Afin de pouvoir saisir :
Code : | Sélectionner tout |
1 2 3 4 | $ laws lambda list-functions { "Functions": [] } |
Source : LocalStack
Et vous ?
Quelle solution de cloud computing utilisez-vous ?
Quel modèle de service cloud correspond le plus à vos besoins ?
Que pensez-vous de LocalStack ?
Voir aussi :
Le recours au cloud s'accélère dans les entreprises. Le paysage reste dominé par AWS et Azure et le cloud hybride reste la stratégie la plus répandue, selon Global Cloud Survey de Denodo
Les dépenses mondiales liées au cloud complet atteindront 1,3 billion de dollars d'ici 2025, avec un taux de croissance annuel composé (TCAC) de 16,9 %, selon IDC
La sécurité dans le Cloud reste challengée par la complexité et le Shadow IT d'après IBM, principales menaces : Vol de données, cryptomining et ranswomware
Quelle solution de cloud computing utilisez-vous ? Quel modèle de service cloud correspond le plus à vos besoins ? Tour d'horizon du marché