floci: ce que documente réellement le dépôt
Floci émule les services AWS sélectionnés sur une machine locale afin que les applications cloud puissent être développées et testées sans compte distant.
En bref
- De quoi s’agit-il ?
- Lecture française du README de floci-io/floci, de son périmètre technique et de ses limites documentées.
- À qui s’adresse-t-il ?
- Ce projet convient aux lecteurs qui veulent examiner floci à partir de ses fichiers et de ses indications officielles. Il ne convient pas à une décision fondée sur la popularité seule.
- Puis-je l’utiliser commercialement ?
- Oui. MIT est une licence permissive : vous pouvez utiliser, modifier et vendre un logiciel qui en dépend, à condition de conserver les mentions de droit d’auteur et de licence.
- Est-il encore maintenu ?
- Oui. Le dépôt a reçu de nouveaux commits au cours des dernières 24 heures.
- En quel langage est-il écrit ?
- Principalement Java, d’après les statistiques de langage de GitHub.
Ces réponses reposent sur les données GitHub du projet (dernière synchronisation le 15 septembre 2026) et sur notre analyse. Elles ne constituent pas un avis juridique.
ANALYSE OPEN SOURCE APPROFONDIE
Un émulateur qui démarre avec docker compose up
Dans floci, le README indique: Floci est un émulateur AWS local gratuit et open source écrit en Java. L'argument du README est qu'il ne nécessite ni compte AWS, ni jeton d'authentification, ni portes de fonctionnalités payantes. La méthode standard est l'interface en ligne de commande officielle : `floci start` suivi de `eval $(floci env)` pour exporter les variables d'environnement AWS, ou Docker Compose avec l'image `floci/floci:latest` mappée sur le port 4566. Une fois lancé, tous les services AWS sont disponibles à `http://localhost:4566`, et n'importe quelle région et des identifiants non vides fonctionnent, sauf si des contrôles d'authentification plus stricts spécifiques au service sont activés. Le nom du projet vient de la formation nuageuse floccus.
Couverture des services applicatifs, de données et d'infrastructure
Dans floci, le README indique: Le README liste 69 services AWS répartis dans des catégories telles que les services applicatifs de base, les événements, l'identité, les bases de données, l'analyse et les charges de travail conteneurisées. Certains services fonctionnent en processus, notamment S3, DynamoDB, SQS, SNS, IAM, KMS, Step Functions, CloudFormation et EventBridge. D'autres utilisent de vrais conteneurs Docker lorsque le README estime qu'une émulation en processus réduirait la fidélité. Le diagramme d'architecture montre un routeur sur le port 4566 qui distribue les requêtes vers des services sans état, des services avec état et des services conteneurisés, avec un backend de stockage en dessous. Le tableau des services donne des notes opérationnelles pour chaque service, comme le versionnage et le téléversement multipart de S3, les GSI et TTL de DynamoDB, et le pool de conteneurs chauds de Lambda.
Services Docker et exigence de socket
Dans floci, le README indique: Pour Lambda, RDS, Neptune, ElastiCache, MSK, ECS, EC2, EKS, OpenSearch et CodeBuild, Floci lance de vrais conteneurs plutôt que des simulations. Le README fournit un tableau des images par défaut : Lambda utilise `public.ecr.aws/lambda/<runtime>`, RDS PostgreSQL utilise `postgres:16-alpine`, Neptune utilise TinkerPop Gremlin Server, MSK utilise Redpanda et EKS utilise k3s. Comme ces services ont besoin de Docker, le README montre comment exécuter Floci avec le socket Docker monté et en tant que root. Les images par défaut peuvent être remplacées par des variables d'environnement telles que `FLOCI_SERVICES_RDS_DEFAULT_POSTGRES_IMAGE`. Le README ne précise pas ce qui se passe si Docker est indisponible, ni si le montage du socket est obligatoire pour une configuration uniquement en processus.
Modes de stockage et isolation des comptes
Dans floci, le README indique: Floci propose quatre modes de stockage contrôlés par `FLOCI_STORAGE_MODE` : memory, persistent, hybrid et write-ahead log. memory conserve tout en RAM et perd les données à l'arrêt du conteneur ; persistent écrit chaque opération sur disque immédiatement ; hybrid écrit de manière asynchrone toutes les 5 secondes ; wal journalise chaque mutation avant de répondre. Le README recommande memory pour les tests CI et éphémères, et hybrid pour le développement local. Pour l'isolation multi-comptes, si `AWS_ACCESS_KEY_ID` est exactement composé de 12 chiffres, Floci le traite comme l'identifiant du compte et sépare les ressources. Les autres formats de clé retombent sur `FLOCI_DEFAULT_ACCOUNT_ID`, dont la valeur par défaut est `000000000000`. Les identifiants temporaires STS issus de AssumeRole sont routés vers le compte du rôle assumé.
SDK, Testcontainers et suite de compatibilité
Dans floci, le README indique: Le README montre comment utiliser les SDK AWS standard avec `http://localhost:4566` en Java v2, Python boto3, Node.js v3, Go v2, Rust et l'interface AWS CLI. Il liste également des modules Testcontainers pour Java, Node.js et Python, avec Go marqué comme en cours. Le répertoire compatibility-tests contient 2 506 tests automatisés couvrant 5 SDK et 3 outils IaC : Terraform, OpenTofu et AWS CDK. Les nombres de tests sont détaillés par module : Java 1 326, Node.js 449, Python 311, Go 157, AWS CLI 205, Terraform 22, OpenTofu 16 et CDK 20. Ces chiffres proviennent des tableaux du README et représentent la suite de tests propre au projet, pas une vérification indépendante.
Migration depuis LocalStack et tags d'images
Dans floci, le README indique: Floci se positionne comme un remplaçant direct de LocalStack Community, qui selon le README arrive en fin de vie en mars 2026 et exige désormais des jetons d'authentification. La section migration indique de remplacer l'image `localstack/localstack` par `floci/floci:latest`, ou `floci/floci:latest-compat` si les scripts d'initialisation ont besoin d'AWS CLI ou boto3. Les variables d'environnement LocalStack sont traduites automatiquement, notamment `LOCALSTACK_HOST` vers `FLOCI_HOSTNAME`, `PERSISTENCE=1` vers `FLOCI_STORAGE_MODE=persistent`, et `DEBUG=1` vers `QUARKUS_LOG_LEVEL=DEBUG`. Les scripts d'init montés sous `/etc/localstack/init/` s'exécutent inchangés, les points de terminaison `/_localstack/init` et `/_localstack/health` sont toujours servis, et une ligne `Ready.` est émise pour les outils qui attendent ce signal. Définir `LOCALSTACK_PARITY=false` désactive la traduction automatique. Les tags d'images suivent un schéma de variante et de canal : `latest`, versions épinglées, `nightly` et `nightly-mmddyyyy`, chacun avec un suffixe `-compat` pour l'image contenant AWS CLI et boto3.
Conclusion éditoriale
Ce projet convient aux lecteurs qui veulent examiner floci à partir de ses fichiers et de ses indications officielles. Il ne convient pas à une décision fondée sur la popularité seule. Vérifiez le parcours propre au dépôt, notamment le README, la commande ou le fichier d'entrée mentionné, ainsi que la licence MIT avant tout usage.
Notes de la communauté