2

使用 Kinesis Consumer Library 的第 2 版开发 Kinesis Consumer 并将 Dynamo DB 终端节点覆盖到 localstack 终端节点时,由于 SSL 握手错误,库无法创建租赁表。

我可以确认在使用 AWS 的 Dynamo DB 时创建表成功,但是一旦我将端点 url 覆盖为 localstack url,Dynamo DB 客户端在多次重试后无法创建租约表。堆栈跟踪不是很有用,但 Wireshark 显示了所有 SSL 握手错误,所以我只能假设 Amazon SDK 不接受 localstack 证书。我找不到任何关于如何使用该software.amazon.awssdk软件包禁用证书验证的信息。

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

4

2 回答 2

4

在 kotlin 中,我正在设置这样的环境变量:

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");

这将允许您将 localstack 用于 DynamoDB,事实上,这正是我设置上述环境变量的原因。

更多环境变量可以在aws-java-sdk github repo中找到

于 2019-07-27T14:54:35.283 回答
2

在 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()
            );
}
于 2021-07-01T22:04:22.317 回答