Как я могу найти файлы Json, хранящиеся в моем хранилище s3, с моего локального компьютера? - PullRequest
0 голосов
/ 26 марта 2020

В моем хранилище s3 хранятся тысячи json файлов, и мне нужно выполнить поиск grep для строки "name".

Я настроил AWS cli ok, поскольку могу распечатать все файлы в корзине (с помощью команды ls).

Я пробовал 2 следующие команды:

1)

aws s3 ls s3://training | grep 'name'

Это ничего не дало

2)

aws s3 cp s3://training/*json - | grep 'name'

Это привело к ошибке:

Ошибка загрузки: s3: // training / *json to - Произошла ошибка (404) при вызове операция HeadObject: не найдена

Я знаю, что имя строки существует на 100%, поскольку это имя поля, которое указывается несколько раз в каждом json

Любые идеи я делаю неправильно?

1 Ответ

0 голосов
/ 26 марта 2020

Ваш первый пример терпит неудачу, потому что вы перечисляете объекты, а не распечатываете содержимое объектов.

Ваш второй пример терпит неудачу, потому что вы не можете использовать подстановочные знаки с запросами S3.

One способ сделать это - синхронизировать c файлы локально, затем выполнить grep локальных файлов, затем удалить локальные файлы (или просто оставить их на месте для оптимизации будущих синхронизаций). Для этого вы можете использовать aws s3 sync.

Другой вариант - использовать Афина для запроса содержимого JSON. Например, вы можете использовать SQL запросов.

Другим вариантом будет создание поискового индекса при загрузке документов на S3. Вы можете вызвать функцию Lambda, которая считывает содержимое объекта и индексирует его в другой объект S3, или таблицу DynamoDB, или даже Elasticsearch, если это важная система.

...