使用aws-secretsmanager-jdbc从AWS密钥管理器读取RDS密钥时发生异常

问题描述 投票:0回答:1

我正在项目上使用适用于Java的AWS开发工具包Java,现在想使用AWS Secrets Manager存储RDS详细信息。集成aws-secretsmanager-jdbc时,对数据库运行查询时出现以下错误:

java.lang.NoSuchFieldError: SERVICE_ID
    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.executeDescribeSecret(AWSSecretsManagerClient.java:885)
    at com.amazonaws.services.secretsmanager.AWSSecretsManagerClient.describeSecret(AWSSecretsManagerClient.java:866)
    at com.amazonaws.secretsmanager.caching.cache.SecretCacheItem.executeRefresh(SecretCacheItem.java:102)
    at com.amazonaws.secretsmanager.caching.cache.SecretCacheItem.executeRefresh(SecretCacheItem.java:32)
    at com.amazonaws.secretsmanager.caching.cache.SecretCacheObject.refresh(SecretCacheObject.java:188)
    at com.amazonaws.secretsmanager.caching.cache.SecretCacheObject.getSecretValue(SecretCacheObject.java:286)
    at com.amazonaws.secretsmanager.caching.SecretCache.getSecretString(SecretCache.java:123)
    at com.amazonaws.secretsmanager.sql.AWSSecretsManagerDriver.connectWithSecret(AWSSecretsManagerDriver.java:321)
    at com.amazonaws.secretsmanager.sql.AWSSecretsManagerDriver.connect(AWSSecretsManagerDriver.java:384)
    at com.mchange.v2.c3p0.DriverManagerDataSource.getConnection(DriverManagerDataSource.java:175)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:220)
    at com.mchange.v2.c3p0.WrapperConnectionPoolDataSource.getPooledConnection(WrapperConnectionPoolDataSource.java:206)
    at com.mchange.v2.c3p0.impl.C3P0PooledConnectionPool$1PooledConnectionResourcePoolManager.acquireResource(C3P0PooledConnectionPool.java:203)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquire(BasicResourcePool.java:1138)
    at com.mchange.v2.resourcepool.BasicResourcePool.doAcquireAndDecrementPendingAcquiresWithinLockOnSuccess(BasicResourcePool.java:1125)
    at com.mchange.v2.resourcepool.BasicResourcePool.access$700(BasicResourcePool.java:44)
    at com.mchange.v2.resourcepool.BasicResourcePool$ScatteredAcquireTask.run(BasicResourcePool.java:1870)
    at com.mchange.v2.async.ThreadPoolAsynchronousRunner$PoolThread.run(ThreadPoolAsynchronousRunner.java:696)

我进行了一些研究,发现这可能是sdk-coresecretsmanager之间的版本冲突问题。这是Maven依赖树:

[INFO] |  +- software.amazon.awssdk:secretsmanager:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:aws-json-protocol:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:protocol-core:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:sdk-core:jar:2.10.30:compile
[INFO] |  |  |  \- software.amazon.awssdk:profiles:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:auth:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:http-client-spi:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:regions:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:annotations:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:utils:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:aws-core:jar:2.10.30:compile
[INFO] |  |  +- software.amazon.awssdk:apache-client:jar:2.10.30:runtime
[INFO] |  |  \- software.amazon.awssdk:netty-nio-client:jar:2.10.30:runtime
[INFO] +- com.amazonaws.secretsmanager:aws-secretsmanager-jdbc:jar:1.0.3:compile
[INFO] |  +- com.amazonaws.secretsmanager:aws-secretsmanager-caching-java:jar:1.0.0:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-secretsmanager:jar:1.11.418:compile
[INFO] |  |  +- com.amazonaws:aws-java-sdk-core:jar:1.11.281:compile
[INFO] |  |  \- com.amazonaws:jmespath-java:jar:1.11.281:compile
[INFO] +- software.amazon.awssdk:secretsmanager:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:aws-json-protocol:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:protocol-core:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:sdk-core:jar:2.10.30:compile
[INFO] |  |  \- software.amazon.awssdk:profiles:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:auth:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:http-client-spi:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:regions:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:annotations:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:utils:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:aws-core:jar:2.10.30:compile
[INFO] |  +- software.amazon.awssdk:apache-client:jar:2.10.30:runtime
[INFO] |  \- software.amazon.awssdk:netty-nio-client:jar:2.10.30:runtime
[INFO] \- com.amazonaws:aws-java-sdk-s3:jar:1.11.281:compile
[INFO]    \- com.amazonaws:aws-java-sdk-kms:jar:1.11.281:compile

FYI,我正在使用适用于AWS JAVA SDK的bom文件,其版本为2.5.47,而aws-secretsmanager-jdbc具有AWS JAVA SDK的版本为[[1.11.418]

我正在尝试使用AWS包装器与数据库AWS Secrets Manager JDBC连接

关于如何解决此问题的任何想法?

amazon-web-services c3p0 aws-secrets-manager aws-java-sdk-2.x
1个回答
0
投票
弄清楚了这一点,由于核心库的版本错误而导致了问题的发生。我试图在同一项目中使用AWS开发工具包2.x和1.x,因此出现版本冲突。

通过如下向pom添加版本来解决:

<dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-core</artifactId> <version>1.11.418</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>jmespath-java</artifactId> <version>1.11.418</version> </dependency> <dependency> <groupId>com.amazonaws</groupId> <artifactId>aws-java-sdk-secretsmanager</artifactId> <version>1.11.418</version> </dependency>

© www.soinside.com 2019 - 2024. All rights reserved.