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 容器中捕获引发的异常 - 如果有人有更好的方法,我会洗耳恭听。
假设我有一个带地图状态的阶跃函数。地图状态是一个批处理作业,与 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 容器中捕获引发的异常 - 如果有人有更好的方法,我会洗耳恭听。