测试AWS Secrets Manager轮换Lambda时报SECRETS_MANAGER_ENDPOINT键错误
错误原因
这个报错是因为Lambda运行时环境缺少名为SECRETS_MANAGER_ENDPOINT的环境变量,你使用的官方轮换模板默认会读取该变量作为Secrets Manager的服务访问端点,变量不存在就会抛出KeyError。
解决方案
你可以任选以下任意一种方法修复:
- 方法一:配置Lambda环境变量
- 进入AWS Lambda控制台,找到你部署的轮换函数
- 点击「配置」标签页,选择左侧菜单栏的「环境变量」
- 点击「编辑」,新增一条环境变量:键为
SECRETS_MANAGER_ENDPOINT,值为你所在区域的Secrets Manager服务端点,格式为https://secretsmanager.<你的区域ID>.amazonaws.com,例如北京区域填https://secretsmanager.cn-north-1.amazonaws.com.cn,海外俄勒冈区域填https://secretsmanager.us-west-2.amazonaws.com - 保存配置后重新调用Lambda即可
- 方法二:修改代码移除对该变量的依赖(适合手动测试场景)
直接修改lambda_function.py的第17行代码,将原本读取环境变量的逻辑:
改为:service_client = boto3.client('secretsmanager', endpoint_url=os.environ['SECRETS_MANAGER_ENDPOINT'])
省略endpoint_url参数时,boto3会自动根据Lambda运行的区域加载默认的服务端点,不需要手动配置。service_client = boto3.client('secretsmanager')
补充说明:如果是通过Secrets Manager控制台自动创建关联的轮换Lambda,AWS会自动注入该环境变量,仅在手动部署模板代码、单独测试Lambda函数时会遇到该问题。
内容的提问来源于stack exchange,提问作者Gulshan
相关产品推荐
相关产品推荐

