Python Lambda nessun file o directory di questo tipo ha trovato problemi di runtime

Aug 19 2020

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

3 balderman Aug 19 2020 at 13:56

L'esecuzione come Lambda non è la stessa cosa che l'esecuzione sulla tua macchina di sviluppo. Se vuoi leggere config, hai diverse opzioni:

  1. Variabili Env
  2. Aggiorna il tuo file di configurazione a s3 e leggilo da lì
  3. Usa AWS parameter store e leggi la configurazione da lì,
TraychoIvanov Aug 20 2020 at 21:00

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.ymlcon l'impostazione della funzione lambda.

Alla fine basta eseguire

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

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)