Java и aws-java-sdk-s3 не могут получить доступ к SdkClientException

avatar
mostafa cs
8 апреля 2018 в 11:29
1477
0
2

У меня есть исключение компиляции при компиляции кода для создания предварительно подписанного URL-адреса для загрузки в S3 со стороны клиента Angular5.

Код работает очень хорошо, когда я использую aws-java-sdk. Но поскольку библиотека большая и мы просто хотим использовать S3 из aws-java-sdk Я меняю зависимость, чтобы использовать aws-java-sdk-s3. и после этого изменения код генерирует ошибку компиляции.

Pom.xml

<!--        <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk</artifactId>
        <version>1.11.310</version>
    </dependency>-->

    <dependency>
        <groupId>com.amazonaws</groupId>
        <artifactId>aws-java-sdk-s3</artifactId>
        <version>1.11.311</version>
    </dependency>

Код Java:

    AWSCredentials credentials = new BasicAWSCredentials(
            ACCESS_KEY,
            SECRET_KEY
    );

    AmazonS3 s3client = AmazonS3ClientBuilder
            .standard()
            .withCredentials(new StaticCredentialsProvider(credentials))
            .withRegion(Regions.US_EAST_1)
            .build();

        java.util.Date expiration = new java.util.Date();
        long milliSeconds = expiration.getTime();
        // URL will be valid for 5 minutes only.
        milliSeconds += 1000 * 60 * 10; // Add 10 Mins.
        expiration.setTime(milliSeconds);

        GeneratePresignedUrlRequest generatePresignedUrlRequest =
                new GeneratePresignedUrlRequest(BUCKET, objectKey);
        generatePresignedUrlRequest.setMethod(HttpMethod.PUT);
        generatePresignedUrlRequest.setExpiration(expiration);

        URL url = s3client.generatePresignedUrl(generatePresignedUrlRequest);
        return url.toString();

Ошибка компиляции [ОШИБКА] S3CredentialService.java:[49,51] ошибка: невозможно получить доступ к SdkClientException

Дерево зависимостей.

[INFO] +- com.amazonaws:aws-java-sdk-s3:jar:1.11.311:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-kms:jar:1.11.18:compile
[INFO] |  +- com.amazonaws:aws-java-sdk-core:jar:1.11.18:compile
[INFO] |  |  +- commons-logging:commons-logging:jar:1.1.3:compile
[INFO] |  |  \- com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:jar:2.8.4:compile
[INFO] |  \- com.amazonaws:jmespath-java:jar:1.11.311:compile
Источник
kdgregory
8 апреля 2018 в 13:58
0

Что такое строка 49?

kdgregory
8 апреля 2018 в 13:59
0

Также: если вы запустите mvn dependency:tree, указывает ли aws-java-sdk-s3 aws-java-sdk-core как транзитивную зависимость? Если нет, то что-нибудь еще?

mostafa cs
9 апреля 2018 в 14:37
0

Это строка 49: URL-адрес = s3client.generatePresignedUrl(generatePresignedUrlRequest);

mostafa cs
9 апреля 2018 в 14:48
0

@kdgregory Я отредактировал вопрос, чтобы добавить дерево зависимостей.

kdgregory
9 апреля 2018 в 18:50
0

Хорошо, и это довольно ясно показывает, что версия aws-java-sdk-core — это 1.11.18, а не 1.11.311. Итак, следующий вопрос, на который вы должны ответить: почему это происходит? Скорее всего, где-то есть раздел dependencyManagement, или, возможно, вы импортируете "ведомость материалов" (bom), которая указывает эту версию.

Ответы (0)