scala - 使用 grpc netty 运行 kmsClient 解密后,Google KMS 冻结
问题描述
您好我正在尝试使用 Google KMS 和 Scala 解密值。
斯卡拉版本 2.11.12
这是我的代码
val fileInputStream = new FileInputStream("<service account>")
val credential = GoogleCredentials.fromStream(fileInputStream)
val keyManagementServiceSettings: KeyManagementServiceSettings = KeyManagementServiceSettings.newBuilder().setCredentialsProvider(FixedCredentialsProvider.create(credential)).build()
val clientKms = KeyManagementServiceClient.create(keyManagementServiceSettings)
// get key name
val project_id = ""
val location_id = ""
val key_ring_id = ""
val key_id = ""
val keyName = CryptoKeyName.newBuilder().setProject(project_id).setLocation(location_id).setKeyRing(key_ring_id).setCryptoKey(key_id).build()
// get cipherByte
val storage = StorageOptions.newBuilder.setCredentials(credential).build.getService
val bucketName = "..."
val bucket = storage.get(bucketName)
val blob = bucket.get(key_blob)
val cipher = blob.getContent()
val cipherByte = ByteString.copyFrom(cipher)
//decrypt and hang ...
val plaintext = clientKms.decrypt(keyName, cipherByte)
这是我的依赖项
io.grpc:grpc-netty:1.36.0
io.grpc:grpc-core:1.36.0
io.netty:netty-codec-http2:4.1.60.Final
com.google.guava:guava:30.0-jre
io.grpc:grpc-netty-shaded:1.36.0
google-cloud-kms-1.40.2
没有错误,代码停止运行,直到我终止会话
当我尝试将 gRpc 更改为 okhttp
io.grpc:grpc-okhttp:1.36.0
我收到了这个错误
Caused by: io.grpc.StatusRuntimeException: INTERNAL: Panic! This is a bug!
at io.grpc.Status.asRuntimeException(Status.java:535)
... 17 more
Caused by: java.lang.NoSuchFieldError: STOPWATCH_SUPPLIER
at io.grpc.okhttp.OkHttpClientTransport.<init>(OkHttpClientTransport.java:260)
at io.grpc.okhttp.OkHttpChannelBuilder$OkHttpTransportFactory.newClientTransport(OkHttpChannelBuilder.java:721)
at io.grpc.internal.CallCredentialsApplyingTransportFactory.newClientTransport(CallCredentialsApplyingTransportFactory.java:57)
at io.grpc.internal.InternalSubchannel.startNewTransport(InternalSubchannel.java:253)
at io.grpc.internal.InternalSubchannel.access$400(InternalSubchannel.java:65)
at io.grpc.internal.InternalSubchannel$2.run(InternalSubchannel.java:200)
at io.grpc.SynchronizationContext.drain(SynchronizationContext.java:95)
at io.grpc.SynchronizationContext.execute(SynchronizationContext.java:127)
at io.grpc.internal.ManagedChannelImpl$NameResolverListener.onResult(ManagedChannelImpl.java:1815)
at io.grpc.internal.DnsNameResolver$Resolve.run(DnsNameResolver.java:333)
... 3 more
Suppressed: com.google.api.gax.rpc.AsyncTaskException: Asynchronous task failed
at com.google.api.gax.rpc.ApiExceptions.callAndTranslateApiException(ApiExceptions.java:57)
at com.google.api.gax.rpc.UnaryCallable.call(UnaryCallable.java:112)
at com.google.cloud.kms.v1.KeyManagementServiceClient.decrypt(KeyManagementServiceClient.java:2624)
at com.google.cloud.kms.v1.KeyManagementServiceClient.decrypt(KeyManagementServiceClient.java:2567)
有什么建议吗?
感谢您的任何回复。
解决方案
推荐阅读
- docker - 将 docker 镜像导入 gitlab
- javascript - 使用正则表达式计算 Google 应用脚本抓取中 HTML 代码的出现次数
- c# - 使用 EPPlus C# 在单个 excel 单元格中提供不同的样式
- javascript - React-native 保存在哪个数据库中的缓存
- robotframework - 即使发生超时,机器人框架也通过测试用例
- objective-c - 在我为自己的框架写下测试用例时无法访问类方法 +(void) -(void) 实例方法使用 OCMock 工作正常
- arrays - 在 Word VBA 中以递归方式删除仅删除数组中的第一项
- vba - word vba 提取文本并添加到元数据属性
- c++ - 循环中疯狂的快速位域操作
- python - Facebook Api - 我无法获得 Facebook 转化价值