Сборка грузовой лямбды - Arm64 не работает на al2023

Я пытаюсь создать среду выполнения Rust для Lambda с помощью Amazon Linux 2023 (al2023), поэтому все работает на Docker, как показано ниже.

# Use cargo-lambda as the build environment
FROM ghcr.io/cargo-lambda/cargo-lambda:latest as builder

# Create app directory
WORKDIR /app

# Copy the Cargo.toml and Cargo.lock files
COPY . .

# Build the release version of your application
RUN cargo lambda build --arm64 --release

# Use the AWS Lambda provided base image for custom runtimes
FROM public.ecr.aws/lambda/provided:al2023

# Copy the compiled binary from the builder stage
COPY --from=builder /app/target/lambda/user/bootstrap ${LAMBDA_RUNTIME_DIR}

# Set the CMD to your handler
CMD ["bootstrap"]

Файл Docker работает нормально, и я могу запустить его с помощью docker run --rm -it -p 9000:8080 my-rust-lambda но когда я звоню в конечную точку, я получаю qemu-aarch64: Could not open '/lib/ld-linux-aarch64.so.1': No such file or directory

что мне не хватает?

Поддерживает ли базовый образ Docker aarch64 или контейнер работает на компьютере на базе aarch64?

Dodge_X 24.07.2024 08:25

@Dodge_X образ докера поддерживает aarch64, насколько я понимаю из Gallery.ecr.aws/lambda/provided

Aon 24.07.2024 08:40

или, может быть, базовому образу нужна дополнительная библиотека? может это поможет unix.stackexchange.com/questions/751329/…

Dodge_X 24.07.2024 09:43

@Dodge_X еще не пробовал, но теперь это работает, если я добавлю FROM --platform=linux/arm64 public.ecr.aws/lambda/provided:al2023. появится предупреждение типа WARNING: The requested image's platform (linux/arm64/v8) does not match the detected host platform (linux/amd64) and no specific platform was requested, но оно работает

Aon 24.07.2024 10:45

понял. проблема в том, что вы создали образ на машине с процессором AMD64, но хотите запустить его на компьютере с процессором Arm64. Вам нужно добавить опцию «платформа».

Dodge_X 24.07.2024 10:58
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
5
56
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

новый Dockerfile

# Use cargo-lambda as the build environment
FROM ghcr.io/cargo-lambda/cargo-lambda:latest as builder

# Create app directory
WORKDIR /app

# Copy the Cargo.toml and Cargo.lock files
COPY . .

# Build the release version of your application
RUN cargo lambda build --arm64 --release

# Use the AWS Lambda provided base image for custom runtimes
FROM public.ecr.aws/lambda/provided:al2023

# Copy the compiled binary from the builder stage
COPY --from=builder /app/target/lambda/user/bootstrap ${LAMBDA_RUNTIME_DIR}

# Set the CMD to your handler
CMD ["bootstrap"]

Другие вопросы по теме