亚马逊AWS官方博客

新增功能 – 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 ECSAWS 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 和参数定义状态的方法:

   "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年开始发布博客,此后便笔耕不辍。