Python Lambda nie wykrył problemu z takim plikiem lub katalogiem
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
Uruchomienie jako Lambda to nie to samo, co uruchomienie na komputerze deweloperskim. Jeśli chcesz przeczytać config - masz kilka opcji:
- Zmienne Env
- Uplaod swój plik konfiguracyjny do s3 i przeczytaj go stamtąd
- Użyj magazynu parametrów AWS i przeczytaj konfigurację z tego miejsca,
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
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)