Python Lambda aucun fichier ou répertoire n'a trouvé problème d'exécution
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
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:
- Variables Env
- Téléchargez votre fichier de configuration vers s3 et lisez-le à partir de là
- Utilisez le magasin de paramètres AWS et lisez la configuration à partir de là,
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.yml
avec la configuration de votre fonction lambda.
À la fin, exécutez simplement
sam local invoke -e lambda-event.json
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)