GCP Workflow问题:无法将输入参数传入for循环
GCP Workflows部署报错:for-in loop is allowed only for an array object 解决办法
你的报错并非GCP Workflows不支持运行时参数传入for循环,而是部署阶段的静态类型校验导致的:
- 你通过
default(map.get(input, "my_list"), [])获取的my_list,在部署时校验器无法确定它的类型一定是数组(尽管运行时会兜底为数组),因此触发了类型检查错误。
两种修复方案:
方案1:用cast函数强制指定数组类型
通过cast明确告知校验器变量的类型为数组,通过静态检查:
main: params: [input] steps: - assign_vars: assign: - my_list: ${cast(default(map.get(input, "my_list"), []), '[]')} - for_each_item: parallel: for: value: item in: my_list steps: - log_item: call: sys.log args: data: item
方案2:直接在for的in中使用表达式
跳过变量赋值,直接将动态表达式放在for的in字段里,让校验器识别到这是一个数组表达式:
main: params: [input] steps: - for_each_item: parallel: for: value: item in: ${default(map.get(input, "my_list"), [])} steps: - log_item: call: sys.log args: data: item
这两种方式都能通过部署校验,且运行时可正常处理传入的my_list参数。
内容的提问来源于stack exchange,提问作者kyuden
相关产品推荐
相关产品推荐

