S3 listObjectsV2 - StartAfter не показывает ожидаемые результаты - PullRequest
0 голосов
/ 01 ноября 2018

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

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

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» в запросе.

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

Спасибо

1 Ответ

0 голосов
/ 01 ноября 2018

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

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

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