由于文件大小较大,我决定使用 docker 映像上传 lambda Express 应用程序。
FROM public.ecr.aws/lambda/nodejs:20
COPY . ${LAMBDA_TASK_ROOT}
RUN npm ci --production
CMD [ "index.handler" ]
如何在我的无服务器 yml 中指定此图像?
org: projectname
app: express
service: deployments
frameworkVersion: '3'
provider:
name: aws
runtime: nodejs20.x
timeout: 10
tracing:
lambda: false
functions:
api:
handler: index.handler
name: express-api
events:
- httpApi: '*'
为此,您需要在提供商中配置 AWS ECR,它将在本地构建并上传到 ECR。
首先在
serverless.yml
中配置provider
provider:
name: aws
runtime: nodejs20.x
timeout: 10
tracing:
lambda: false
ecr:
images:
express_api: #image name
path: ./
Dockerfile
和 serverless.yml
必须位于同一根目录中。
然后用图像替换处理程序
functions:
api:
image:
name: express_api
command:
- index.handler # this will replace command in docker file
name: express-api
events:
- httpApi: '*'