Amplify Gen2中Lambda函数无法读取环境变量的问题求助
问题:Amplify Lambda无法读取控制台配置的环境变量
已执行操作:
- 按官方文档定义Lambda函数:
export const dailyNotification = defineFunction({ name: 'daily-notification', entry: './handler.ts', environment: { TESTZG: process.env.TESTZG ?? 'default', } });
- 在处理器中通过生成的env访问环境变量:
import { env } from '$amplify/env/daily-notification'; // ... console.log(`TESTZG, ${env.TESTZG}`);
- 已在Amplify控制台添加环境变量
TESTZG=test - 已更新控制台构建设置
- 根目录创建了包含该变量的
.env.local文件 - 使用
npx ampx sandbox部署后,Lambda日志输出TESTZG, default!,未读取到控制台设置的值
解决步骤
确认环境变量作用范围
在Amplify控制台添加变量时,要选对后端环境,且勾选目标Lambda函数(daily-notification)的作用范围,否则变量不会注入到函数中。修正构建设置的变量传递
在Amplify控制台的amplify.yml构建阶段,确保变量被传递到构建流程:
build: commands: - export TESTZG=$TESTZG - npx ampx deploy
或者直接在控制台构建设置的环境变量列表中添加TESTZG,保证构建过程能读取到控制台配置的值,这样函数定义里的process.env.TESTZG才能正确获取。
排除本地文件干扰
.env.local仅作用于本地开发,部署时不会上传。部署时要确保Amplify控制台的变量能覆盖函数定义中的默认值,这依赖构建流程正确传递控制台变量。重新触发完整部署
修改环境变量或构建设置后,手动在Amplify控制台触发部署,或执行npx ampx deploy --force强制重新部署后端资源,确保新变量注入到Lambda。验证Lambda的变量配置
部署完成后,进入AWS Lambda控制台找到目标函数,查看「配置-环境变量」,确认TESTZG存在且值为test。如果不存在,检查Amplify部署日志,排查变量同步错误。核对变量键名大小写
确保函数定义中的环境变量键名和控制台完全一致(大小写敏感),比如控制台是TESTZG,函数里不能写成testzg。
内容的提问来源于stack exchange,提问作者zgorawski
相关产品推荐
相关产品推荐

