如何将环境变量注入 sam local 下的 Lambda 运行?

How do I inject environment variables to Lambda running under sam local?

我正在使用 AWS SAM 在本地开发 aws lambda。
我正在尝试注入环境变量,但没有成功。
Lambda 代码是:

exports.lambdaHandler = async (event, context) => {
    console.log('INJECTED ENVIRONMENT:',JSON.stringify(process.env));
    response = {
        'statusCode': 200,
        'body': "booo"
    }
    return response;
};

环境文件test.json是:

{
  "parameters": {
    "PPPPPPPPPPPPPPPPPPPPP1": "PPPPPPPPPPPPPPPPPPPPP1",
    "PPPPPPPPPPPPPPPPPPPPP2": "PPPPPPPPPPPPPPPPPPPPP2",
    "PPPPPPPPPPPPPPPPPPPPP3": "PPPPPPPPPPPPPPPPPPPPP3"
  }
}

我是 运行 lambda。它运行正常,显示了预期的输出,除了我尝试定义的环境变量。
sam local invoke -e events/event.json -n test.json

我错过了什么?

环境变量文件需要遵循特定格式,具体取决于您要测试的 lambda 函数的逻辑 ID:

Test.json:

{
  "LogicalIdOfLambdaHere":{
    "ENV_VAR_KEY": "value"
  }
}

确保逻辑 ID 与您的 sam 模板中定义的一致。或者,您可以使用 Parameters 而不是 parameters

请注意,您还需要在实际 SAM 模板中定义相同的变量。此方法用于覆盖模板中指定的值,而不用于添加未在模板中定义的新值模板。变量也区分大小写:)