AWS Step Functions Map状态:如何引用迭代器外部值
解决AWS Step Functions Map状态引用外部值的问题
要在Map状态的迭代器里访问外部值,你需要通过路径引用区分当前迭代项和外部输入数据,具体配置如下:
正确的Parameters配置
修改你的parameters字段,用$前缀引用Map外部的根级输入数据,用$$.Map.Item引用当前迭代的数组项:
const forkDeliveryStream = new sfn.Map(this, 'ForkDeliveryStream', { maxConcurrency: 3, // 受众增长后可考虑调高 itemsPath: '$.audience.L', parameters: { // 引用当前Map迭代的数组元素 Audience: '$$.Map.Item.S', // 引用Map状态外部的输入值(比如根级的Notification字段) Notification: '$.Notification', // 如果需要引用系统级执行属性(比如执行ARN),才用$$前缀的系统变量 // ExecutionArn: '$$.Execution.Id' }, }); forkDeliveryStream.iterator(new DeliveryStream(this, 'DeliveryStream'));
关键说明
$前缀路径:指向整个Step Function的原始输入数据,也就是Map状态之外的全局输入,比如$.Notification就是取输入根节点下的Notification字段值。$$前缀系统变量:$$.Map.Item代表当前Map迭代到的数组元素,配合你的itemsPath: '$.audience.L',就能拿到数组里的每一项。- 配置后,每个迭代器(
DeliveryStream状态)的输入会同时包含当前迭代的Audience和外部的Notification值,满足你的需求。
内容的提问来源于stack exchange,提问作者Pinwheeler
相关产品推荐
相关产品推荐

