Как вывести список объектов с помощью delimeter и sort_by в aws s3 api? - PullRequest
0 голосов
/ 27 декабря 2018

Как вывести список объектов с помощью delimeter и sort_by в aws s3 api?

Я использовал приведенную ниже команду, чтобы вывести список объектов с помощью delimeter для печати только папки второго уровня -

aws s3api list-objects-v2 --bucket $bucketNameToUse --prefix $prefixToUse --output text --delimiter "/"
COMMONPREFIXES  firstlevelfolder1/
COMMONPREFIXES  firstlevelfolder2/

Работало нормальнои распечатывать папки второго уровня на основе префикса, который я передал.

И я использовал приведенную ниже команду для вывода списка объектов на основе даты последнего изменения.

aws s3api list-objects-v2 --bucket $bucketNameToUse --prefix $prefixToUse --output text --query 'sort_by(Contents,&LastModified)[*].[Key,LastModified]'
firstlevelfolder1/  2018-12-28T11:41:07.000Z
firstlevelfolder2/  2018-12-28T11:41:18.000Z
firstlevelfolder1/secondlevelfolder1/   2018-12-28T11:41:30.000Z
firstlevelfolder2/secondlevelfolder2/   2018-12-28T11:41:43.000Z
firstlevelfolder1/secondlevelfolder1/test.java  2018-12-28T11:42:28.000Z
firstlevelfolder2/secondlevelfolder2/test.java  2018-12-28T11:42:46.000Z

он работал нормально и печатал отсортированные объектыпо времени.

Но когда я попытался объединить обе команды, я получил ошибку -

aws s3api list-objects-v2 --bucket $bucketNameToUse --prefix $prefixToUse --output text --query 'sort_by(Contents,&LastModified)[*].[Key,LastModified]' --delimiter "/"

In function sort_by(), invalid type for value: None, expected one of: ['array'], received: "null"

Ответы [ 2 ]

0 голосов
/ 05 января 2019

Комбинация delimeter и sort_by с помощью lastModified невозможна, поскольку вывод delimeter не содержит ничего, кроме имени объекта, и когда мы объединяем оба delimeter с функцией sort_by, она генерируетошибка, так как не находит никакого контента для сортировки.

0 голосов
/ 27 декабря 2018

Ваша команда, вероятно, возвращает 0 объектов (None значение здесь), но метод sort_by ожидает массив

Проверьте, возвращает ли это объекты или нет: aws s3api list-objects-v2 --bucket $bucketNameToUse --prefix $prefixToUse --output text --delimiter "/"

Если это не так, то это ваша проблема.

...