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 CloudFormation 模板使用)创建所有必要的移动部件(包括 Lambda 函数),这些移动部件将使用一些测试数据填充(种子填充)表。创建堆栈后,我可以在 Step Functions 控制台中找到状态机并执行它:
我可以检查控制台中的每一步;第一步(种子填充 DynamoDB 表)调用 Lambda 函数,该函数创建一些表条目并返回键列表(消息 ID):
第三步(向 SQS 发送消息)从以下输入开始:
提供此输出,包括 SQS MessageId:
如您所见,状态机负责处理所有繁重的工作 – 调用 Lambda 函数、迭代消息 ID 列表,并为每个消息 ID 调用 DynamoDB 和 SQS。我可以同时运行多个副本:
我相信您可以在这个示例的基础上,用它构建一些令人惊叹的内容;请务必查看其他示例和模板以获取一些想法!
如果您已经构建并运行自己的状态机,则应该了解 Magic ARN 和参数的一些信息:
Magic ARN – 这些新操作中的每一项都由一个特殊的“魔术”(这是 Tim 使用的技术术语)ARN 表示。一个用于发送到 SQS,另一个用于运行批处理作业,以此类推。
参数 – 您可以使用“任务”状态中的参数字段来控制传递给实施新函数的服务 API 的参数。您的状态机定义可以包括静态 JSON 或对状态输入中特定元素的引用(采用 JsonPath 形式)。
以下是使用 Magic ARN 和参数定义状态的方法:
现已推出
新的集成现已推出,您可以在所有推出 Step Functions 的 AWS 区域中使用它们。您为每个状态转换和您使用的 AWS 服务支付常规费用。
作者介绍:
Jeff Barr
AWS 首席布道师; 2004 年开始发布博客,此后便笔耕不辍。
本文转载自 AWS 技术博客。
原文链接:
评论