Python Lambda kein solches Datei- oder Verzeichnisproblem zur Laufzeit gefunden

Aug 19 2020

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

3 balderman Aug 19 2020 at 13:56

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:

  1. Env-Variablen
  2. Laden Sie Ihre Konfigurationsdatei auf s3 hoch und lesen Sie sie von dort aus
  3. Verwenden Sie den AWS-Parameterspeicher und lesen Sie die Konfiguration von dort aus.
TraychoIvanov Aug 20 2020 at 21:00

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

Markonick Aug 21 2020 at 23:49

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)