[英]Is it possible to disable SSL certificate checking in the amazon kinesis consumer library v2?
使用 Kinesis Consumer Library 版本 2 开发 Kinesis Consumer 并将 Dynamo DB 端点覆盖为 localstack 端点时,由于 SSL 握手错误,库无法创建租赁表。
我可以确认在使用 AWS 的 Dynamo DB 时创建表成功,但是一旦我将端点 url 覆盖到本地堆栈 url,Dynamo DB 客户端在多次重试后无法创建租约表。 堆栈跟踪不是很有用,但 Wireshark 显示了所有 SSL 握手错误,因此我只能假设 Amazon SDK 不接受 localstack 证书。 我找不到任何关于如何使用software.amazon.awssdk
package 禁用证书验证的提及。
Region region = Region.of("us-east-1");
DefaultCredentialsProvider credentialsProvider = DefaultCredentialsProvider.create();
DynamoDbAsyncClient dynamoClient = DynamoDbAsyncClient.builder()
.region(region)
.endpointOverride(URI.create("https://localhost:4569"))
.credentialsProvider(credentialsProvider)
.build();
/edit 这是基于亚马逊的示例: https://docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html
这是 S3 的示例
final AttributeMap attributeMap = AttributeMap.builder()
.put(SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, true)
.build();
final SdkHttpClient sdkHttpClient = new DefaultSdkHttpClientBuilder().buildWithDefaults(attributeMap);
return S3Client.builder()
.httpClient(sdkHttpClient)
.build();
在 kotlin 中,我设置了一个这样的环境变量:
System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");
这将允许您为 DynamoDB 使用 localstack,事实上,这正是我设置上述环境变量的原因。
更多环境变量可以在aws-java-sdk github repo 中找到
在 SDK 版本 2 中需要使用选项: software.amazon.awssdk.http.SdkHttpConfigurationOption#TRUST_ALL_CERTIFICATES
用法示例:
private SdkAsyncHttpClient buildSdkAsyncHttpClient() {
return NettyNioAsyncHttpClient.builder()
.buildWithDefaults(
AttributeMap.builder()
.put(SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, true)
.build()
);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.