Перебирать все файлы в папке S3 с помощью Argo Workflows

В Argo я иногда хочу передать каждый элемент, содержащийся в папке S3, в шаблон, используя withSequence: на этапе рабочего процесса. Лучшая идея, которая у меня есть, - это сделать шаг с Python, который перечисляет всю папку, используя аналогичный процесс, который я использую с CSV, и преобразовывая его в список объектов JSON. Есть ли какой-нибудь встроенный способ сделать это?


person Seanny123    schedule 28.12.2020    source источник


Ответы (2)


Входные параметры глобального рабочего процесса предназначены для ввода пользователем. В настоящее время нет автоматических инструментов для конкретных хранилищ для заполнения глобальных входных параметров.

У вас есть несколько вариантов: 1) сгенерировать список ключей внутри рабочего процесса и передать их в качестве параметров отдельному шагу или 2) сгенерировать список с помощью внешней программы и передать их как глобальные параметры в рабочий процесс.

Для первого варианта вы можете создать шаг, который использует клиент S3 для записи ключей в массив JSON на диске. Затем вы можете использовать Argo, чтобы превратить этот файл в выходной параметр шага. Наконец, на следующем шаге можно использовать withItems перебрать ключи.

Для второго варианта вы можете использовать что-то на своем локальном компьютере (сценарий BASH, сценарий Python и т. Д.), Чтобы сгенерировать массив ключей S3 JSON и передать их (через любой механизм, который вы используете для отправки рабочих процессов) в качестве глобального параметра в Рабочий процесс. Затем вы перебираете параметр, используя withItems, как и в предыдущем подходе.

person Michael Crenshaw    schedule 28.12.2020

Вы можете использовать os.listdir(). Например, при условии, что Windows: os.listdir("C:/Users/Seanny123/folder") может вернуть [file1.vbs, file2.mkv, file3.jpg].

person Hunter Morris    schedule 28.12.2020