调用同步快递工作流程 - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

调用同步快递工作流程

此示例项目演示了如何通过 Amazon API Gateway 调用同步快速工作流程来管理员工数据库。

在这个项目中,Step Functions 使用 API Gateway 端点启动 Step Functions 同步快速工作流程。然后,他们使用 DynamoDB 在员工数据库中搜索、添加和删除员工。

有关 Step Functions 同步快车工作流程的 Amazon Express同步和异步快速工作流程

注意

此示例项目可能会产生费用。

为新 Amazon 用户提供了免费使用套餐。在此套餐中,低于某种使用水平的服务是免费的。有关以下内容的 AmazonAmazon费用和免费套餐,请参阅Step Functions

步骤 1:创建状态机并配置资源

  1. 打开Step Functions然后选择创建状态机

  2. 类型Invoke Synchronous Express Workflows through API Gateway在搜索框中,选择通过以下方式调用同步快递工作流程API Gateway来自返回的搜索结果。

  3. 选择 Next(下一步)以继续。

  4. Step Functions 列出了Amazon Web Services在您选择的示例项目中使用。它还显示了示例项目的工作流程图。将此项目部署到你的Amazon Web Services 账户或 Amazon 将其作为构建自己的项目的起点。根据您想要的操作方式,选择运行演示要么在此基础上再接再厉

    此示例项目部署了以下资源:

    • 一个Amazon API Gateway由状态机调用的 HTTPS API。

    • Amazon DynamoDB 表。

    • 三Amazon Step Functions状态机。

    • 相关Amazon Identity and Access Management(IAM) 角色。

    下图显示了通过以下方式调用同步快递工作流程API Gateway示例项目:

    
            的工作流程图通过以下方式调用同步快递工作流程API Gateway样本项目。
  5. 选择使用模板继续进行选择。

  6. 请执行下列操作之一:

    • 如果你选择了在此基础上再接再厉,Step Functions 会为您选择的示例项目创建工作流程原型。Step Functions 不会部署工作流程定义中列出的资源。

      在工作流工作室中设计模式,从中拖放状态States 浏览器继续构建您的工作流程原型。或者切换到代码模式它提供了一个类似于 VS Code 的集成代码编辑器,用于更新Amazon States Language(ASL) 在 Step Functions 控制台中定义状态机。有关使用 Workflow Studio 构建状态机的更多信息,请参阅使用工作流工作室

      重要

      请记得在您之前更新示例项目中使用的资源的 Amazon 资源名称(ARN)。运行你的工作流程

    • 如果你选择了运行演示,Step Functions 创建了一个只读的示例项目,该项目使用Amazon CloudFormation用于部署的模板Amazon该模板中列出的资源给你的Amazon Web Services 账户。

      提示

      要查看示例项目的状态机定义,请选择代码

      准备好后,选择部署并运行部署示例项目并创建资源。

      创建这些资源和 Amazon 权限的 Amazon 权限最长可能需要 10 分钟。在部署资源时,您可以打开 CloudFormation 堆栈 ID 链接,用于查看正在配置哪些资源。

      创建示例项目中的所有资源后,您可以看到新示例项目列在状态机页面。

      重要

      中使用的每项服务都可能收取标准费用 CloudFormation 模板。

第 2 步:运行状态机

  1. 状态机页面上,选择您的示例项目。

  2. 在示例项目页面上,选择开始执行

  3. 开始执行对话框中,执行以下操作:

    1. (可选)要识别您的执行,可以在中为其指定一个名称姓名盒子。默认情况下,Step Functions 会自动生成一个唯一的执行名称。

      注意

      Step Functions 允许您创建包含非 ASCII 字符的状态机、执行和活动名称。这些非 ASCII 名称不适用于亚马逊 CloudWatch。为了确保你可以追踪 CloudWatch 指标,请选择一个仅使用 ASCII 字符的名称。

    2. (可选)在输入框中,输入 JSON 格式的输入值以运行您的工作流程。

      如果你选择运行演示,您无需提供任何执行输入。

      注意

      如果您部署的演示项目包含预先填充的执行输入数据,请使用该输入来运行状态机。

    3. 选择 Start execution (开始执行)

    4. Step Functions 控制台会将你引导到一个标题为你的执行 ID 的页面。这个页面被称为执行详情页面。在此页面上,您可以随着执行的进展或执行完成后查看执行结果。

      要查看执行结果,请在上选择各个状态图表视图,然后,选择上的 Amazon步骤详情窗格可分别查看每个状态的详细信息,包括输入、输出和定义。有关执行信息的详细信息,您可以在执行详情页面,请参阅执行详细信息页面-界面概述

示例状态机代码

此示例项目中的状态机通过使用 API Gateway 调用同步 Express 工作流程与 API Gateway 和 DynamoDB 集成,然后该工作流使用 DynamoDB 更新员工数据库或从员工数据库读取数据。

浏览此示例状态机,了解 Step Functions 如何从 DynamoDB 读取数据以检索员工信息。

要了解有关如何使用 API Gateway 调用 Step Functions 的更多信息,请参阅以下内容。

有关 Amazon Step Functions 如何控制其他 Amazon 服务的更多信息,请参阅将 Amazon Step Functions 与其他服务一起使用

{ "Comment": "This state machine returns an employee entry from DynamoDB", "StartAt": "Read From DynamoDB", "States": { "Read From DynamoDB": { "Type": "Task", "Resource": "arn:aws:states:::dynamodb:getItem", "Parameters": { "TableName": "StepFunctionsSample-SynchronousExpressWorkflowAKIAIOSFODNN7EXAMPLE-DynamoDBTable-ANPAJ2UCCR6DPCEXAMPLE", "Key": { "EmployeeId": {"S.$": "$.employee"} } }, "Retry": [ { "ErrorEquals": [ "DynamoDB.AmazonDynamoDBException" ], "IntervalSeconds": 3, "MaxAttempts": 2, "BackoffRate": 1.5 } ], "Next": "Is Get Successful" }, "Is Get Successful": { "Type": "Choice", "Choices": [ { "Variable": "$.Item", "IsPresent": true, "Next": "Succeed Execution" } ], "Default": "Fail Execution" }, "Succeed Execution": { "Type": "Pass", "Parameters" : { "employee.$": "$.Item.EmployeeId.S", "jobTitle.$": "$.Item.JobTitle.S" }, "End": true }, "Fail Execution": { "Type": "Fail", "Error": "EmployeeDoesNotExist" } } }

有关将 Step Functions 与其他函数一起使用时如何配置 IAMAmazon服务,请参阅集成服务的 IAM 政策

IAM 示例

这些例子Amazon Identity and Access Management示例项目生成的 (IAM) 策略包括执行状态机和相关资源所需的最低权限。我们建议您在 IAM 策略中仅包含必要的权限。

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogDelivery", "logs:GetLogDelivery", "logs:UpdateLogDelivery", "logs:DeleteLogDelivery", "logs:ListLogDeliveries", "logs:PutResourcePolicy", "logs:DescribeResourcePolicies", "logs:DescribeLogGroups" ], "Resource": "*" } ] }
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "dynamodb:GetItem", "dynamodb:PutItem", "dynamodb:UpdateItem", "dynamodb:DeleteItem" ], "Resource": [ "arn:aws:dynamodb:us-east-1:111122223333:table/Write" ] } ] }

有关将 Step Functions 与其他函数一起使用时如何配置 IAMAmazon服务,请参阅集成服务的 IAM 政策