使用 API Gateway 创建Step Functions API - Amazon Step Functions
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 API Gateway 创建Step Functions API

您可以使用Amazon API Gateway 将您Amazon Step Functions的 API 与 API Gateway API 中的方法相关联。在将 HTTPS 请求发送到 API 方法时,APAPI Gateway 将调用您的Step Functions API 操作。

本教程说明如何创建 API 来使用一个资源和 POST 方法与 StartExecution API 操作进行通信。您将使用Amazon Identity and Access Management (IAM) 控制台为 API Gateway 创建角色。然后,您将使用 API Gateway 控制台创建 API Gateway API,将方法映射到StartExecution API 操作。最后,您将部署和测试您的 API。有关此 API 操作的更多信息,请参阅 StartExecutionAmazon Step FunctionsAPI 参考中的

注意

尽管 Amazon API Gateway 可以通过调用开始执行Step FStartExecution unctions,但您必须调用DescribeExecution才能获得结果。

步骤 1:为 API Gateway 创建 IAM 角色

在创建 API Gateway API 之前,您需要授予 API Gateway 调用 Step Functions API 操作的权限。

为 API Gateway 设置权限
  1. 登录 IA M 控制台并选择角色创建角色

  2. 选择可信实体类型页面的Amazon服务下,从列表中选择 API Gateway,然后选择下一步:权限

  3. 附加权限策略页面上,选择下一步:标签

  4. (可选)在添加标签页面上,输入要添加的任何标签,然后选择下一步:查看

  5. 在 “查看” 页面上,输入APIGatewayToStepFunctions角色名称,然后选择 “创建角色”。

    IAM 角色显示在角色列表中。

  6. 选择角色的名称并记下 Role ARN (角色 ARN),如以下示例所示。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
将策略附加到 IAM 角色
  1. Roles (角色) 页面上,搜索您的角色 (APIGatewayToStepFunctions),然后选择该角色。

  2. Permissions 选项卡上,选择 Attach Policy

  3. Attach Policy 页面上,搜索 AWSStepFunctionsFullAccess,选择该策略,然后选择 Attach Policy

步骤 2:创建 API Gateway API API

创建 IAM 角色后,您可以创建自定义 API Gateway API。

创建 API
  1. 打开 Amazon API Gateway 控制台

  2. REST API 窗格上,选择构建

  3. 选择 New API (新 API)

  4. 设置部分中,输入StartExecutionAPI API 名称,然后选择创建 API

创建资源
  1. StartExecutionAPI资源页面上,选择操作创建资源

  2. 在 “新建子资源” 页上,输入execution资源名称”,然后选择 “创建资源”。

要成为 POST 方法
  1. /execution Methods 页面上,依次选择 ActionsCreate Method

  2. 从列表中选择 POST,然后选择选中标记。

为您的方法配置集成点
  1. /execution-POST-设置页面上,对于 “集成类型”,选择 “Amazon服务”。

  2. 对于Amazon区域,从列表中选择一个区域。

    注意

    有关当前支持 Step Functions 的区域,请参阅支持的区域

  3. 对于Amazon服务,从列表中选择 Step F unctions。

  4. 对于 HTTP Method,从列表中选择 POST

    注意

    所有Step Functions API 操作都使用 HTTPPOST 方法。

  5. 对于 Action Type,选择 Use action name

  6. 对于 Action (操作),输入 StartExecution

  7. 对于执行角色,输入您之前创建的 IAM 角色的角色 ARN,如以下示例所示。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  8. 选择 Save(保存)。

    API Gateway 和 Step Functions 之间的可视映射显示在 /execution-POST-方法执行页面上。

步骤 3:测试和部署 API Gateway API

创建 API 后,您可以测试和部署它。

测试 API Gateway 和Step Functions 之间的通信
  1. /execution - POST - Method Execution 页面上,选择 Test

  2. /execution-POST-方法测试页面上,使用现有状态机的 ARN 将以下请求参数复制到请求正文部分(或创建使用 Lambda 函数的新状态机),然后选择 Test

    { "input": "{}", "name": "MyExecution", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }
    注意

    有关更多信息,请参阅 Amazon Step FunctionsAPI 参考中的StartExecution请求语法

    如果您不想在 API Gateway 调用的正文中包含状态机的 ARN,则可以配置主体映射模板,如以下示例所示。

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld" }

    利用这种方法,可以根据您的开发阶段(例如 devtestprod)有不同的状态机。要发布更新,您只需更改阶段变量,如以下示例所示。

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.get(arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld))" }
  3. 执行将会启动,并且执行 ARN 及其纪元日期显示在 Response Body 下。

    { "executionArn": "arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution", "startDate": 1486768956.878 }
    注意

    可以通过在 Amazon Step Functions 控制台上选择您的状态机来查看执行。

部署 API
  1. StartExecutionAPI资源页面上,选择操作部署 API

  2. 在 “部署 API” 对话框中,从 “部署阶段” 列表中选择 [新阶段],输入alpha阶段名称,然后选择 “部署”。

测试部署
  1. StartExecutionAPI阶段页面上,展开 alpha//executionPOST

  2. alpha - POST - /execution 页面上,记下 Invoke URL (调用 URL),如以下示例所示。

    https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
  3. 在命令行中,使用您状态机的 ARN 运行 curl 命令,然后调用您的部署的 URL,如以下示例所示。

    curl -X POST -d '{"input": "{}","name": "MyExecution","stateMachineArn": "arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution

    将返回执行 ARN 及其纪元日期,如以下示例所示。

    {"executionArn":"arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution","startDate":1.486772644911E9}