S3 listObjectsV2 — StartAfter не показывает ожидаемые результаты

Я пытаюсь получить все файлы в корзине, которые идут после определенного идентификатора.

Вот мой код, опущены не относящиеся к делу части.

require_once LIB . DS . 'Aws/vendor/autoload.php';
use Aws\S3\S3Client as S3Client;
use Aws\Credentials as Credentials;

$s3 = new S3Client([
'region'      => $region,
'version'     => 'latest',
'key'    => AWS_KEY,
'secret' => AWS_SECRET,
'credentials' => $credentials
]
);

$data = $s3->listObjectsV2(
[
'Bucket' => <MY BUCKET>,
// the response content should be after this record
'StartAfter' => '302760677',
'MaxKeys' => 2
]);
print_r($data);

Результат, который я получаю, выглядит следующим образом:

Aws\Result Object
(
[data:Aws\Result:private] => Array
(
[IsTruncated] => 1
[Contents] => Array
(
[0] => Array
(
[Key] => json/300705/300705046/status.json
[LastModified] => Aws\Api\DateTimeResult Object
(
[date] => 2018-06-20 11:45:06.000000
[timezone_type] => 2
[timezone] => Z
)
[ETag] => "2777f5fabc31969108b16cd8459d3b5d"[Size] => 945
[StorageClass] => STANDARD
)
[1] => Array
(
[Key] => json/300705/300705046/address.json
[LastModified] => Aws\Api\DateTimeResult Object
(
[date] => 2018-06-20 11:45:06.000000
[timezone_type] => 2
[timezone] => Z
)

[ETag] => "3fd8ef54a83e93d470f5438079f51345"[Size] => 477
[StorageClass] => STANDARD
)
)
)
)

Здесь возвращаемое содержимое ответа показывает данные для ключа — 300705046, что меньше того, что я указал в моем узле «StartAfter» в запросе.

Может ли кто-нибудь помочь мне понять, что я могу делать неправильно.

Спасибо

0

Решение

StartAfter (документы) должен быть точным ключом.

Из ответа не похоже, что это так, например, вам может потребоваться запрос с помощью:

'StartAfter' => 'json/302760/302760677/address.json',
1

Другие решения

Других решений пока нет …