Python Lambda ningún archivo o directorio encontrado problema de tiempo de ejecución

Aug 19 2020

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

3 balderman Aug 19 2020 at 13:56

Ejecutar como Lambda no es lo mismo que ejecutarse en su máquina de desarrollo. Si desea leer la configuración, tiene varias opciones:

  1. Variables env
  2. Sube tu archivo de configuración a s3 y léelo desde allí
  3. Utilice el almacén de parámetros de AWS y lea la configuración desde allí,
TraychoIvanov Aug 20 2020 at 21:00

Si necesita ejecutarlo localmente, puede verificar aws sam cli.

https://github.com/awslabs/aws-sam-cli

Requiere que defina una template.ymlformación de nube predeterminada con la configuración de su función lambda.

Al final solo ejecuta

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

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)