не может создать EMRclient - Sdkclientexception - PullRequest
0 голосов
/ 14 июля 2020

Я пытался создать кластер с помощью Emrclient

EmrClient emrClient = EmrClient.builder().
        region(Region.US_EAST_1).
        credentialsProvider(EnvironmentVariableCredentialsProvider.create()).
        build();

, когда я пытаюсь запустить код, я получаю исключение SDK:

Exception in thread "main" software.amazon.awssdk.core.exception.SdkClientException: Unable to load an HTTP implementation from any provider in the chain. You must declare a dependency on an appropriate HTTP implementation or pass in an SdkHttpClient explicitly to the client builder.
    at software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:98)
    at software.amazon.awssdk.core.internal.http.loader.DefaultSdkHttpClientBuilder.lambda$buildWithDefaults$1(DefaultSdkHttpClientBuilder.java:49)
    at java.base/java.util.Optional.orElseThrow(Optional.java:408)
    at software.amazon.awssdk.core.internal.http.loader.DefaultSdkHttpClientBuilder.buildWithDefaults(DefaultSdkHttpClientBuilder.java:43)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.lambda$resolveSyncHttpClient$5(SdkDefaultClientBuilder.java:269)
    at java.base/java.util.Optional.orElseGet(Optional.java:369)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.resolveSyncHttpClient(SdkDefaultClientBuilder.java:269)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.finalizeSyncConfiguration(SdkDefaultClientBuilder.java:220)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.syncClientConfiguration(SdkDefaultClientBuilder.java:153)
    at software.amazon.awssdk.services.emr.DefaultEmrClientBuilder.buildClient(DefaultEmrClientBuilder.java:27)
    at software.amazon.awssdk.services.emr.DefaultEmrClientBuilder.buildClient(DefaultEmrClientBuilder.java:22)
    at software.amazon.awssdk.core.client.builder.SdkDefaultClientBuilder.build(SdkDefaultClientBuilder.java:124)
    at task2.App.main(App.java:27)

после поиска в Интернете в aws docs, я обнаружил, что для создания EMRclient нам нужно сделать так, чтобы конструктор выглядел так:

EmrClient emrClient = EmrClient.builder().
        region(Region.US_EAST_1).
        credentialsProvider(EnvironmentVariableCredentialsProvider.create()).
        httpClient(ApacheHttpClient.builder().build()).
        build();

, но что бы я ни делал, моя IDE не распознает класс ApacheHttpClient, я пытался импортировать: import software.amazon.awssdk.http.apache.ApacheHttpClient;, но он не распознает его, хотя я добавил его в свой POM:

<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>emr</artifactId>
    <version>2.13.23</version>
</dependency>
  <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>ec2</artifactId>
      <version>2.13.23</version>
  </dependency>
  <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>s3</artifactId>
      <version>2.13.23</version>
  </dependency>
  <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>apache-client</artifactId>
      <version>2.13.23</version>
      <scope>test</scope>
  </dependency>
<!-- https://mvnrepository.com/artifact/software.amazon.awssdk/apache-client -->
<dependency>
    <groupId>software.amazon.awssdk</groupId>
    <artifactId>apache-client</artifactId>
    <version>2.13.23</version>
    <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.apache.httpcomponents</groupId>
  <artifactId>httpcore</artifactId>
  <version>4.4</version>
</dependency>

было интересно, сталкивался ли кто-нибудь с этим и мог ли это исправить? заранее спасибо

...