使用Argo工作流遍历S3文件夹中的所有文件



在Argo中,我有时想使用工作流步骤的withSequence:字段将S3文件夹中包含的每个项目传递给模板。我的最佳想法是使用Python,使用我在CSV中使用的类似过程列出整个文件夹,并将其转换为JSON对象列表。有什么内在的方法可以实现这一点吗?

全局工作流输入参数是指用户输入。目前还没有特定于存储的自动化工具来填充全局输入参数。

您有两个选项:1(在工作流内部生成键列表,并将它们作为参数传递给单个步骤;2(使用外部程序生成列表,然后将它们作为全局参数传递给工作流。

对于第一个选项,您可以创建一个步骤,使用S3客户端将密钥写入磁盘上的JSON数组。然后,您可以使用Argo将该文件拉入步骤输出参数中。最后,后续步骤可以使用withItems在密钥上循环。

对于第二个选项,您可以在本地机器上使用一些东西(BASH脚本、Python脚本等(来生成S3键的JSON数组,并将它们(通过用于提交工作流的任何机制(作为全局参数传递给工作流。然后,您可以像前面的方法一样,使用withItems对参数进行循环。

从Argo Workflows 3.1开始,似乎可以迭代存储桶的内容(有关更多详细信息,请参阅数据源和转换(。

您可以使用os.listdir()。例如,假设Windows:os.listdir("C:/Users/Seanny123/folder")可能返回[file1.vbs, file2.mkv, file3.jpg]