Skip to content

feat(oe-s3): client S3-compatible minimal (SigV4) - #43

Merged
PhilippeVienne merged 1 commit into
devfrom
feat/oe-s3-client
Sep 25, 2026
Merged

PhilippeVienne merged 1 commit into
devfrom
feat/oe-s3-client

Conversation

@PhilippeVienne

Copy link
Copy Markdown
Contributor

Contexte

Préparation de l'étape 2b (docs/WEBUI.md §7, §15) : dépôt et relecture du journal d'audit sur un stockage objet auto-hébergé (MinIO, Garage, Ceph…) — jamais un service géré, même esprit souverain que oe-replicate (WebDAV, décision de l'association). Base dev, indépendante de #42.

Contenu

  • rusty-s3 (Sans-IO) construit et signe les requêtes SigV4 ; ce crate n'y adjoint que reqwest pour les envoyer, comme oe-replicate le fait déjà pour WebDAV — pas de dépendance au SDK AWS complet.
  • Style d'URL path (https://endpoint/bucket/clé), pas virtual-host : plus adapté à un déploiement auto-hébergé sans DNS/TLS générique par compartiment.
  • put(key, body) et get(key), suffisants pour la tranche suivante (ca-server y écrit son journal) et celle d'après (GET /api/v1/audit/search).

Pas encore câblé à ca-server ni ra-console : ce crate est autonome, la tranche suivante l'utilisera.

Limite du test, à signaler

Une image MinIO n'est pas accessible sur le registre Docker de cet environnement de développement (accès restreint aux images officielles library/*), donc pas de test contre un vrai service S3-compatible ici. Le test tourne contre un vrai serveur HTTP (axum) qui se comporte comme le ferait un service S3 pour PUT/GET, et vérifie au passage que les requêtes envoyées sont bien signées (paramètres X-Amz-*) — mais ne valide pas la compatibilité réelle avec MinIO/Garage/Ceph. À vérifier contre un vrai service avant un déploiement.

Vérifications

  • cargo fmt --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace : vert
  • cargo audit --ignore RUSTSEC-2023-0071 : rien à signaler

Nouveau crate, préparation de l'étape 2b (docs/WEBUI.md §7, §15) : dépôt et
relecture du journal d'audit sur un stockage objet **auto-hébergé**
(MinIO, Garage, Ceph…) — jamais un service géré (AWS ou équivalent), même
esprit souverain que oe-replicate (WebDAV), décision de l'association.

rusty-s3 (Sans-IO) construit et signe les requêtes SigV4 ; ce crate n'y
adjoint que reqwest pour les envoyer, comme oe-replicate le fait déjà pour
WebDAV — pas de dépendance au SDK AWS complet. Style d'URL path (pas
virtual-host), plus adapté à un déploiement auto-hébergé sans DNS/TLS
générique par compartiment.

put(key, body) et get(key) seulement pour l'instant (PUT/GET), suffisants
pour la tranche suivante (ca-server y écrit son journal) et celle d'après
(GET /api/v1/audit/search).

Pas encore câblé à ca-server ni ra-console : ce crate est autonome, la
tranche suivante l'utilisera.

Vérifications : cargo fmt --check, cargo clippy --workspace --all-targets,
cargo test --workspace, cargo audit. Testé contre un vrai serveur HTTP
(axum) qui se comporte comme un service S3-compatible pour PUT/GET — une
image MinIO n'est pas accessible sur le registre Docker de cet
environnement de développement (accès restreint aux images officielles),
donc pas de test contre un vrai MinIO ici ; le test vérifie au passage que
les requêtes envoyées sont bien signées (paramètres X-Amz-*).
@PhilippeVienne
PhilippeVienne merged commit a600350 into dev Sep 25, 2026
15 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant