Su Amazon Linux 2023 la scelta giusta per Boto3 dipende da un punto semplice: vuoi un’installazione di sistema per uno script locale, oppure un ambiente isolato per applicazioni e automazioni ripetibili. In entrambi i casi conviene partire da Python 3, verificare pip e poi installare Boto3 nel modo meno ambiguo possibile. Se salti questo controllo iniziale, il problema tipico non è Boto3 in sé: è avere più interpreter, più pip e import che puntano al posto sbagliato.
Amazon Linux 2023 è abbastanza pulito da evitare vecchie dipendenze di sistema, ma proprio per questo conviene essere disciplinati: controlla la versione di Python, usa un virtual environment quando serve, e tieni separati i pacchetti di sistema da quelli dell’applicazione. Per un host che fa anche altro, questa non è teoria: è il modo più rapido per evitare di rompere uno script che funzionava ieri.
Verifica dell’ambiente prima di installare
Prima di installare qualsiasi cosa, verifica quale Python è disponibile e quale pip verrà usato. È il controllo che evita il classico caso in cui pip install boto3 finisce su un interprete, mentre lo script gira con un altro.
Esegui questi comandi:
python3 --version
which python3
python3 -m pip --versionIl risultato atteso è semplice: un Python 3.x presente, un percorso coerente per python3 e un pip associato a quello stesso interprete. Se python3 -m pip non risponde, significa che il modulo pip non è installato o non è disponibile per quell’ambiente.
Se vuoi una verifica ancora più concreta, prova a vedere se Boto3 è già presente:
python3 -c "import boto3; print(boto3.__version__)"Se il modulo manca, l’errore sarà un ModuleNotFoundError. Se invece stampa una versione, Boto3 è già installato e il problema, eventualmente, è altrove: path, virtualenv, permessi o versione sbagliata dell’interprete.
Metodo consigliato: virtual environment per applicazioni e script
Per tutto ciò che non è un test veloce, il metodo più pulito è un ambiente virtuale. Ti evita conflitti con librerie di sistema e rende ripetibile il deploy. Su Amazon Linux 2023 la sequenza è lineare.
Installa il supporto necessario se non è già presente:
sudo dnf install -y python3 python3-pipSe vuoi usare il modulo venv, crea una directory dedicata al progetto e attiva l’ambiente:
mkdir -p ~/progetti/test-boto3
cd ~/progetti/test-boto3
python3 -m venv .venv
source .venv/bin/activateA questo punto il prompt dovrebbe cambiare e which python dovrebbe puntare dentro .venv. È la conferma che i pacchetti installati da qui in poi resteranno isolati.
Installa Boto3 così:
python -m pip install --upgrade pip
python -m pip install boto3Usare python -m pip invece di chiamare pip direttamente riduce gli errori di contesto. Sembra un dettaglio, ma quando hai più versioni di Python installate è il dettaglio che salva tempo.
Verifica subito l’installazione:
python -c "import boto3; print(boto3.__version__)"
python -c "import botocore; print(botocore.__version__)"Se entrambi gli import funzionano, il pacchetto è pronto. Boto3 installa anche botocore, che è il pezzo operativo su cui si appoggia il client AWS.
Installazione di sistema: quando ha senso e quando no
Se stai facendo un server di utilità, uno script unico o un ambiente dove non vuoi gestire virtualenv, puoi installare Boto3 a livello di sistema. È più veloce, ma meno pulito. Su un host condiviso o su una macchina che ospita più applicazioni, lo considero una scelta di seconda linea.
La procedura è questa:
sudo dnf install -y python3 python3-pip
sudo python3 -m pip install boto3La differenza rispetto al virtualenv è nel rischio operativo: se aggiorni Boto3 globalmente, potresti cambiare il comportamento di altri script che dipendono da una versione specifica di botocore. Per questo, se usi l’installazione globale, annota la versione presente e tienila sotto controllo.
Controlla cosa è stato installato:
python3 -m pip show boto3
python3 -c "import boto3; print(boto3.__file__)"Il primo comando ti dice versione e dipendenze; il secondo ti mostra il file reale importato. È utile quando sospetti che stia venendo caricato un modulo da un percorso inatteso.
Dipendenze e versioni: cosa aspettarsi davvero
Boto3 non è un pacchetto monolitico: si porta dietro botocore, s3transfer e jmespath. Queste dipendenze vengono risolte automaticamente da pip, ma possono generare problemi se il sistema ha vincoli particolari o se stai forzando una versione troppo vecchia di Python.
Su Amazon Linux 2023 il punto importante è che Python 3 sia recente abbastanza da supportare le versioni correnti del pacchetto. Se il tuo host è stato irrigidito con policy aziendali o repository limitati, la verifica non va data per scontata: controlla la versione di Python prima di cercare colpe in Boto3.
Se l’installazione fallisce, guarda l’errore completo. Gli scenari più comuni sono:
- assenza di
pipper quell’interprete; - connettività verso PyPI limitata da proxy, firewall o DNS;
- permessi insufficienti su installazione globale;
- conflitto con pacchetti già presenti nel sistema.
In ambienti aziendali il problema più frequente non è tecnico ma di rete: pip non riesce a raggiungere il repository. In quel caso la diagnosi va fatta con un test esplicito verso l’endpoint usato dal proxy o dal mirror interno, non con tentativi ripetuti di installazione.
Test minimo con AWS SDK
Una volta installato Boto3, il test utile non è solo l’import: è verificare che il client riesca a costruire un oggetto valido e, se hai credenziali disponibili, che possa parlare con AWS. Senza questo passaggio rischi di scoprire il problema nel momento sbagliato, cioè quando lo script è già in produzione.
Per un controllo locale senza chiamate reali, basta questo snippet:
python -c "import boto3; s3 = boto3.client('s3'); print(s3)"Se vuoi una verifica più concreta e hai credenziali configurate, puoi testare una chiamata semplice come la lista dei bucket S3:
python - <<'PY'
import boto3
s3 = boto3.client('s3')
print(s3.list_buckets())
PYSe la chiamata fallisce, non significa che Boto3 sia installato male. Potrebbe essere un problema di credenziali, regione, policy IAM o endpoint di rete. Il messaggio di errore va letto con attenzione perché spesso distingue bene tra import, autenticazione e autorizzazione.
Credenziali: non confondere installazione e accesso
Installare Boto3 non crea credenziali e non configura l’accesso ad AWS. Questo equivoco è comune: il pacchetto è pronto, ma il client fallisce perché non trova un profilo, una variabile d’ambiente o un ruolo IAM valido.
Per capire se il problema è lì, controlla il profilo attivo e la presenza di variabili ambientali:
env | grep '^AWS_'
aws sts get-caller-identityIl primo comando mostra se stai usando variabili esplicite; il secondo, se hai anche la CLI installata, verifica rapidamente l’identità correntemente risolta. Se aws sts get-caller-identity fallisce, Boto3 molto probabilmente fallirà nello stesso modo, salvo differenze di configurazione locale.
Se sei su EC2 o su un ambiente con ruolo IAM assegnato, il controllo da fare è più semplice: verifica che l’istanza veda il metadata service e che il ruolo sia effettivamente associato. In caso di errori di autorizzazione, il fix è nella policy, non nel pacchetto Python.
Aggiornamento e gestione versione
Quando Boto3 serve in produzione, non basta installarlo: va anche mantenuto. Le versioni di boto3 e botocore evolvono insieme e, se tieni il pacchetto fermo per troppo tempo, rischi di trovarti con API o comportamenti non allineati alle esigenze del progetto.
Per vedere cosa hai installato e quando è stato messo, usa:
python -m pip show boto3 botocore s3transfer jmespathSe devi aggiornare un ambiente virtuale, il ciclo corretto è semplice e reversibile: aggiorni, testi, e se qualcosa cambia in modo indesiderato torni alla versione precedente usando il lock implicito del tuo deploy o reinstallando la release nota buona.
Per evitare sorprese, in progetti seri conviene fissare le versioni in un file come requirements.txt:
boto3==1.34.0Non è necessario indovinare una versione specifica qui: il punto è che una versione fissata rende ripetibile la build. Senza vincolo, il giorno in cui pip risolve una release diversa, il comportamento può cambiare senza che tu abbia toccato il codice.
Errori tipici e lettura rapida del sintomo
Se import boto3 fallisce subito, il problema è quasi sempre uno tra questi: ambiente sbagliato, installazione mancante o nome modulo non risolto nel path corrente. Se invece l’import funziona ma la chiamata AWS no, il guasto è più a valle: credenziali, policy, rete o endpoint.
Un errore come No module named pip indica che devi installare il supporto pip per quell’interprete. Un errore come AccessDenied riguarda IAM. Un errore di timeout verso AWS, invece, ti porta a controllare DNS, proxy, security group, NACL o uscita internet dell’istanza.
Quando il contesto è un host produttivo, la regola pratica è non cambiare tre cose insieme. Prima osservi: versione di Python, percorso del modulo, output di import, credenziali. Poi applichi la correzione minima. È il modo più rapido per evitare di trasformare un semplice problema di installazione in un incidente di configurazione più grande.
Procedura sintetica consigliata
Se vuoi una sequenza asciutta da incollare in una shell su Amazon Linux 2023, questa è la traccia più pulita per un progetto nuovo:
sudo dnf install -y python3 python3-pip
mkdir -p ~/progetti/test-boto3
cd ~/progetti/test-boto3
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install boto3
python -c "import boto3; print(boto3.__version__)"Se invece vuoi un’installazione globale per uno script rapido, la forma compatta è questa:
sudo dnf install -y python3 python3-pip
sudo python3 -m pip install boto3
python3 -c "import boto3; print(boto3.__version__)"La differenza operativa è tutta qui: il virtualenv isola, l’installazione globale semplifica. Per un server che deve reggere nel tempo, il primo approccio resta quello più sano.
Chiusura operativa
Installare Boto3 su Amazon Linux 2023 non è complicato, ma va fatto con ordine: verifica Python, scegli il contesto giusto, installa con python -m pip, controlla l’import e separa il tema del pacchetto da quello delle credenziali AWS. Se tieni questa sequenza, il margine di errore resta basso e la diagnosi, quando qualcosa non va, diventa molto più rapida.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.