Python Lambda nie wykrył problemu z takim plikiem lub katalogiem

Aug 19 2020

Mam funkcję lambda, która zwraca błąd, że nie znaleziono takiego pliku lub katalogu.

Aby było jasne, poniższy obrazek pokazuje, że struktura plików istnieje w mojej lambdzie i jest jasne, że katalog, którego szukam, istnieje.

Moja aktualna struktura pliku w funkcji lambda

Komunikat o błędzie, który otrzymuję:

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

Poniżej znajduje się lambda_handler:

import os
import json

def lambda_handler(event, context):
    
    
    print(event)
    os.chdir("config")
    loginInfo = json.load(open('secrets.json'))
    return loginInfo

Powodem, dla którego zmieniam katalog na config, jest to, że mogę uzyskać dostęp do mojego pliku secrets.json.

Daj mi znać, jeśli te szczegóły są wystarczające do odtworzenia.

Odpowiedzi

3 balderman Aug 19 2020 at 13:56

Uruchomienie jako Lambda to nie to samo, co uruchomienie na komputerze deweloperskim. Jeśli chcesz przeczytać config - masz kilka opcji:

  1. Zmienne Env
  2. Uplaod swój plik konfiguracyjny do s3 i przeczytaj go stamtąd
  3. Użyj magazynu parametrów AWS i przeczytaj konfigurację z tego miejsca,
TraychoIvanov Aug 20 2020 at 21:00

Jeśli chcesz go uruchomić lokalnie, możesz to sprawdzić aws sam cli.

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

Wymaga zdefiniowania domyślnej cloudformation template.ymlz ustawieniem funkcji lambda.

W końcu po prostu wykonaj

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

Ignoruję zamieszczone tutaj szczegóły - jestem pewien, że są cenne - i zamierzam pójść na stycznie i wspomnieć, że skoro masz do czynienia z tajemnicami, warto zainwestować w przyszłościową politykę zarządzania tajemnicami.

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

Używanie AWS Secrets Manager z Pythonem (konsola Lambda)