AWS Secrets Manager:驱动程序不支持提供的 URL:jdbc-secretsmanager:postgresql

问题描述

我正在尝试使用 aws-secretsmanager-jdbc 连接无服务器 prostgress 我在 application.properties 中有以下配置

#secrets name
quarkus.datasource.username = rds-db-credentials/postgres-serverless/rw/dbuser
quarkus.datasource.jdbc.url = jdbc-secretsmanager:postgresql://${db.host}:${db.port}/dbname
quarkus.datasource.jdbc.driver=com.amazonaws.secretsmanager.sql.AWSSecretsManagerPostgresqlDriver

我得到的错误

Could not obtain connection to query Metadata: java.sql.sqlException: Driver does not support the provided URL: jdbc-secretsmanager:postgresql://dburl

我正在尝试通过 aws-secretsmanager-jdbc 进行连接,我可以使用获取机密和通过 jdbc 使用常规连接进行连接

解决方法

为了解决这个问题,我创建了一个读取机密的 bean 和一个实现 CredentialsProvider 的 bean,这里的代码如下

@ApplicationScoped
@Named("app-credentials-provider")
public class AppCredentialsProvider implements CredentialsProvider {
    @Inject
    DBSecretPOJO dbSecretPOJO;
    @Override
    public Map<String,String> getCredentials(String credentialsProviderName) {
        Map<String,String> properties = new HashMap<>();
        properties.put(USER_PROPERTY_NAME,dbSecretPOJO.getUsername());
        properties.put(PASSWORD_PROPERTY_NAME,dbSecretPOJO.getPassword());
        return properties;
    }
}

配置

quarkus.datasource.credentials-provider=custom
quarkus.datasource.credentials-provider-name=app-credentials-provider