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

如何通过Serverless框架将自定义Docker镜像用于AWS Lambda Express应用?

如何通过Serverless框架将自定义Docker镜像用于AWS Lambda Express应用?

嗨,我来帮你搞定这个问题!既然你已经写好了Dockerfile来解决大文件部署的问题,只需要调整一下serverless.yml的配置,就能顺利用自定义镜像部署你的Lambda Express应用了,具体操作如下:

第一步:移除不需要的Runtime配置

因为我们要用自定义Docker镜像,Lambda的运行时会由镜像本身定义,所以直接删掉provider部分里的runtime: nodejs20.x就行。

第二步:为函数添加镜像配置

把原来函数里的handler配置替换成image配置,这里分两种场景:

场景1:本地构建镜像(适合开发测试)

如果想让Serverless框架自动帮你构建镜像并推送到AWS ECR,就这么配置:

functions:
  api:
    name: express-api
    # 替换handler为image配置
    image:
      dockerfile: Dockerfile  # 指定你的Dockerfile路径,默认根目录可省略
      uri: docker://public.ecr.aws/lambda/nodejs:20  # 你的Dockerfile里用的基础镜像
    events:
      - httpApi: '*'

运行serverless deploy时,框架会自动完成镜像构建、推送到ECR专用仓库,再关联到你的Lambda函数,全程不用手动操作镜像仓库~

场景2:使用已推送到ECR的镜像(适合生产环境)

如果你已经把构建好的镜像推送到自己的AWS ECR仓库了,直接填写ECR的镜像URI即可:

functions:
  api:
    name: express-api
    image:
      uri: 123456789012.dkr.ecr.us-east-1.amazonaws.com/express-lambda:latest  # 替换成你的ECR镜像地址
    events:
      - httpApi: '*'

完整的配置示例

给你一份修改后的完整serverless.yml参考(以本地构建场景为例):

org: projectname
app: express
service: deployments
frameworkVersion: '3'

provider:
  name: aws
  timeout: 10
  tracing:
    lambda: false
  # 已移除runtime配置

functions:
  api:
    name: express-api
    image:
      dockerfile: Dockerfile
      uri: docker://public.ecr.aws/lambda/nodejs:20
    events:
      - httpApi: '*'

最后提醒一下:部署前确保你的AWS CLI已经配置好权限,能正常访问ECR服务,然后直接运行serverless deploy就可以啦!

备注:内容来源于stack exchange,提问作者Dev Scott

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.16 08:23:09