Иногда не удается получить объект s3 с помощью AWS SDK для Java v2.0 - PullRequest
0 голосов
/ 01 июня 2019

Я перенес AWS SDK для Java с версии 1.1 на версию 2.0 в некоторых лямбда-функциях и получил ошибку.Одна из функций запускается операцией S3 PUT.Когда я запускаю эту функцию, загружая несколько файлов одновременно, некоторые файлы успешно выполняются, но другие не могут загрузить их как массив байтов.

Вот мой код.

RetryPolicy retryPolicy = RetryPolicy.builder()
        .numRetries(3)
        .build();

ClientOverrideConfiguration overrideConfiguration = ClientOverrideConfiguration.builder()
        .retryPolicy(retryPolicy)
        .build();

SdkHttpClient.Builder<ApacheHttpClient.Builder> httpClientBuilder = ApacheHttpClient.builder()
        .connectionTimeout(Duration.ofMillis(30000L))
        .socketTimeout(Duration.ofMillis(30000L));

S3ClientBuilder clientBuilder = S3Client.builder()
        .region(Region.of(region))
        .overrideConfiguration(overrideConfiguration)
        .httpClientBuilder(httpClientBuilder);

try (S3Client client = clientBuilder.build()) {
    GetObjectRequest request = GetObjectRequest.builder()
            .bucket(bucketName)
            .key(filePath)
            .build();

    return client.getObject(request, ResponseTransformer.toBytes()).asByteArray();
}

И яполучил эту ошибку.

Unable to execute HTTP request: Connect to somebucket.s3.ap-northeast-1.amazonaws.com:443 [somebucket.s3.ap-northeast-1.amazonaws.com/99.999.99.999] failed: connect timed out
software.amazon.awssdk.core.exception.SdkClientException$BuilderImpl.build(SdkClientException.java:97)
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage$RetryExecutor.handleThrownException(RetryableStage.java:140)
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage$RetryExecutor.execute(RetryableStage.java:96)
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:64)
software.amazon.awssdk.core.internal.http.pipeline.stages.RetryableStage.execute(RetryableStage.java:44)
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:205)
software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:51)
software.amazon.awssdk.core.internal.http.StreamManagingStage.execute(StreamManagingStage.java:33)
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.executeWithTimer(ApiCallTimeoutTrackingStage.java:79)
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:60)
software.amazon.awssdk.core.internal.http.pipeline.stages.ApiCallTimeoutTrackingStage.execute(ApiCallTimeoutTrackingStage.java:42)
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:205)
software.amazon.awssdk.core.internal.http.pipeline.RequestPipelineBuilder$ComposingRequestPipelineStage.execute(RequestPipelineBuilder.java:205)
software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:37)
software.amazon.awssdk.core.internal.http.pipeline.stages.ExecutionFailureExceptionReportingStage.execute(ExecutionFailureExceptionReportingStage.java:26)
software.amazon.awssdk.core.internal.http.AmazonSyncHttpClient$RequestExecutionBuilderImpl.execute(AmazonSyncHttpClient.java:240)
software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.invoke(BaseSyncClientHandler.java:96)
software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:120)
software.amazon.awssdk.core.client.handler.BaseSyncClientHandler.execute(BaseSyncClientHandler.java:61)
software.amazon.awssdk.core.client.handler.SdkSyncClientHandler.execute(SdkSyncClientHandler.java:51)
software.amazon.awssdk.awscore.client.handler.AwsSyncClientHandler.execute(AwsSyncClientHandler.java:62)
software.amazon.awssdk.services.s3.DefaultS3Client.getObject(DefaultS3Client.java:1597)
common.library.S3Utility.download(S3Utility.java:262)

v1.11 работает отлично, но v2.0 иногда дает сбой.Есть предложения?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...