有什么方法可以从AWS Step Function读取S3文件的内容吗?

问题描述

我有一个特定的工作流程,我想将500个json字符串列表从lambda函数传递给step函数onBehalfOfContentOwner),然后在该step函数的映射状态下遍历该列表。从那里,我想将列表中的每个项目传递到一个单独的步骤函数stepFunction1),在其中要完成其他工作。

我的问题是,当传递给stepFunction2时,我的500个json字符串列表超过了AWS服务限制。我尝试将列表分成几个较小的段,但这会导致同时运行stepFunction1的多个调用,由于其他限制,我无法使用该调用。我的下一个想法是尝试将json字符串列表存储在S3存储桶中,从stepFunction1访问它,然后从那里进行遍历。有什么办法可以做到这一点?是否可以从AWS状态机读取S3中的文件?我在这里有些困惑。

解决方法

一种解决方案是将项目存储在Amazon DynamoDB表中,然后从AWS Step Functions直接访问它们。

这是一个如何从DynamoDB检索项目的示例:

"Read Next Message from DynamoDB": {
  "Type": "Task","Resource": "arn:aws:states:::dynamodb:getItem","Parameters": {
    "TableName": "MyTable","Key": {
      "MessageId": {"S.$": "$.List[0]"}
    }
  },"ResultPath": "$.DynamoDB","Next": "Do something"
}

您可以在文档中找到有关calling DynamoDB APIs with Step Functions的更多信息。

,

Step函数与AWS Lambda函数配合使用非常好,您可以轻松设计出色的工作流程。

您可以从Lambda中读取S3。最终,您的lambda可以单独工作,并成为step函数的一部分。

我建议您首先创建一个lambda函数,读取并处理s3文件,然后在适合您的情况下尝试使用stepfunction。