【问题标题】:Access Map State ( item ) in Step functions在 Step 函数中访问 Map State ( item )
【发布时间】:2022-12-07 22:12:28
【问题描述】:

我正在尝试访问我正在使用地图状态迭代的项目属性。我不断收到此错误:

Value ($['Map'].snapshot_id.S) for parameter snapshotId is invalid. Expected: 'snap-...'. (Service: Ec2, Status Code: 400, Request ID: 6fc02935-c161-49df-8606-bc6f3e2934a6)

我浏览了文档,它似乎建议使用$.Map.snapshot_id.S 进行访问,但似乎不起作用。同时,Map的一个输入项是:

{
  "snapshot_id": {
    "S": "snap-01dd5ee46df84119e"
  },
  "file_type": {
    "S": "bash"
  },
  "id": {
    "S": "64e6893261d94669b7a8ca425233d68b"
  },
  "script_s3_link": {
    "S": "df -h"
  }
}

地图状态定义:

    "Map": {
          "Type": "Map",
          "ItemProcessor": {
            "ProcessorConfig": {
              "Mode": "INLINE"
            },
            "StartAt": "Parallel State",
            "States": {
              "Parallel State": {
                "Comment": "A Parallel state can be used to create parallel branches of execution in your state machine.",
                "Type": "Parallel",
                "Branches": [
                  {
                    "StartAt": "CreateVolume",
                    "States": {
                      "CreateVolume": {
                        "Type": "Task",
                        "Parameters": {
                          "AvailabilityZone": "us-east-2b",
                          "SnapshotId": "$$.Map.snapshot_id.S"
                        },
                        "Resource": "arn:aws:states:::aws-sdk:ec2:createVolume",
                        "Next": "AttachVolume"
                      },
                      "AttachVolume": {
                        "Type": "Task",
                        "Parameters": {
                          "Device": "MyData",
                          "InstanceId": "MyData",
                          "VolumeId": "MyData"
                        },
                        "Resource": "arn:aws:states:::aws-sdk:ec2:attachVolume",
                        "End": true
                      }
                    }
                  }
                ],
                "End": true
              }
            }
          },
          "Next": "Final Result",
          "ItemsPath": "$.Items",
          "MaxConcurrency": 40
        },

【问题讨论】:

    标签: amazon-web-services aws-lambda aws-step-functions


    【解决方案1】:

    长话短说;博士 $.snapshot_id

    默认情况下,每个内联映射迭代的输入都是来自 ItemsPath 数组的 one item,可以简单地通过 $ 访问。

    您的状态机定义暗示 $.Items 是具有 snapshot_id 键(和其他键)的对象数组。如果是这样,则每次迭代的快照 ID 都位于 $.snapshot_id

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-23
      • 2021-07-01
      • 2020-10-04
      相关资源
      最近更新 更多