#docker #aws-lambda #file-permissions
#docker #aws-lambda #файл-разрешения
Вопрос:
Я развертываю контейнер Docker в AWS Lambda, следуя https://aws.amazon.com/blogs/aws/new-for-aws-lambda-container-image-support/
Я сталкиваюсь с каким-то сбоем в разрешениях на доступ к файлам.
Если образ Docker развернут на AWS, мой обработчик python не может получить доступ /home/app
(но он МОЖЕТ получить доступ /tmp
).
На моем локальном компьютере оба пути работают нормально.
Dockerfile
ENTRYPOINT [ "/entry.sh" ]
CMD [ "app.handler" ]
entry.sh
#!/bin/sh
echo foo > /home/app/f
exec python -m awslambdaric $1
app.py
def handler(event, context):
with open('/home/app/f', 'r') as file:
data = file.read()
return { "response" : data }
Развернутый в AWS Lambda, он возвращает:
{
"errorMessage": "[Errno 2] No such file or directory: '/home/app/f'",
"errorType": "FileNotFoundError",
"stackTrace": [
" File "/home/app/app.py", line 25, in handlern with open('/home/app/f', 'r') as file:n"
]
}
Изменение /home/app
на /tmp
исправление.
Есть ли какой-либо способ снять это ограничение?
RUN mkdir -p /home/app
RUN chmod a rwx /home/app
^ chmod это не исправляет.
PS Интересно, должен ли я подать это как ошибку. Как правильно сообщить об этом инженеру Amazon, ответственному за контейнерные лямбды?
Ответ №1:
Традиционно у Lambda всегда был только каталог /tmp (512 мб) для операций rw. Когда вы запускаете код на своем локальном хосте, у вас есть разрешения на использование каталога /home/app .