Cloud & Edge Infrastructures — 2025
Ce projet implémente une solution cloud temporaire permettant de :
- Uploader des fichiers CSV bruts contenant du trafic IoT
- Résumer le trafic par (Date, SrcIP, DstIP)
- Consolider les statistiques globales par combinaison (SrcIP, DstIP)
- Exporter les données consolidées filtrées
- Recevoir une notification SNS lorsque
consolidated.csvest mis à jour
L’objectif : analyser le trafic IoT, détecter des anomalies et optimiser l’infrastructure de l’entreprise sans déployer un cluster permanent.
┌──────────────────────┐
│ UploadClient │ (Local / PC)
│ (Java + AWS SDK) │
└──────────┬───────────┘
│
S3 Upload │ SQS Message
▼
┌──────────────────┐
│ S3 Bucket │
│ raw/*.csv │
└─────────┬────────┘
│
Trigger via SQS │
▼
┌──────────────────────────────┐
│ SummarizeWorkerAws (EC2) │
│ - Download raw CSV │
│ - Compute daily summary │
│ - Upload summary/*.csv │
│ - Send message to SQS │
└──────────────┬──────────────┘
│
▼
┌────────────────────────┐
│ SQS consolidate-queue │
└────────────┬──────────┘
│
▼
┌─────────────────────────────────────────┐
│ ConsolidatorWorkerAws (EC2) │
│ - Download summary │
│ - Merge into consolidated.csv │
│ - Upload consolidated/consolidated.csv │
│ - Publish SNS alert │
└───────────────────┬─────────────────────┘
│
▼
┌──────────────┐
│ SNS Topic │
│ (email alert)│
└──────────────┘
▼
(Local)
┌────────────────────────────────┐
│ ExportClient (Java) │
│ - Download consolidated.csv │
│ - Filter by (SrcIP, DstIP) │
│ - Export export.csv │
└────────────────────────────────┘
awsProject/
├── upload-client/
├── summarize-worker/
├── consolidator-worker/
├── export-client/
├── jars/ ← JAR finaux pour EC2
├── README.md
- Java 17
- Maven 3.8+
- AWS CLI
- 1 instance EC2
- 1 bucket S3
- 2 files SQS :
- summarize-queue
- consolidate-queue
- 1 SNS Topic : iot-alerts-topic
- s3:GetObject, s3:PutObject
- sqs:ReceiveMessage, sqs:DeleteMessage, sqs:SendMessage
- sns:Publish
Dans chaque module :
cd module-name
mvn clean compilecd summarize-worker
mvn clean packageProduit :
target/summarize-worker-1.0-SNAPSHOT-jar-with-dependencies.jar
cd consolidator-worker
mvn clean packageProduit :
target/consolidator-worker-1.0-SNAPSHOT-jar-with-dependencies.jar
Déplacez-les dans :
awsProject/jars/
sudo dnf install java-17-amazon-corretto
sudo dnf install java-17-amazon-corretto-develTransférer les JAR
Avec WinSCP / FileZilla / SFTP dans :
~/apps/
cd ~/apps
java -jar summarize-worker-1.0-SNAPSHOT-jar-with-dependencies.jarDans une deuxième session SSH :
cd ~/apps
java -jar consolidator-worker-1.0-SNAPSHOT-jar-with-dependencies.jarLes deux tournent en boucle, traitent SQS et mettent à jour S3.
mvn exec:java \
-Dexec.mainClass="com.iot.project.UploadClient" \
-Dexec.args="data-20221207.csv iot-traffic-aymane https://sqs.eu-west-3.amazonaws.com/.../summarize-queue"Date,SrcIP,DstIP,TotalFlowDuration,TotalFwdPkt
SrcIP,DstIP,Count,MeanFlowDuration,StdFlowDuration,MeanFwdPkt,StdFwdPkt
Lors de la mise à jour du fichier consolidé :
- Le ConsolidatorWorkerAws publie un message SNS.
- Tous les abonnés du Topic (email/SMS) reçoivent une alerte.
Pour filtrer une paire (SrcIP, DstIP) :
mvn exec:java \
-Dexec.mainClass="com.iot.project.ExportClient" \
-Dexec.args="iot-traffic-aymane consolidated/consolidated.csv 192.168.1.10 8.8.8.8"Produit :
export.csv
- Lancer les 2 workers EC2
- Exécuter UploadClient
- SummarizeWorker → écrit dans
S3/summaries - Message envoyé vers consolidate-queue
- ConsolidatorWorker → génère
consolidated.csv - SNS → email reçu
- ExportClient → produit un fichier
export.csvfiltré