You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用aws:loop迭代AWS自动化文档前置步骤的StringList输出?

解决AWS Systems Manager中aws:loop迭代前置步骤输出的问题

1. 先改变量引用格式(核心错误)

你在aws:loop里写的{{ Name.Output }}是错的,正确的引用规则是{{ 前置步骤的名称.输出定义里的Name }}。

举个例子:如果你的AWS-RunPowerShellScript步骤name是GetFileList,那loop里的Iterators应该写成:

"Iterators": "{{ GetFileList.Name }}",

报错提示找不到Name.Output,就是因为你搞反了引用格式。

2. 调整PowerShell脚本输出格式

AWS的StringList类型要求输出是每行一个元素,不是逗号分隔的字符串。把你的脚本改成每行输出一个文件名:

# 直接每行输出一个文件
Write-Output "a.file"
Write-Output "b.file"
Write-Output "c.file"

# 如果原来的输出是逗号分隔字符串,转成每行输出:
# $fileStr = "a.file, b.file, c.file"
# $fileStr -split ", " | ForEach-Object { Write-Output $_ }

3. 保持输出定义配置不变

你之前的输出定义是对的,不用改:

"outputs": [
  {
    "Type": "StringList",
    "Name": "Name",
    "Selector": "$.Payload"
  }
]

4. 最终loop配置示例

假设前置步骤名称是GetFileList,调整后的完整loop配置:

"name": "Loop",
"action": "aws:loop",
"nextStep": "NextStep",
"isEnd": false,
"inputs": {
  "Iterators": "{{ GetFileList.Name }}",
  "IteratorDataType": "StringList",
  "Steps": [
    // 循环内的步骤可以用{{ Iterator }}引用当前迭代的文件名
  ]
}

额外方案:用JSON数组输出

如果偏好输出JSON数组,脚本可以这么写:

@("a.file", "b.file", "c.file") | ConvertTo-Json

此时输出定义的Selector保持$.Payload即可,SSM会自动解析这个JSON数组为StringList。

内容的提问来源于stack exchange,提问作者frank.s

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 10:42:44