Крок 1: Отримайте останню версію aws-java-sdk
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk</artifactId>
<version>1.11.660</version>
</dependency>
Крок 2: Правильний імпорт
import com.amazonaws.auth.AWSCredentials;
import com.amazonaws.auth.BasicAWSCredentials;
import com.amazonaws.regions.Region;
import com.amazonaws.regions.Regions;
import com.amazonaws.services.s3.AmazonS3;
import com.amazonaws.services.s3.AmazonS3Client;
import com.amazonaws.services.s3.AmazonS3ClientBuilder;
import com.amazonaws.services.s3.model.ListObjectsRequest;
import com.amazonaws.services.s3.model.ObjectListing;
Якщо ви впевнені, Specified key does not exists error
що сегмент існує, це означатиме, що ім'я сегмента написано неправильно (містить скісну риску або спеціальні символи). Зверніться до документації щодо правила іменування.
Документ цитує:
Якщо запитуваний об’єкт доступний у сегменті, і користувачі все ще отримують помилку 404 NoSuchKey від Amazon S3, перевірте наступне:
Переконайтеся, що запит точно відповідає назві об’єкта, включаючи великі літери імені об’єкта. Запити на об’єкти S3 чутливі до регістру. Наприклад, якщо об'єкт має ім'я myimage.jpg, але запитується Myimage.jpg, запитувач отримує помилку 404 NoSuchKey. Переконайтеся, що запитуваний шлях відповідає шляху до об’єкта. Наприклад, якщо шлях до об'єкта awsexamplebucket / Downloads / February / Images / image.jpg, але запитуваний шлях awsexamplebucket / Downloads / February / image.jpg, то запитувач отримує помилку 404 NoSuchKey. Якщо шлях до об’єкта містить пробіли, переконайтеся, що запит використовує правильний синтаксис для розпізнавання шляху. Наприклад, якщо ви використовуєте AWS CLI для завантаження об’єкта на свою машину Windows, ви повинні використовувати лапки навколо шляху до об’єкта, подібні до: aws s3 cp "s3: // awsexamplebucket / Завдання резервного копіювання 4 / 3T000000.vbk". За бажанням, ви можете ввімкнути журналювання доступу до сервера, щоб детальніше переглянути записи запитів на наявність проблем, які можуть спричинити помилку 404.
AWSCredentials credentials = new BasicAWSCredentials(AWS_ACCESS_KEY_ID, AWS_SECRET_KEY);
AmazonS3 s3Client = AmazonS3ClientBuilder.standard().withRegion(Regions.US_EAST_1).build();
ObjectListing objects = s3Client.listObjects("bigdataanalytics");
System.out.println(objects.getObjectSummaries());