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

如何在Lambda NodeJS中从serverless.yml获取服务名、函数名及环境名?

如何在Serverless函数中获取服务名、函数名及环境名?

嘿,我来帮你搞定这个问题!你的serverless.yml配置已经很清晰了,要在sample1里调用sample2并生成完整函数名(比如serverless-demo-app-dev-sample2),其实不需要手动硬编码,Serverless框架和AWS Lambda会自动给你的函数注入相关环境变量,直接读取就行。

直接通过环境变量获取所需值

Serverless框架会自动把服务、环境等核心信息注入到函数的环境变量中,你可以通过process.env直接读取:

  • 服务名:process.env.SERVICE_NAME —— 对应你serverless.yml里service字段的serverless-demo-app
  • 环境名(Stage):process.env.STAGE 或 process.env.SERVERLESS_STAGE —— 默认是dev,如果部署时指定了其他stage(比如prod),这个值会自动更新
  • 当前函数的完整名称:process.env.AWS_LAMBDA_FUNCTION_NAME —— AWS Lambda自带的环境变量,会直接返回类似serverless-demo-app-dev-sample1这样的完整函数名

示例:在sample1中拼接sample2的完整函数名

下面是sample1/handler.js的示例代码,展示如何拼接出sample2的完整调用名称:

exports.handler = async (event) => {
  // 读取环境变量,加默认值避免意外情况
  const serviceName = process.env.SERVICE_NAME;
  const stage = process.env.STAGE || 'dev';
  const targetFunction = 'sample2';
  
  // 拼接出完整的目标函数名
  const fullFunctionName = `${serviceName}-${stage}-${targetFunction}`;
  
  // 这里就可以用fullFunctionName来调用sample2了,比如用AWS SDK的Lambda.invoke方法
  console.log(`准备调用的函数:${fullFunctionName}`);
  
  return {
    statusCode: 200,
    body: JSON.stringify({
      message: `目标函数名已生成`,
      targetFunction: fullFunctionName
    })
  };
};

额外说明

这些环境变量都是Serverless框架自动注入的,不需要你在serverless.yml里额外配置。如果有自定义的环境变量需求,才需要在provider或functions节点下添加environment字段手动定义。

内容的提问来源于stack exchange,提问作者Chaitanya Joshi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:21:16