Variabili di Ambiente in QGIS

Ho la necessità di lavorare con file privati presenti nei bucket S3 (OVH), quindi dovrei settare le variabili di ambiente:

AWS_ACCESS_KEY_ID=la_tua_access_key
AWS_SECRET_ACCESS_KEY=la_tua_secret_key
AWS_S3_ENDPOINT=s3.gra.io.cloud.ovh.net

se li setto da Impostazioni|Opzioni|Sistema|Ambiente in QGIS:

riavvio come consigliato, e cerco di caricare una tif:

ricevo un errore, vedi screenshot di sopra.

Se invece lancio QGIS usando questo script bat:

@echo off
set AWS_ACCESS_KEY_ID=la_tua_access_key
set AWS_SECRET_ACCESS_KEY=la_tua_secret_key
set AWS_S3_ENDPOINT=s3.gra.io.cloud.ovh.net
start "" "C:\Program Files\QGIS 3.36.0\bin\qgis.bat"

funziona!!!

Altra osservazione:
Se salvo il progetto dove funziona il caricamento della tiff e rilanciassi QGIS con lo stesso script bat, il file di progetto qgs non funziona più, ovvero non trova più la sorgente dati.

Il mio sistema:

QGIS version3.40.5-Bratislava
QGIS code revision8d6d1b5448
 
Libraries
Qt version5.15.13
Python version3.12.9 (Compiled)
3.12.10 (Running)
GDAL version3.10.2 (Compiled)
3.10.3 (Running)
PROJ version9.6.0
EPSG Registry database versionv12.004 (2025-03-02)
GEOS version3.13.1-CAPI-1.19.2
SQLite version3.46.1
PDAL version2.8.3
PostgreSQL client versionunknown
SpatiaLite version5.1.0
QWT version6.3.0
QScintilla2 version2.14.1
OS versionWindows 10 Version 2009
 
Active Python plugins
DataPlotly4.2.0
italy_inspire_cadastre_downloader0.1
quick_map_services0.21.1
db_manager0.1.20
grassprovider2.12.99
MetaSearch0.3.6
processing2.12.99

Grazie a chi mi risponderà

Saluti

Ciao Salvatore,
non ho mai usato risorse cloud S3.

Mi pare che sia possibile aggiungere risorse da cloud S3 in vari modi: per esempio tramite il Browser, creando una connessione “Cloud” e tramite il Data Source Manager, impostando come tipo sorgente il protocollo “https, cloud, etc.”. In entrambi i casi è possibile impostare le opzioni di configurazione.
A quanto ho potuto leggere in alcuni report, dovrebbe funzionare anche impostando le opzioni di configurazione tramite variabili d’ambiente direttamente in QGIS.
Ma nel tuo caso sembrerebbe non funzionare.

Nel tuo messaggio comunque vedo che ci sono delle incongruenze: lo script lancia QGIS 3.36.0, ma la versione di QGIS indicata è 3.40.5. Sei sicuro di impostare le variabili d’ambiente per l’utente / versione di QGIS corrette? Hai verificato se il problema si presenta anche usando QGIS 3.40.9 con GDAL/OGR 3.11.3?

Dopo che hai impostato le variabili d’ambiente in QGIS e riavviato QGIS, le seguenti istruzioni eseguite nella console Python restituisco i valori delle opzioni di configurazione?

from osgeo import gdal
print(os.environ["AWS_ACCESS_KEY_ID"])
print(os.environ["AWS_SECRET_ACCESS_KEY"])
print(os.environ["AWS_S3_ENDPOINT"])
print(gdal.GetConfigOption('AWS_ACCESS_KEY_ID'))
print(gdal.GetConfigOption('AWS_SECRET_ACCESS_KEY'))
print(gdal.GetConfigOption('AWS_S3_ENDPOINT'))

Andrea

1 Like

Buongiorno

è solo un errore di copia e incolla, in realtà lancio:

set AWS_ACCESS_KEY_ID=la_tua_access_key
set AWS_SECRET_ACCESS_KEY=la_tua_secret_key
set AWS_S3_ENDPOINT=s3.gra.io.cloud.ovh.net
"C:\OSGeo4W\bin\qgis-ltr-bin.exe"

quindi è congruente.

questo è l’output

però noto che alla riga 11 e 17 (AWS_SECRET_ACCESS_KEY) stampa la AWS_ACCESS_KEY_ID come se fossero invertite!!!

Ho invertito i valori nelle variabili di ambiente ma non cambia nulla :frowning:
saluti

Nelle impostazioni di QGIS hai indicato il nome errato della variabile d’ambiente:

dovrebbe essere AWS_ACCESS_KEY_ID.

Anche sistemando la chiave, non funziona
noto solo che AWS_SECRET_ACCESS_KEY lo dà in rosso

saluti

Chiaramente non poteva funzionare se le variabili non avevano il nome corretto.

Ora che hai sistemato il nome delle variabili, dovresti verificare che il loro valore sia corretto e uguale a quello che utilizzi nello file bat (visto che era errato il nome della variabile, c’è la possibilità che sia errato uno o più valori).

Il colore non c’entra: dipende dal fatto che nella console di Python i numeri e le stringhe che iniziano con un numero vengono visualizzate di colore rosso.

Purtroppo non posso esserti di ulteriore aiuto perché non ho la possibilità di provare a connettermi al server S3.

Andrea

verificato, tutto corretto.
Ma non riesco a trovare nessun modo per farlo funzionare aggiungendo le variabili di ambiente in QGIS, funziona solo se avvio QGIS tramite lo script bat.

Pazienza

grazie mille per il tuo tempo @agiudiceandrea

saluti

Caro @pigreco,
a me ha funzionato subito.

Ma ho aggiunto un altro parametro necessario nel “nostro” caso: AWS_REGION

Fammi sapere

1 Like

Ciao @andyborruso

Funzionaaaaaaa!!!

Grazie mille

saluti

PS: funziona anche da Browser, fantastico!

1 Like

Rimane il mistero sul perché impostando AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_S3_ENDPOINT nel file bat funziona, mentre impostandole in QGIS non funziona e bisogna aggiungere anche AWS_REGION affinché funzioni.

Bisognerebbe chiederlo a Nyall, lui ha implementato il Cloud AWS S3

saluti

Ciao @andyborruso,
anche tu hai verificato che, se impostate nel file .bat, sono sufficienti solo le 3 variabili AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY e AWS_S3_ENDPOINT per far funzionare la connessione, mentre, se impostate in QGIS, è necessario aggiungere anche la variabile AWS_REGION per far funzionare la connessione?

A presto.

Andrea

P.S.

@pigreco In realtà, per come stai effettuando tu il collegamento (tramite Data Source Manager → Raster → File), l’implementazione dovrebbe essere direttamente quella normale di GDAL GDAL Virtual File Systems (compressed, network hosted, etc...): /vsimem, /vsizip, /vsitar, /vsicurl, ... — GDAL documentation.

1 Like

Queste variabili consentono di configurare Cloud AWS S3 in sola lettura, sarebbe utile poter usarlo al contrario, ovvero in scrittura, poter caricare con un semplice dragAndDrop i dati nel Cloud.

Ho fatto del ricerche on line ma credo non sia possibile farlo, soprattutto per questione di sicurezza.

saluti

È un peccato però che Cloud AWS S3 legga solo alcuni file, per esempio non legge i file di stile qml, rendendo meno utile l’uso di queste connessioni.

saluti