You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于AWS Python Docker镜像的GitLab Pipeline部署Lambda报错排查

AWS Lambda Python镜像部署出现Runtime.ExitError问题

我按照AWS官方文档使用推荐的AWS Python基础镜像构建Lambda镜像,本地POC验证镜像可正常运行,但部署为Lambda函数后调用时抛出错误。使用GitLab Pipeline做CI/CD,Terraform创建Lambda资源。

Dockerfile代码

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

# Install the function's dependencies using file requirements.txt
# from your project folder.

COPY requirements.txt  .

RUN  pip3 install -r requirements.txt --target ${LAMBDA_TASK_ROOT}; \
     bash -c 'mkdir -p ${LAMBDA_TASK_ROOT}/{services,api} && mkdir -p ${LAMBDA_TASK_ROOT}/services/resources'; \
     yum update -y ; \
     yum install git -y

# Copy function code
COPY src/api/lambda_handler.py ${LAMBDA_TASK_ROOT}
COPY src/api/constants.py src/api/controller.py src/api/handler.py ${LAMBDA_TASK_ROOT}/api/
COPY src/services/*.py ${LAMBDA_TASK_ROOT}/services/
COPY src/services/resources/dag.py ${LAMBDA_TASK_ROOT}/services/resources/


# Set the CMD to your handler (could also be done as a parameter override outside of the Dockerfile)
CMD [ "lambda_handler.handler" ]

错误信息

通过API Gateway调用Lambda时,返回错误:

Endpoint response body before transformations: 

    {"errorType":"Runtime.ExitError","errorMessage":"RequestId: a8ebb6f3-sa Error: Runtime exited with error: exit status 1"}

Lambda日志截图:
日志截图

已尝试操作

  • 在Dockerfile的RUN命令中添加python3.8 -m pip --no-cache-dir install awslambdaric;,但无效果

GitLab Pipeline配置

docker_stage:
  image: docker:23.0.6
  stage: docker_stage
  services:
    - docker:23.0.6-dind
  script:
    - cd provisioner
    - apk add python3
    - python3 -m ensurepip --upgrade
    - pip3 install --upgrade pip
    - pip3 install awscli
    - docker build -t dbtsample .
    - docker tag dbtsample:latest <account-id>.dkr.ecr.eu-west-1.amazonaws.com/dbtsample:latest
    - aws ecr get-login-password --region eu-west-1 | docker login --username AWS --password-stdin <account-id>.dkr.ecr.eu-west-1.amazonaws.com
    - docker push <account-id>.dkr.ecr.eu-west-1.amazonaws.com/dbtsample:latest

Terraform Lambda配置

resource "aws_lambda_function" "api_lambda" {
  function_name = local.lambda_name
  timeout       = 300
  image_uri     = "${local.account_id}.dkr.ecr.eu-west-1.amazonaws.com/dbtsample:latest"
  package_type  = "Image"
  architectures = ["x86_64"]
  memory_size   = 1024
  role          = aws_iam_role.api_lambda_role.arn


  vpc_config {
    security_group_ids = [aws_security_group.security_group_for_lambda.id]
    subnet_ids         = var.subnet_ids
  }

  environment {
    variables = {
      gitlab_username     = var.gitlab_username
      gitlab_access_token = var.gitlab_access_token
    }
  }
}

补充说明

  • GitLab阶段使用alpine linux镜像,安装的Python版本为3.10,仅用于部署awscli,项目代码基于Python3.8构建,认为此无影响
  • 根据建议查看已安装包列表:
    已安装包列表截图

请问我还遗漏了什么?

内容的提问来源于stack exchange,提问作者RushHour

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:05:09