gpt4 book ai didi

python - 如何访问作为输入工件传递给 argo 工作流中的脚本模板的文件内容

转载 作者:行者123 更新时间:2023-12-05 03:32:20 28 4
gpt4 key购买 nike

我正在尝试访问作为输入工件传递给脚本模板的文件的内容(json 数据)。它失败并出现以下错误 NameError: name 'inputs' is not defined。您是说:“输入”吗?

我的工件存储在 aws s3 存储桶中。我也尝试过使用环境变量而不是直接在脚本模板中直接引用工件,但它也不起作用。

这是我的工作流程

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
generateName: output-artifact-s3-
spec:
entrypoint: main
templates:
- name: main
dag:
tasks:
- name: whalesay-script-template
template: whalesay

- name: retrieve-output-template
dependencies: [whalesay-script-template]
arguments:
artifacts:
- name: result
from: "{{tasks.whalesay-script-template.outputs.artifacts.message}}"
template: retrieve-output


- name: whalesay
script:
image: python
command: [python]
env:
- name: OUTDATA
value: |
{
"lb_url" : "<>.us-east-1.elb.amazonaws.com",
"vpc_id" : "<vpc-id",
"web_server_count" : "4"
}
source: |
import json
import os
OUTDATA = json.loads(os.environ["OUTDATA"])
with open('/tmp/templates_lst.txt', 'w') as outfile:
outfile.write(str(json.dumps(OUTDATA)))
volumeMounts:
- name: out
mountPath: /tmp
volumes:
- name: out
emptyDir: { }
outputs:
artifacts:
- name: message
path: /tmp


- name: retrieve-output
inputs:
artifacts:
- name: result
path: /tmp
script:
image: python
command: [python]
source: |
import json
result = {{inputs.artifacts.result}}
with open(result, 'r') as outfile:
lines = outfile.read()
print(lines)
print('Execution completed')

这个工作流有什么问题?

最佳答案

在最后一个模板中,将 {{inputs.artifacts.result}} 替换为 ”/tmp/templates_lst.txt”

inputs.artifacts.NAMEsource 字段中没有任何意义,因此 Argo 将其保留原样。 Python 试图将其解释为代码,这就是您得到异常的原因。

在 Argo 中将输入工件传递给 Python 的正确方法是在模板输入定义中指定工件目的地(您已完成)。然后在 Python 中,以与在任何 Python 应用程序中相同的方式使用该路径中的文件。

关于python - 如何访问作为输入工件传递给 argo 工作流中的脚本模板的文件内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70495730/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com