Python Lambda ningún archivo o directorio encontrado problema de tiempo de ejecución
Tengo una función lambda que devuelve un error que indica que no se ha encontrado tal archivo o directorio.
Para que quede claro, la imagen a continuación muestra que la estructura del archivo existe en mi lambda y está claro que el directorio que estoy buscando existe.
Mi estructura de archivo actual en la función lambda
Mensaje de error que estoy recibiendo:
[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")
A continuación se muestra el lambda_handler:
import os
import json
def lambda_handler(event, context):
print(event)
os.chdir("config")
loginInfo = json.load(open('secrets.json'))
return loginInfo
La razón por la que cambio el directorio a config es para poder acceder a mi archivo secrets.json.
Por favor, avíseme si esto es suficiente detalle para reproducir.
Respuestas
Ejecutar como Lambda no es lo mismo que ejecutarse en su máquina de desarrollo. Si desea leer la configuración, tiene varias opciones:
- Variables env
- Sube tu archivo de configuración a s3 y léelo desde allí
- Utilice el almacén de parámetros de AWS y lea la configuración desde allí,
Si necesita ejecutarlo localmente, puede verificar aws sam cli
.
https://github.com/awslabs/aws-sam-cli
Requiere que defina una template.yml
formación de nube predeterminada con la configuración de su función lambda.
Al final solo ejecuta
sam local invoke -e lambda-event.json
Estoy ignorando los detalles publicados aquí, estoy seguro de que son valiosos, y voy a ir por la tangente y mencionar que, dado que está manejando secretos, vale la pena invertir en una política de administración de secretos a prueba de futuro.
https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno
Uso de AWS Secrets Manager con Python (consola Lambda)