AWS Parameters and Secrets Lambda Extension返回400错误请求问题求助
以下是针对该问题的具体排查与解决步骤:
检查请求URL的编码与格式
若密钥名称包含特殊字符(如斜杠/、空格、非下划线类符号),直接拼接URL会导致解析错误,必须对密钥名称做URL编码处理后再拼接:var secretName = "你的密钥名称"; var encodedSecretName = Uri.EscapeDataString(secretName); var requestUrl = $"http://localhost:2773/secretsmanager/get?secretId={encodedSecretName}";同时确认
secretId参数拼写完全正确(注意大小写,不要误写为secretID)。验证会话令牌的有效性
确认Environment.GetEnvironmentVariable("AWS_SESSION_TOKEN")返回非空有效字符串。Lambda执行环境中的临时会话令牌是动态生成的,若函数初始化时未正确获取,会直接触发扩展的400拒绝请求。检查扩展层的部署配置
确认Lambda函数已正确添加us-east-1区域、版本1.0.103对应的扩展层,其ARN为arn:aws:lambda:us-east-1:177933569100:layer:AWS-Parameters-and-Secrets-Lambda-Extension:43。可设置环境变量PARAMETERS_SECRETS_EXTENSION_LOG_LEVEL=debug,通过CloudWatch日志查看扩展的详细错误输出。确认请求方法与内容规范
确保发送的是GET请求,且请求体无任何内容。/secretsmanager/get端点仅支持GET方法,携带请求体或使用其他HTTP方法会直接返回400错误。规范HttpClient的使用
避免在Lambda中重复创建HttpClient实例,建议通过静态构造函数或依赖注入创建单例实例,防止连接池异常。同时检查请求头名称X-AWS-Parameters-Secrets-Token的拼写、大小写完全正确。
内容的提问来源于stack exchange,提问作者Sabarish Sathasivan

