Open sylvainbeo opened 1 year ago
Bonjour sylvainbeo,
En effet, les informations sur le stockages s3 sont fournies à la librairie à l'aide de variables d'environnement. Les variables sont les suivantes:
ROK4_S3_URL
ROK4_S3_KEY
ROK4_S3_SECRETKEY
La fonction from_descriptor
est compatible avec ce type de type de stockage.
Le chemin du descripteur stocké sur un bucket s3 sera alors de la forme s3://<bucket_name>/<object_name>
.
En attendant que la documentation générale de la librairie soit améliorée, la documentation développeur de la classe rok4.Storage fournit des informations supplémentaires sur les différentes formats de stockage supportés.
C'est cette classe Storage seule qui se charge de gérer ces formats, à la demande des autres classes qui n'ont aucune visibilité sur cette information. Le but est bien de minimiser mles adaptations de code en cas de changement de type de stockage.
@XavDmz Merci pour ces infos.
J'ai paramétré les 3 variables ROK4_S3_URL
, ROK4_S3_KEY
, ROK4_S3_SECRETKEY
.
Quand je fais appel à :
pyramid_descriptor = Pyramid.from_descriptor('s3://pyramids@172.17.0.2:9000/ALTI.json')
# ou bien
pyramid_descriptor = Pyramid.from_descriptor('s3://pyramids/ALTI.json')
J'ai l'erreur :
rok4.Exceptions.StorageError: Issue occured using a S3 storage : An error occurred (NoSuchBucket) when calling the GetObject operation: The specified bucket does not exist
Comme cité plus haut, j'utilise le docker contenant un minio et des pyramides déjà créées.
Le bucket pyramids est bien présent.
(A priori l'accès au S3 se fait bien, car avec des KEY et SECRET_KEY invalides, j'ai le bon message d'erreur).
Je ne suis pas très familier avec le stockage S3. Je suis preneur de toute infos.
Merci
@XavDmz Re, J'ai l'impression qu'il y a un petit bug dans la classe Storage.py
Le code ne devrait-il pas être :
data = s3_client.get_object(
Bucket=tray_name,
Key=base_name,
)['Body'].read()
Ah mais en fait, je vois que dans la 1.6.0 il n'y a plus ce bug...comment se fait-il que le master l'ait toujours ?
Je ne suis pas non plus très familier du stockage s3. Pas encore. Du coup je suis aps sûr que j'aurais pu fournir des informations si l'erreur venait de ce dernier. (Pas rapidement en tout cas.)
Au sujet du bug de la classe Storage, visiblement la branche master est toujours sur la version 1.0.1. Je ne sais plus pourquoi les versions plus récentes ne sont disponibles que sur la branche develop.
Ok. Merci pour les précisions. Je testais avec la version 14.4. Je suis passé à la version 1.6.0, et ça résoud le bug.
A priori, la connexion se fait bien. J'ai aucune tuile retournée pour le moment, mais je pense que c'est parce que je n'interroge pas encore les bonnes données.
@XavDmz Je suis arrivé au bout de mon expérimentation avec succès.
A partir du RGEALTI, j'ai pu recréer un pyramide ROK4 sur un serveur S3, et utiliser la lib Python pour l'interroger.
Je pourrais en faire un tutoriel. Est-ce qu'une contribution de ma part serait souhaitable ? Si oui, à quel endroit ?
Merci
Désolé pour le délai, j'étais absent.
@XavDmz Je suis arrivé au bout de mon expérimentation avec succès.
A partir du RGEALTI, j'ai pu recréer un pyramide ROK4 sur un serveur S3, et utiliser la lib Python pour l'interroger.
C'est une bonne nouvelle.
Je pourrais en faire un tutoriel. Est-ce qu'une contribution de ma part serait souhaitable ?
Je pense que les contributions sont bienvenue, et que le projet est ouvert dans cet esprit.
Si oui, à quel endroit ?
D'après les infos que j'ai eu en interne, ce serait au format markdown au sein du projet rok4/rok4.github.io. Il faudrait y ajouter une section dédiée pour les tutoriels et exemples de bout en bout.
J'en déduit qu'il faudrait au moins une page docs/tutorials.md
, elle même référencée dans docs/index.md
Par contre je suis pas sûr qu'une telle page dédiée. Peut-être ajouter un dossier dépendant docs/tutorials/
avec un fichier markdown par tutoriel ou lot de tutoriels serait plus lisible à long terme ?
@rok4/rok4-ign-team Comment voyez vous le format ? Je pourrais créer la structure une fois qu'elle sera définie.
Bonjour,
J'utilise la librairie ROK4 dans le cadre d'un projet IGN. Jusqu'à présent, les tests ont été fait avec un mode FILE pour accéder aux pyramides ROK4.
Dans le code je définis le TMS
et j'initialise le descripteur :
Aucun soucis, ça marche parfaitement (vu avec @Dolite ).
Je souhaite tester le même code mais avec un pyramide stockée dans un S3. Je me suis créé en local une configuration Minio à partir de https://hub.docker.com/r/rok4/dataset.
J'ai généré une key et une secretkey.
Comment dois-je adapter mon code pour aller chercher les infos dans ce stockage ? Est-ce que je dois continuer d'utiliser la fonction from_descriptor ?
J'ai cru voir qu'il fallait éventuellement préciser (?) :
Merci