[英]Exception while reading RDS secrets from AWS secrets manager using aws-secretsmanager-jdbc
我在我的項目中使用 AWS SDK for java,現在想要使用 AWS 機密管理器來存儲 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-core
和secretsmanager
之間的版本沖突問題。 這是 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
僅供參考,我使用的是 AWS JAVA SDK 的 bom 文件,版本為2.5.47,而aws-secretsmanager-jdbc
AWS JAVA SDK 版本為1.11.418
我正在嘗試使用 AWS 包裝器連接數據庫AWS Secrets Manager JDBC
關於如何解決這個問題的任何想法?
想通了,這是由於核心庫版本錯誤而導致的問題。 我試圖在同一個項目中使用 AWS SDK 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>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.