Python Lambda не обнаруживает такого файла или каталога проблема времени выполнения

Aug 19 2020

У меня есть лямбда-функция, которая возвращает ошибку о том, что такой файл или каталог не найден.

Для наглядности на изображении ниже показано, что в моей лямбде существует файловая структура, и ясно, что каталог, который я ищу, действительно существует.

Моя текущая файловая структура в лямбда-функции

Сообщение об ошибке, которое я получаю:

[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.

Пожалуйста, дайте мне знать, достаточно ли этой детали для воспроизведения.

Ответы

3 balderman Aug 19 2020 at 13:56

Запуск в качестве Lambda - это не то же самое, что запуск на вашем компьютере разработчика. Если вы хотите прочитать конфиг - у вас есть несколько вариантов:

  1. Переменные env
  2. Загрузите файл конфигурации в s3 и прочтите его оттуда
  3. Используйте хранилище параметров AWS и прочтите оттуда конфигурацию,
TraychoIvanov Aug 20 2020 at 21:00

Если вам нужно запустить его локально, вы можете проверить aws sam cli.

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

Для этого вам необходимо определить облачную информацию по умолчанию template.ymlс настройкой лямбда-функции.

В конце концов просто выполните

sam local invoke -e lambda-event.json

Markonick Aug 21 2020 at 23:49

Я игнорирую размещенные здесь подробности - я уверен, что они ценные - и собираюсь пойти по касательной и упомянуть, что, поскольку вы обрабатываете секреты, стоит инвестировать в политику управления секретами, защищенную в будущем.

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

Использование AWS Secrets Manager с Python (консоль Lambda)