AWS Lambda с образом Docker: Runtime.InvalidEntrypointPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 AWS Lambda с образом Docker: Runtime.InvalidEntrypoint

Сообщение Anonymous »

У меня есть Dockerfile, который использует базовый образ от стороннего производителя, который использует FROM rockylinux:8 в качестве базового образа, и в настоящее время репозиторий создает образ, который используется в ECS. Я пытаюсь сделать этот контейнер работоспособным в лямбда-среде AWS, сохраняя при этом функциональность образа ECS.
Просматриваю требования (https://docs.aws.amazon.com/lambda/latest /dg/images-create.html#images-reqs), похоже, мне нужно установить API среды выполнения Lambda для Python в создаваемом мной образе, а затем обновить ENTRYPOINT. Я использовал пример Dockerfile в разделе «Создание изображения из альтернативного базового образа» (https://docs.aws.amazon.com/lambda/late ... ge-clients) в качестве ссылки. и изменил Dockerfile. Ниже представлена ​​сокращенная версия, которую сможет использовать каждый:

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

FROM rockylinux:8.9
RUN yum -y update && \
yum -y upgrade
HEALTHCHECK NONE
RUN yum install -y nano && \
yum install -y wget

RUN adduser worker
USER worker
ARG HOME='/home/worker'
WORKDIR $HOME
RUN wget https://repo.anaconda.com/miniconda/Miniconda3-py310_23.10.0-1-Linux-x86_64.sh -O miniconda.sh && \
bash miniconda.sh -b -p ${HOME}/miniconda && \
rm miniconda.sh && \
source ${HOME}/miniconda/bin/activate && \
conda init --all
ENV PATH="${HOME}/miniconda/bin:${PATH}"
ARG BUILD=${HOME}/build
RUN mkdir ${BUILD}

COPY lambda_function.py ${BUILD}
RUN pip install --target ${BUILD} awslambdaric

ENTRYPOINT ["/home/worker/miniconda/bin/python3.10", "-m", "awslambdaric"]
CMD [ "lambda_function.handler" ]
Но при тестировании функции Lambda я получаю следующую ошибку

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

{
"errorType": "Runtime.InvalidEntrypoint",
"errorMessage": "RequestId: d8919b62-472d-46c9-acf3-2b5ddaf49264 Error: fork/exec /home/worker/miniconda3/bin/python3.10: permission denied"
}
Когда я запускаю контейнер локально, разрешения выглядят следующим образом:

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

[worker@7525b61497ad bin]$ ls -al python3.10
-rwxrwxr-x 1 worker worker 17157264 Apr 10 19:14 python3.10
И я могу запускать Python:

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

[worker@7525b61497ad bin]$ python
Python 3.10.13 (main, Sep 11 2023, 13:44:35) [GCC 11.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> exit()
Пример структуры проекта:

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

test
├── Dockerfile
└── lambda_function.py
Содержимоеlambda_function.py:

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

import sys

def handler(event, context):
return 'Hello from AWS Lambda using Python' + sys.version + '!'
Не знаю, как устранить ошибку.

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

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

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

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

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

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

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