Можно ли отключить проверку SSL-сертификата в пользовательской библиотеке amazon kinesis v2?

При разработке Kinesis Consumer с использованием версии 2 библиотеки Kinesis Consumer и переопределении конечной точки Dynamo DB на конечную точку локального стека библиотека не может создать таблицу аренды из-за ошибок рукопожатия SSL.

Я могу подтвердить, что создание таблицы завершается успешно при использовании AWS Dynamo DB, но как только я переопределяю URL-адрес конечной точки на локальный стек, клиенту Dynamo DB не удается создать таблицу аренды после нескольких повторных попыток. Трассировка стека не очень полезна, но Wireshark показывает все ошибки рукопожатия SSL, поэтому я могу только предположить, что Amazon SDK не принимает сертификат localalstack. Я не могу найти упоминания о том, как отключить проверку сертификата с помощью 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 Это основано на примере Amazon, найденном здесь: https://docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html

3 ответа

В kotlin я устанавливаю такую ​​переменную окружения:

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

Фактически, это позволит вам использовать localstack для DynamoDB, именно поэтому я устанавливаю указанную выше переменную среды.

Дополнительные переменные среды можно найти в репозитории github aws-java-sdk

Вот пример для 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();

В 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()
            );
}
Другие вопросы по тегам