Python Lambda kein solches Datei- oder Verzeichnisproblem zur Laufzeit gefunden
Ich habe eine Lambda-Funktion, die einen Fehler zurückgibt, dass keine solche Datei oder kein solches Verzeichnis gefunden wurde.
Das Bild unten zeigt, dass die Dateistruktur in meinem Lambda vorhanden ist und dass das gesuchte Verzeichnis vorhanden ist.
Meine aktuelle Dateistruktur in der Lambda-Funktion
Fehlermeldung, die ich erhalte:
[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")
Unten ist der lambda_handler:
import os
import json
def lambda_handler(event, context):
print(event)
os.chdir("config")
loginInfo = json.load(open('secrets.json'))
return loginInfo
Der Grund, warum ich das Verzeichnis in config ändere, ist, dass ich auf meine Datei secret.json zugreifen kann.
Bitte lassen Sie mich wissen, ob dies für die Reproduktion ausreichend detailliert ist.
Antworten
Das Ausführen als Lambda ist nicht dasselbe wie das Ausführen auf Ihrem Entwicklungscomputer. Wenn Sie config lesen möchten, haben Sie mehrere Möglichkeiten:
- Env-Variablen
- Laden Sie Ihre Konfigurationsdatei auf s3 hoch und lesen Sie sie von dort aus
- Verwenden Sie den AWS-Parameterspeicher und lesen Sie die Konfiguration von dort aus.
Wenn Sie es lokal ausführen müssen, können Sie dies überprüfen aws sam cli.
https://github.com/awslabs/aws-sam-cli
Sie müssen eine Standard-Cloudformation template.ymlmit der Einrichtung Ihrer Lambda-Funktion definieren.
Am Ende einfach ausführen
sam local invoke -e lambda-event.json
Ich ignoriere die hier veröffentlichten Details - ich bin sicher, dass sie wertvoll sind - und werde darauf eingehen und erwähnen, dass es sich lohnt, in eine zukunftssichere Richtlinie zur Verwaltung von Geheimnissen zu investieren, da Sie mit Geheimnissen umgehen.
https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno
Verwenden von AWS Secrets Manager mit Python (Lambda Console)