使用 Argo Workflows 遍历 S3 文件夹中的所有文件
Iterate over all files in S3 folder with Argo Workflows
在 Argo 中,有时我想将 S3 文件夹中包含的每个项目传递给模板,使用 withSequence:
field of the Workflow Step. The best idea I have is to have a step with Python which lists the whole folder using a similar process I use with CSVs 并将其转换为 JSON 对象的列表。有没有内置的方法来完成这个?
您可以使用 os.listdir()
。例如,假设 Windows:os.listdir("C:/Users/Seanny123/folder")
可能 return [file1.vbs, file2.mkv, file3.jpg]
.
全局工作流输入参数是用户输入的。目前没有特定于存储的自动化工具来填充全局输入参数。
您有两种选择:1) 在工作流内生成键列表,并将它们作为参数传递给单个步骤或 2) 使用外部生成列表编程并将它们作为全局参数传递给工作流。
对于第一个选项,您可以创建一个步骤,使用 S3 客户端将密钥写入磁盘上的 JSON 数组。然后您可以使用 Argo 将该文件拉入步骤输出参数。最后,后续步骤可以使用 withItems
循环键。
对于第二个选项,您可以使用本地计算机上的某些东西(BASH 脚本、Python 脚本等)生成一个 JSON S3 密钥数组并传递它们(通过您用来提交工作流的任何机制)作为工作流的全局参数。然后你将使用 withItems
循环遍历参数,就像在以前的方法中一样。
看起来可以迭代存储桶的内容 as of Argo Workflows 3.1 (see Data Sourcing and Transformations 以获取更多详细信息)。
在 Argo 中,有时我想将 S3 文件夹中包含的每个项目传递给模板,使用 withSequence:
field of the Workflow Step. The best idea I have is to have a step with Python which lists the whole folder using a similar process I use with CSVs 并将其转换为 JSON 对象的列表。有没有内置的方法来完成这个?
您可以使用 os.listdir()
。例如,假设 Windows:os.listdir("C:/Users/Seanny123/folder")
可能 return [file1.vbs, file2.mkv, file3.jpg]
.
全局工作流输入参数是用户输入的。目前没有特定于存储的自动化工具来填充全局输入参数。
您有两种选择:1) 在工作流内生成键列表,并将它们作为参数传递给单个步骤或 2) 使用外部生成列表编程并将它们作为全局参数传递给工作流。
对于第一个选项,您可以创建一个步骤,使用 S3 客户端将密钥写入磁盘上的 JSON 数组。然后您可以使用 Argo 将该文件拉入步骤输出参数。最后,后续步骤可以使用 withItems
循环键。
对于第二个选项,您可以使用本地计算机上的某些东西(BASH 脚本、Python 脚本等)生成一个 JSON S3 密钥数组并传递它们(通过您用来提交工作流的任何机制)作为工作流的全局参数。然后你将使用 withItems
循环遍历参数,就像在以前的方法中一样。
看起来可以迭代存储桶的内容 as of Argo Workflows 3.1 (see Data Sourcing and Transformations 以获取更多详细信息)。