Python Lambda aucun fichier ou répertoire n'a trouvé problème d'exécution

Aug 19 2020

J'ai une fonction lambda qui renvoie une erreur selon laquelle aucun fichier ou répertoire n'a été trouvé.

Pour être clair, l'image ci-dessous montre que la structure de fichiers existe dans mon lambda et il est clair que le répertoire que je recherche existe.

Ma structure de fichier actuelle dans la fonction lambda

Message d'erreur que je reçois:

[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")

Voici le 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 raison pour laquelle je change le répertoire en config est que je puisse accéder à mon fichier secrets.json.

Veuillez me faire savoir si cela est suffisamment détaillé pour être reproduit.

Réponses

3 balderman Aug 19 2020 at 13:56

L'exécution en tant que Lambda n'est pas la même chose que l'exécution sur votre machine de développement. Si vous voulez lire config - vous avez plusieurs options:

  1. Variables Env
  2. Téléchargez votre fichier de configuration vers s3 et lisez-le à partir de là
  3. Utilisez le magasin de paramètres AWS et lisez la configuration à partir de là,
TraychoIvanov Aug 20 2020 at 21:00

Si vous avez besoin de l'exécuter localement, vous pouvez vérifier aws sam cli.

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

Il vous oblige à définir une cloudformation par défaut template.ymlavec la configuration de votre fonction lambda.

À la fin, exécutez simplement

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

J'ignore les détails publiés ici - je suis sûr qu'ils sont précieux - et je vais aller dans une tangente et mentionner que puisque vous manipulez des secrets, il vaut la peine d'investir dans une politique de gestion des secrets à l'épreuve du futur.

https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno

Utilisation d'AWS Secrets Manager avec Python (console Lambda)