SST 3.x中如何在AWS Lambda函数中读取当前Stage
在SST 3.x中获取Stage并传入Lambda上下文
实现步骤
1. 在配置文件中导出Stage
修改你的根目录sst.env.config文件,在run函数里将Stage作为导出项:
export default $config({ app(input) { return { name: "my-project", removal: input?.stage === "production" ? "retain" : "remove", home: "aws", }; }, async run() { // 获取当前Stage,优先用SST注入的环境变量 const stage = process.env.SST_STAGE ?? "dev"; // some imports here return { // some exports here Region: aws.getRegionOutput().name, Stage: stage // 导出Stage到配置上下文 }; }, });
2. 生成类型声明文件
运行SST的环境类型生成命令,自动生成包含配置项类型的sst/env.d.ts文件:
npx sst env
3. 在Lambda函数中读取Stage
在Lambda代码里通过sst/env导入环境配置,直接获取Stage:
import { env } from "sst/env"; export async function handler() { const currentStage = env.Stage; // 根据环境切换业务逻辑 if (currentStage === "production") { // 生产环境执行逻辑 } else if (currentStage === "test") { // 测试环境执行逻辑 } else { // 开发环境执行逻辑 } return { statusCode: 200, body: `当前运行环境:${currentStage}` }; }
简化方案:直接读取环境变量
SST会自动将SST_STAGE环境变量注入所有Lambda函数,无需额外配置即可直接读取:
export async function handler() { const currentStage = process.env.SST_STAGE ?? "dev"; // 后续逻辑同上 }
内容的提问来源于stack exchange,提问作者TeaDrinkingProgrammer
相关产品推荐
相关产品推荐

