AWS Step 函数、映射状态和批处理 Input/Output

AWS Step Function, Map State and Batch Input/Output

假设我有一个带地图状态的阶跃函数。地图状态是一个批处理作业,与 Docker 容器相关联。我想将输入参数传递给容器,并接收其他 SF 状态的输出。

我相信它可能是一个 Lambda 函数,以数组形式迭代输入,并将每个元素作为设置为容器的环境变量传递。但是使用 foreach + 环境变量的 lambda 会是什么样子呢?如何捕获 Docker 容器输出(我相信它可能是 S3 file/directory)?

还有什么可以替代 Lambda 函数吗?

处理迭代器:

如果您有一个预定义的输入数组,您希望使用地图状态对其进行迭代,那么您可以将其作为地图输入路径和 ItemsPath 传递,但在某些情况下,您可能需要设置一个 lambda,它将去为你创建那个列表。

您的 ItemsPath 可能类似于:

 "list": [
          {
            "input": "<my_cool_input parameters>"
          },
          {
            "input": "<my_cool_input parameters>"
          }...
         ]

处理输出:

据我所知,目前还没有办法将批处理计算的输出直接返回到状态机。所以你需要采取间接的方法。

一种方法是将 docker 容器的输出写入某个临时位置,例如 dynamodb 或 s3。然后你需要在你的 step 函数中有一个步骤来读取 dynamodb 的输出(你可以直接这样做,不需要 lambda,如果你写入 s3 那么你将需要一个 lambda 来读取输出)。

似乎也需要这种方法来从 docker 容器中捕获引发的异常 - 如果有人有更好的方法,我会洗耳恭听。