如何将Svelte-Kit应用部署到AWS Lambda并测试构建输出产物
Svelte-Kit 部署到AWS Lambda 操作指南
前置配置验证
你当前使用的@yarbsemaj/adapter-lambda适配器配置是正确的,注意如果你的Svelte-Kit版本为v1及以上,需要移除配置中的target: '#svelte'字段,改用根目录+layout.js配置hydrate属性即可。
第一步:生成构建产物
在项目根目录执行构建命令:
npm run build
构建完成后会自动生成lambda文件夹,你列出的输出文件属于正常构建产物,无需额外修改。
第二步:本地测试构建产物
无需部署到AWS即可验证构建是否正常,两种常用测试方案:
方案1:使用Lambda运行时模拟器测试
- 进入生成的
lambda目录,执行npm install安装运行依赖 - 全局安装Lambda运行时模拟器:
npm install -g aws-lambda-ric - 新建测试事件文件
test-event.json,写入API Gateway标准触发格式:
{ "httpMethod": "GET", "path": "/", "headers": {}, "queryStringParameters": null }
- 执行测试命令:
aws-lambda-ric index.handler < test-event.json,正常会返回200状态码和页面响应内容,即代表构建产物可用。
方案2:使用Serverless Offline本地模拟服务
- 项目根目录新建
serverless.yml配置文件:
service: svelte-kit-lambda provider: name: aws runtime: nodejs16.x region: us-east-1 functions: app: handler: lambda/index.handler events: - http: ANY / - http: ANY /{proxy+}
- 执行
serverless offline启动本地服务,访问localhost:3000即可直接预览应用效果。
第三步:部署到AWS Lambda
手动部署方案
- 进入
lambda目录,选中目录内所有文件直接打包为zip压缩包(不要打包lambda文件夹本身,否则Lambda会找不到执行入口) - 登录AWS控制台新建Lambda函数,运行时选择Node.js 16.x及以上版本
- 函数代码选择「上传zip包」,上传刚才生成的压缩包
- 将Lambda的处理程序配置为
index.handler - 给Lambda绑定API Gateway触发器,选择HTTP API,允许所有路由的访问权限
- 配置完成后访问API Gateway的默认域名即可访问应用
自动部署方案
完成上述serverless.yml配置后,本地配置好AWS访问凭证,直接执行serverless deploy即可自动完成所有资源创建和部署,执行完成后控制台会直接输出应用访问域名。
常见问题排查
- 访问返回404:检查API Gateway的路由配置是否匹配了所有路径规则
- 访问返回500:查看Lambda的CloudWatch日志,大概率是依赖缺失,确认打包时包含了
node_modules目录 - 静态资源加载失败:确认打包时包含了lambda目录下的static文件夹内容
内容的提问来源于stack exchange,提问作者chovy
相关产品推荐
相关产品推荐

