Python Lambda nessun file o directory di questo tipo ha trovato problemi di runtime
Ho una funzione lambda che restituisce un errore che non è stato trovato alcun file o directory di questo tipo.
Per essere chiari l'immagine qui sotto mostra la struttura del file esistente nel mio lambda ed è chiaro che la directory che sto cercando esiste.
La mia struttura di file corrente nella funzione lambda
Messaggio di errore che ricevo:
[ERROR] FileNotFoundError: [Errno 2] No such file or directory: 'config'
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 23, in lambda_handler
os.chdir("config")
Di seguito è il lambda_handler:
import os
import json
def lambda_handler(event, context):
print(event)
os.chdir("config")
loginInfo = json.load(open('secrets.json'))
return loginInfo
Il motivo per cui sto cambiando la directory in config è per poter accedere al mio file secrets.json.
Per favore fatemi sapere se questo dettaglio è sufficiente per riprodurlo.
Risposte
L'esecuzione come Lambda non è la stessa cosa che l'esecuzione sulla tua macchina di sviluppo. Se vuoi leggere config, hai diverse opzioni:
- Variabili Env
- Aggiorna il tuo file di configurazione a s3 e leggilo da lì
- Usa AWS parameter store e leggi la configurazione da lì,
Se hai bisogno di eseguirlo localmente potresti controllare aws sam cli
.
https://github.com/awslabs/aws-sam-cli
Richiede la definizione di una cloudformation predefinita template.yml
con l'impostazione della funzione lambda.
Alla fine basta eseguire
sam local invoke -e lambda-event.json
Sto ignorando i dettagli pubblicati qui - sono sicuro che siano preziosi - e andrò su una tangente e menzionerò che dal momento che stai gestendo segreti, vale la pena investire in una futura politica di gestione dei segreti a prova.
https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno
Utilizzo di AWS Secrets Manager con Python (Console Lambda)