IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

LocalStack, un émulateur de services cloud AWS,
Conçu pour exécuter des applications sur une machine locale

Le , par Bruno

21PARTAGES

11  0 
Les services cloud peuvent prendre la forme d'une infrastructure, d'une plateforme ou d'un logiciel, hébergés par des fournisseurs tiers et mis à disposition des utilisateurs par Internet. Ils facilitent le flux des données utilisateur par Internet entre les clients front-end, (serveur, tablette, ordinateur de bureau ou portable), et les systèmes du fournisseur. Pour accéder aux services cloud, les utilisateurs n'ont besoin que d'un ordinateur, d'un système d'exploitation et d'une connexion à Internet ou un réseau privé virtuel (VPN).

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é

Une erreur dans cette actualité ? Signalez-le nous !

Avatar de eomer212
Membre averti https://www.developpez.com
Le 13/10/2021 à 4:09
le cloud n'est pas la solution à tout.
si vous envisagez une ou plusieurs applications de trés gros volume d'utilsateurs, alors, peut-etre. mais le cloud c'est pas donné, loin de la. c'est meme un gros piége au nieau des couts qui explosent trés rapidement.
personnellement, j'aime pas reposer sur les services des autres et leurs limitations.

et dans le cas ou on veut explorer ce qui pourra etre fait et comment avant de passer à l'echelle, cet outil me semble vital.
ca peut aussi servir pour tester la solidité de l'application et sa sécurité.
bref que du bon, à mon sens. pour ceux qui ont reellement besoin du cloud.
ca a tout a fait sa place dans un centre de formation et dans les entreprises.
5  0 
Avatar de Pierre Louis Chevalier
Expert éminent sénior https://www.developpez.com
Le 12/10/2021 à 23:52
Ça permet déjà de se former, de développer et de tester ses applications AWS, sans donner un centime à Amazon
En fait certains qui ont développé et testés de nouvelles applis sur Amazon AWS ont fait parfois des erreurs de codage, ou parfois pas bien compris le modèle de tarification, et se sont retrouvés avec des notes très salées, bien plus que prévu, et parfois même tellement salées qu'ils ont du mettre hors ligne leurs applications et même déposer le bilan de leur startup.

Donc cet outil est un début de solution au problème, en tout cas un moyen de débuter sans risquer une catastrophe des le départ
4  0 
Avatar de Gugelhupf
Modérateur https://www.developpez.com
Le 13/10/2021 à 15:01
J'ai l'impression que certains n'ont pas compris l'utilité de localstack. Il s'agit d'un outil très utile pour renforcer vos tests d'intégration, pour ne pas que vous tombiez dans le piège des libs de mock qui ne gèrent pas tous les cas possibles, notamment les exceptions au Runtime

Exemple, je veux insérer une donnée volumineuse dans DynamoDB:
  • Avec Mockito: Cas toujours passant en local, la lib AWS lance une exception en prod
  • Avec Localstack: Erreur dans les tests, vous gérez ce cas et pas de problème en prod
2  0 
Avatar de lmontout
Membre du Club https://www.developpez.com
Le 13/10/2021 à 11:59
Au lieu de ça, la complexité et les outils ne cessent de croitre
Comme c'est plus simple, on peut faire compliqué plus rapidement.
1  0 
Avatar de defZero
Membre extrêmement actif https://www.developpez.com
Le 12/10/2021 à 21:58
Alors, je comprend et visualise bien où cela peut-être utile MAIS quand on en vient à "émuler" des services cloud, j'ai envie de dire qu'on est déjà partie trop loin dans l'abstraction .

Le cloud n'était-il pas censé simplifier le développement de services en ligne ?
Au lieu de ça, la complexité et les outils ne cessent de croitre.
2  2