Можно ли отключить проверку 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()
);
}