AWS Lambda密钥轮换测试触发Secret版本无轮换阶段ValueError
错误原因
这个报错是AWS官方密钥轮换模板内置的校验逻辑触发的,核心原因是你手动在Lambda控制台测试时传入的ClientRequestToken参数对应的密钥版本,没有被标记AWSPENDING轮换阶段:
正常的密钥轮换流程由Secrets Manager自动触发时,服务端会先创建新版本的密钥,为该版本绑定你传入的ClientRequestToken,同时打上AWSPENDING阶段标签,再调用Lambda函数。而你手动填入的自定义ClientRequestToken没有对应任何带AWSPENDING标签的版本,直接触发了代码中的校验报错。
排查与解决方法
- 优先使用Secrets Manager官方测试入口测试:进入Secrets Manager控制台,找到对应密钥,在「轮换配置」栏点击测试轮换,由服务端自动生成合法参数调用Lambda,无需手动构造入参,可直接规避该错误。
- 若必须在Lambda控制台手动测试,需先为你填入的
ClientRequestToken绑定对应版本的AWSPENDING标签,可通过AWS CLI执行以下命令完成预配置:
aws secretsmanager put-secret-value \ --secret-id <替换为你的密钥ARN> \ --client-request-token <替换为你测试用的ClientRequestToken值> \ --secret-string '{"username":"替换为实际用户名","password":"替换为测试密码"}' \ --version-stages AWSPENDING
- 检查Lambda执行角色的IAM权限,确认已包含以下必要权限,避免因权限不足无法读取密钥版本的阶段标签导致误判:
{ "Effect": "Allow", "Action": [ "secretsmanager:DescribeSecret", "secretsmanager:GetSecretValue", "secretsmanager:PutSecretValue", "secretsmanager:UpdateSecretVersionStage" ], "Resource": "<替换为你的密钥ARN>" }
- 确认你传入的
SecretId为完整的密钥ARN,避免填写缩写或错误ID导致Lambda查询到错误的密钥资源。
内容的提问来源于stack exchange,提问作者Gulshan bhaiyaji
相关产品推荐
相关产品推荐

