【问题标题】:Is there any way to read the contents of an S3 file from an AWS Step Function?有没有办法从 AWS Step Function 读取 S3 文件的内容?
【发布时间】:2020-08-27 17:56:46
【问题描述】:

我有一个特定的工作流程,我想将一个包含 500 个 json 字符串的列表从 lambda 函数传递给一个步进函数 (stepFunction1),然后在该步进函数的映射状态下迭代该列表。从那里,我想将列表中的每个项目传递给一个单独的步骤函数 (stepFunction2),在那里将完成额外的工作。

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

【问题讨论】:

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


    【解决方案1】:

    一种解决方案是将项目存储在 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 函数遍历 DynamoDB 表?
    【解决方案2】:

    Step 函数与 AWS Lambda 函数配合得非常好,您可以轻松设计一个不错的工作流程。

    您可以从 lambda 读取 S3。最后,您的 lambda 可以单独工作并成为阶跃函数的一部分。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-27
      • 1970-01-01
      • 1970-01-01
      • 2019-05-02
      • 1970-01-01
      • 1970-01-01
      • 2017-03-28
      相关资源
      最近更新 更多