AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

阅读数:47 2019 年 10 月 14 日 13:00

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成
AWS Step Functions 是面向应用程序开发人员的完全托管式工作流服务。您可以从总体上进行思考和工作,以可靠和可重复的方式连接和协调活动,同时保持业务逻辑与工作流逻辑分离。在设计和测试工作流(我们称之为状态机)之后,您可以大规模进行部署,使数万甚至数十万个工作流同时独立运行。Step Functions 跟踪每个工作流的状态,负责重试瞬态故障活动,并简化监控和日志记录。要了解更多信息,请逐步浏览使用 AWS Step Functions 和 AWS Lambda 创建无服务器工作流教程。

自从我们在 AWS re:Invent 2016 上发布以来,我们的客户充分利用了 Step Functions(我的文章 Things go Better with Step Functions 描述了一个真实用例)。我们的客户喜欢这样一个事实:他们可以轻松调用 AWS Lambda 函数来实施业务逻辑,并要求我们提供更多选项。

更多集成,更强功能
今天,我们为您提供了通过 Step Function 状态机使用另外八项 AWS 服务的功能。以下是新操作:

DynamoDB – 从 Amazon DynamoDB 表中获取现有项目;将一个新项目放入 DynamoDB 表中。

AWS Batch – 提交 AWS Batch 作业并等待其完成。

Amazon ECS – 使用任务定义运行 Amazon ECS 或 AWS Fargate 任务。

Amazon SNS – 将消息发布到 Amazon Simple Notification Service (SNS) 主题。

Amazon SQS – 将消息发送到 Amazon Simple Queue Service (SQS) 队列。

AWS Glue – 启动 AWS Glue 作业运行。

Amazon SageMaker – 创建 Amazon SageMaker 训练作业;创建 SageMaker 转换作业(阅读 Amazon SageMaker 的新功能:工作流、算法和认证,了解更多信息)。

您可以单独使用这些操作,也可以将这些操作组合起来使用。为了帮助您入门,我们构建了一些很酷的示例,它们将向您展示如何管理批处理作业、管理容器任务、从 DynamoDB 复制数据、检索批处理作业的状态等。例如,下面以可视化形式展示了将数据从 DynamoDB 复制到 SQS 的示例:

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

该示例(可作为 AWS CloudFormation 模板使用)创建所有必要的移动部件(包括 Lambda 函数),这些移动部件将使用一些测试数据填充(种子填充)表。创建堆栈后,我可以在 Step Functions 控制台中找到状态机并执行它:

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

我可以检查控制台中的每一步;第一步(种子填充 DynamoDB 表)调用 Lambda 函数,该函数创建一些表条目并返回键列表(消息 ID):

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成
第三步(向 SQS 发送消息)从以下输入开始:

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

提供此输出,包括 SQS MessageId:
AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

如您所见,状态机负责处理所有繁重的工作 – 调用 Lambda 函数、迭代消息 ID 列表,并为每个消息 ID 调用 DynamoDB 和 SQS。我可以同时运行多个副本:

AWS Step Functions 的计算、数据库、消息传递、分析和机器学习集成

我相信您可以在这个示例的基础上,用它构建一些令人惊叹的内容;请务必查看其他示例和模板以获取一些想法!

如果您已经构建并运行自己的状态机,则应该了解 Magic ARN 和参数的一些信息:

Magic ARN – 这些新操作中的每一项都由一个特殊的“魔术”(这是 Tim 使用的技术术语)ARN 表示。一个用于发送到 SQS,另一个用于运行批处理作业,以此类推。

参数 – 您可以使用“任务”状态中的参数字段来控制传递给实施新函数的服务 API 的参数。您的状态机定义可以包括静态 JSON 或对状态输入中特定元素的引用(采用 JsonPath 形式)。

以下是使用 Magic ARN 和参数定义状态的方法:

复制代码
"Read Next Message from DynamoDB": {
"Type": "Task",
"Resource": "arn:aws:states:::dynamodb:getItem",
"Parameters": {
"TableName": "StepDemoStack-DDBTable-1DKVAVTZ1QTSH",
"Key": {
"MessageId": {"S.$": "$.List[0]"}
}
},
"ResultPath": "$.DynamoDB",
"Next": "Send Message to SQS"
},

现已推出
新的集成现已推出,您可以在所有推出 Step Functions 的 AWS 区域中使用它们。您为每个状态转换和您使用的 AWS 服务支付常规费用。

作者介绍:

Jeff Barr
AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。

本文转载自 AWS 技术博客。

原文链接:
https://amazonaws-china.com/cn/blogs/china/new-compute-database-messaging-analytics-and-machine-learning-integration-for-aws-step-functions/

欲了解 AWS 的更多信息,请访问【AWS 技术专区】

评论

发布