Quarkus Panache MongoDB从AWS SSM获取认证信息的凭证提供者配置问题
从AWS SSM获取MongoDB认证信息解决连接空指针问题
问题背景
原本通过application.resources配置MongoDB的用户名和密码实现数据库读写,生产环境需要从AWS SSM存储中获取认证值。使用SsmClient能读取到值,但无法在代码中设置对应属性,且找到的凭证提供者示例多针对关系型数据库。
尝试与错误
编写了凭证获取方法,能正确输出从SSM获取的用户名和密码,但连接数据库时抛出空指针异常:
@Override public Map<String, String> getCredentials(String credentialsProviderName) { Map<String, String> properties = new HashMap<>(); Map<String, String> secretParams = ssmProvider.getParameters(List.of(dbUserName, dbPassword)); properties.put("PASSWORD_PROPERTY_NAME", secretParams.get(dbPassword)); properties.put("USER_PROPERTY_NAME", secretParams.get(dbUserName)); log.infof("Password %s", properties.get("PASSWORD_PROPERTY_NAME")); log.infof("Username %s", properties.get("USER_PROPERTY_NAME")); return properties; }
错误信息:
Error creating synthetic bean [875fc6d3e776003a77cb64e6876f962a3525aded]: java.lang.NullPointerException: Cannot invoke "String.toCharArray()" because "password" is null
解决方法
问题出在代码中的"PASSWORD_PROPERTY_NAME"和"USER_PROPERTY_NAME"——这两个应该是常量标识符而非字符串字面量,去掉引号后即可正常注入认证信息,解决空指针问题。
内容的提问来源于stack exchange,提问作者robert080262
相关产品推荐
相关产品推荐

