Перечислите все объекты в Amazon S3 с помощью Java SDK - PullRequest
0 голосов
/ 16 мая 2018

Я перечисляю все объекты в моем ведре. Вопрос в том, когда я перечисляю все объекты, последний объект в пакете снова рассматривает в следующей партии объекта и повторяет его для следующей партии. Почему это происходит так, как должно?Рассмотрим только 1000 объектов в пакете и не должны учитывать предыдущий пакетный объект.

BasicAWSCredentials credentials = new BasicAWSCredentials("foo", "bar");
client = AmazonS3ClientBuilder
.standard()
.withCredentials(new AWSStaticCredentialsProvider(credentials))
.withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(http://(serviceEndpoint), null(signingRegion is null))
.withPathStyleAccessEnabled(true)
.withChunkedEncodingDisabled(true)
.build();
ObjectListing listing = client.listObjects( "bucketname");
System.out.println("Listing size "+listing.getObjectSummaries().size());
System.out.println("At 0 index "+ listing.getObjectSummaries().get(0).getKey());
System.out.println("At 999 index "+ listing.getObjectSummaries().get(999).getKey());
SomeFunction(listing);

while (listing.isTruncated()) {
    System.out.println("-----------------------------------------------");
    listing = client.listNextBatchOfObjects(listing);
    System.out.println("Listing size "+listing.getObjectSummaries().size());
    System.out.println("At 0 index "+ listing.getObjectSummaries().get(0).getKey());
    System.out.println("At 999 index "+ listing.getObjectSummaries().get(1000).getKey());
    someFunction(listing);
}

Мой вывод:

Listing size 1000
At 0 index folder1/a.gz
At 999 index folder1/b.gz
---------------------------------------------------------------
Listing size 1001
At 0 index folder1/b.gz
At 1000 index folder1/d.gz
---------------------------------------------------------------
Listing size 1001
At 0 index folder1/d.gz
At 1000 index folder1/e.gz

Как вы можете видеть, первый индекс пакета 999 рассматривается ввторая партия (то же самое), почему? Это не должно произойти правильно? И следующая партия берет 1001 объект, включая последний из предыдущих, поскольку это должно дать следующую 1000, а не 1001.Помогите мне решить эту проблему. Спасибо.

1 Ответ

0 голосов
/ 18 мая 2018

Он не помещается в примечании, поэтому я поставил свой код здесь:

BasicAWSCredentials credentials = new BasicAWSCredentials(accessKey, secretAccessKey);
AmazonS3 s3Client = AmazonS3ClientBuilder
        .standard()
        .withCredentials(new AWSStaticCredentialsProvider(credentials))
        .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration("s3-us-west-1.amazonaws.com", region))
        .withPathStyleAccessEnabled(true)
        .withChunkedEncodingDisabled(true)
        .build();
ObjectListing listing = s3Client.listObjects(bucket);
int size = listing.getObjectSummaries().size();
if (size > 0) {
    System.out.println("Listing size " + size);
    System.out.println("At 0 index " + listing.getObjectSummaries().get(0).getKey());
    System.out.println("At " + (size - 1) + " index " + listing.getObjectSummaries().get(size - 1).getKey());
}

while(listing.isTruncated()) {
    System.out.println("-----------------------------------------------");
    listing = s3Client.listNextBatchOfObjects(listing);
    size = listing.getObjectSummaries().size();
    if (size > 0) {
        System.out.println("Listing size " + size);
        System.out.println("At 0 index " + listing.getObjectSummaries().get(0).getKey());
        System.out.println("At " + (size - 1) + " index " + listing.getObjectSummaries().get(size - 1).getKey());
    }
}

И вот результат:

Listing size 1000
At 0 index file0001.txt
At 999 index file1000.txt
-----------------------------------------------
Listing size 1000
At 0 index file1001.txt
At 999 index file2000.txt
-----------------------------------------------
Listing size 1000
At 0 index file2001.txt
At 999 index file3000.txt
-----------------------------------------------
Listing size 100
At 0 index file3001.txt
At 99 index file3100.txt

Я немного изменил ваш код для вывода размеров и индексов. Кстати, я использую 1.11.330 SDK версию.

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