Python Lambda не обнаруживает такого файла или каталога проблема времени выполнения
У меня есть лямбда-функция, которая возвращает ошибку о том, что такой файл или каталог не найден.
Для наглядности на изображении ниже показано, что в моей лямбде существует файловая структура, и ясно, что каталог, который я ищу, действительно существует.
Моя текущая файловая структура в лямбда-функции
Сообщение об ошибке, которое я получаю:
[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")
Ниже приведен lambda_handler:
import os
import json
def lambda_handler(event, context):
print(event)
os.chdir("config")
loginInfo = json.load(open('secrets.json'))
return loginInfo
Причина, по которой я меняю каталог на config, заключается в том, что я могу получить доступ к своему файлу secrets.json.
Пожалуйста, дайте мне знать, достаточно ли этой детали для воспроизведения.
Ответы
Запуск в качестве Lambda - это не то же самое, что запуск на вашем компьютере разработчика. Если вы хотите прочитать конфиг - у вас есть несколько вариантов:
- Переменные env
- Загрузите файл конфигурации в s3 и прочтите его оттуда
- Используйте хранилище параметров AWS и прочтите оттуда конфигурацию,
Если вам нужно запустить его локально, вы можете проверить aws sam cli
.
https://github.com/awslabs/aws-sam-cli
Для этого вам необходимо определить облачную информацию по умолчанию template.yml
с настройкой лямбда-функции.
В конце концов просто выполните
sam local invoke -e lambda-event.json
Я игнорирую размещенные здесь подробности - я уверен, что они ценные - и собираюсь пойти по касательной и упомянуть, что, поскольку вы обрабатываете секреты, стоит инвестировать в политику управления секретами, защищенную в будущем.
https://dev.to/dvddpl/where-do-you-keep-credentials-for-your-lambda-functions-5dno
Использование AWS Secrets Manager с Python (консоль Lambda)