AWS Lambda с Docker: ошибка файловой системы, доступной только для чтения при использовании библиотеки CrewAIPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AWS Lambda с Docker: ошибка файловой системы, доступной только для чтения при использовании библиотеки CrewAI

Сообщение Anonymous »

Я работаю над функцией AWS Lambda с использованием Docker и сталкиваюсь с ошибкой файловой системы, доступной только для чтения, при попытке использовать библиотеку CrewAI, которая использует embedchain. Моя цель — обеспечить, чтобы все операции записи направлялись в каталог /tmp, поскольку это единственный каталог, доступный для записи в Lambda.

Код: Выделить всё

FROM public.ecr.aws/lambda/python:3.12

RUN microdnf install -y gcc gcc-c++

COPY requirements.txt ${LAMBDA_TASK_ROOT}
RUN pip install -r requirements.txt

COPY .env ${LAMBDA_TASK_ROOT}

COPY *.py ${LAMBDA_TASK_ROOT}

CMD [ "app.handler" ]
Обработчик лямбда-выражений (app.py):

Код: Выделить всё

import os
from dotenv import load_dotenv

load_dotenv()

# Ensure configuration directories use /tmp
os.environ["CONFIG_DIR"] = "/tmp/config_dir"

os.makedirs(os.environ["CONFIG_DIR"], exist_ok=True)

def handler(event, context):
# INvoke the crew
return {
'statusCode': 200,
'body': 'Hello from Lambda!'
}

Инициализация CrewAI:
Я пытался наследовать и принудительно перенаправить в папку /tmp, но это тоже не сработало.

Код: Выделить всё

from crewai import Crew

# Custom CrewAI setup that uses /tmp for configuration
class MyCrewApp(Crew):
def __init__(self):
config_dir = os.getenv('CONFIG_DIR', '/tmp/config_dir')
os.makedirs(config_dir, exist_ok=True)
super().__init__(config_dir=config_dir)

Сообщение об ошибке:
Когда я развертываю и вызываю функцию Lambda, я получаю следующую ошибку

Код: Выделить всё

{
"errorMessage": "[Errno 30] Read-only file system: '/home/sbx_user1051'",
"errorType": "OSError",
"requestId": "",
"stackTrace": [
"  File \"/var/lang/lib/python3.12/importlib/__init__.py\", line 90, in import_module\n    return _bootstrap._gcd_import(name[level:], package, level)\n",
"  File \"\", line 1387, in _gcd_import\n",
"  File \"\", line 1360, in _find_and_load\n",
"  File \"\", line 1331, in _find_and_load_unlocked\n",
"  File \"\", line 935, in _load_unlocked\n",
"  File \"\", line 995, in exec_module\n",
"  File \"\", line 488, in _call_with_frames_removed\n",
"  File \"/var/task/app.py\", line 3, in \n    from crew import PTECrew\n",
"  File \"/var/task/crew.py\", line 1, in \n    from crewai import Crew\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/__init__.py\", line 1, in \n    from crewai.agent import Agent\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/agent.py\", line 23, in \n    from crewai.agents import CacheHandler, CrewAgentExecutor, CrewAgentParser, ToolsHandler\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/agents/__init__.py\", line 2, in \n    from .executor import CrewAgentExecutor\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/agents/executor.py\", line 16, in \n    from crewai.memory.entity.entity_memory_item import EntityMemoryItem\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/memory/__init__.py\", line 1, in \n    from .entity.entity_memory import EntityMemory\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/memory/entity/entity_memory.py\", line 3, in \n    from crewai.memory.storage.rag_storage import RAGStorage\n",
"  File \"/var/lang/lib/python3.12/site-packages/crewai/memory/storage/rag_storage.py\", line 7, in \n    from embedchain import App\n",
"  File \"/var/lang/lib/python3.12/site-packages/embedchain/__init__.py\", line 10, in \n    Client.setup()\n",
"  File \"/var/lang/lib/python3.12/site-packages/embedchain/client.py\", line 44, in setup\n    os.makedirs(CONFIG_DIR, exist_ok=True)\n",
"  File \"\", line 215, in makedirs\n",
"  File \"\", line 225, in makedirs\n"
]
}

Я убедился, что для CONFIG_DIR установлено значение /tmp/config_dir и что каталог создается, если он не существует. Несмотря на эти изменения, ошибка сохраняется, что указывает на попытки записи в файловую систему, доступную только для чтения. Что мне не хватает? Как я могу гарантировать, что все операции записи направляются в каталог /tmp в среде AWS Lambda с помощью Docker?
ПРИМЕЧАНИЕ* ЭТО РАБОТАЕТ локально

Подробнее здесь: https://stackoverflow.com/questions/785 ... ewai-libra
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»