public S3AsyncClient createS3AsyncClient()

in aws-core-common/src/main/java/jetbrains/buildServer/util/amazon/AWSClients.java [158:199]


  public S3AsyncClient createS3AsyncClient(S3Util.S3AdvancedConfiguration advancedConfiguration, TlsTrustManagersProvider tlsTrustManagersProvider) {
    ClientOverrideConfiguration.Builder overrideConfigurationBuilder = ClientConfigurationBuilder.clientOverrideConfigurationBuilder();
    if (StringUtil.isNotEmpty(myS3SignerType)) {
      overrideConfigurationBuilder.putAdvancedOption(SdkAdvancedClientOption.SIGNER, SIGNERS.getOrDefault(myS3SignerType, DEFAULT));
    }

    S3AsyncClientBuilder builder = S3AsyncClient.builder()
      .defaultsMode(DefaultsMode.STANDARD)
      .httpClientBuilder(ClientConfigurationBuilder.createAsyncClientBuilder(null, tlsTrustManagersProvider))
      .overrideConfiguration(overrideConfigurationBuilder.build())
      .serviceConfiguration(
        config -> config.accelerateModeEnabled(myAccelerateModeEnabled)
          .pathStyleAccessEnabled(!myDisablePathStyleAccess)
      );

    if (advancedConfiguration != null) {
      builder.multipartConfiguration(
        multipart -> multipart.thresholdInBytes(advancedConfiguration.getMultipartUploadThreshold())
          .minimumPartSizeInBytes(advancedConfiguration.getMinimumUploadPartSize())
      );
    }

    if (myCredentials != null) {
      builder.credentialsProvider(StaticCredentialsProvider.create(myCredentials));
    }

    // null in myRegion will cause S3 client instantiation to fail
    // we ensure, that we have at least default region
    String region = myRegion;

    if (myRegion == null) {
      region = AwsCloudConnectorConstants.REGION_NAME_DEFAULT;
    }

    if (StringUtil.isNotEmpty(myServiceEndpoint)) {
      builder.endpointOverride(URI.create(myServiceEndpoint));
    }

    builder.region(Region.of(region));

    return builder.build();
  }