В Argo я иногда хочу передать каждый элемент, содержащийся в папке S3, в шаблон, используя withSequence:
на этапе рабочего процесса. Лучшая идея, которая у меня есть, - это сделать шаг с Python, который перечисляет всю папку, используя аналогичный процесс, который я использую с CSV, и преобразовывая его в список объектов JSON. Есть ли какой-нибудь встроенный способ сделать это?
Перебирать все файлы в папке S3 с помощью Argo Workflows
Ответы (2)
Входные параметры глобального рабочего процесса предназначены для ввода пользователем. В настоящее время нет автоматических инструментов для конкретных хранилищ для заполнения глобальных входных параметров.
У вас есть несколько вариантов: 1) сгенерировать список ключей внутри рабочего процесса и передать их в качестве параметров отдельному шагу или 2) сгенерировать список с помощью внешней программы и передать их как глобальные параметры в рабочий процесс.
Для первого варианта вы можете создать шаг, который использует клиент S3 для записи ключей в массив JSON на диске. Затем вы можете использовать Argo, чтобы превратить этот файл в выходной параметр шага. Наконец, на следующем шаге можно использовать withItems
перебрать ключи.
Для второго варианта вы можете использовать что-то на своем локальном компьютере (сценарий BASH, сценарий Python и т. Д.), Чтобы сгенерировать массив ключей S3 JSON и передать их (через любой механизм, который вы используете для отправки рабочих процессов) в качестве глобального параметра в Рабочий процесс. Затем вы перебираете параметр, используя withItems
, как и в предыдущем подходе.
Вы можете использовать os.listdir()
. Например, при условии, что Windows: os.listdir("C:/Users/Seanny123/folder")
может вернуть [file1.vbs, file2.mkv, file3.jpg]
.