Amazon web services 有没有办法从AWS Step函数中读取S3文件的内容?
我有一个特定的工作流,其中我希望将500个json字符串的列表从lambda函数传递到step函数(Amazon web services 有没有办法从AWS Step函数中读取S3文件的内容?,amazon-web-services,amazon-s3,aws-lambda,aws-step-functions,Amazon Web Services,Amazon S3,Aws Lambda,Aws Step Functions,我有一个特定的工作流,其中我希望将500个json字符串的列表从lambda函数传递到step函数(stepFunction1),然后在该step函数的映射状态下迭代该列表。从这里开始,我想将列表中的每一项传递给一个单独的步骤函数(stepFunction2),在该函数中将完成额外的工作 我的问题是,当传递到stepFunction1时,我的500个json字符串列表超过了AWS服务限制。我曾尝试将列表拆分为几个较小的部分,但这会导致多次调用同时运行的stepFunction1,这是由于其他限制
stepFunction1
),然后在该step函数的映射状态下迭代该列表。从这里开始,我想将列表中的每一项传递给一个单独的步骤函数(stepFunction2
),在该函数中将完成额外的工作
我的问题是,当传递到
stepFunction1
时,我的500个json字符串列表超过了AWS服务限制。我曾尝试将列表拆分为几个较小的部分,但这会导致多次调用同时运行的stepFunction1
,这是由于其他限制而无法实现的。我的下一个想法是尝试将json字符串列表存储在S3存储桶中,从stepFunction1
访问它,然后从那里迭代它。有没有办法做到这一点?是否可以从AWS状态机读取S3中的文件?我在这里有点困惑。一种解决方案是将项目存储在Amazon DynamoDB表中,并直接从AWS Step函数访问它们
下面是一个如何从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"
}
您可以在文档中找到有关的更多信息。Step函数与AWS Lambda函数配合使用非常好,您可以轻松设计一个漂亮的工作流 您可以从lambda读取S3。最后,您的lambda可以单独工作,并且是step函数的一部分
我建议您首先创建一个lambda函数,读取并处理s3文件,然后尝试使用stepfunction(如果它适合您的场景)。这是一个好主意。所以,需要明确的是,应该可以从step函数迭代DynamoDB表?