使用 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 FunctionsAPI Gateway API 中的方法。在将 HTTPS 请求发送到 API 方法后,API Gateway 将调用您的 Step Functions API 操作。

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

注意

尽管 Amazon API Gateway 可 Step Functions 过调用StartExecution,则必须调用DescribeExecution以获取结果。

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

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

设置 API Gateway 的权限

  1. 登录到IAM 控制台,然后选择角色创建角色

  2. 在存储库的选择受信任实体的类型页面,在Amazon服务中,选择API Gateway从列表中选择,然后选择后续:Permissions (下一步:权限)

  3. 在存储库的附加权限策略页面上,选择后续:标签

  4. (可选)在添加标签页面上,输入要添加的任何标签,然后选择后续:审核

  5. 在存储库的审核页面上,输入APIGatewayToStepFunctions对于 来说为Role name (角色名称),然后选择创建角色

    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

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

创建 API

  1. 打开Amazon API Gateway 控制台

  2. 在存储库的REST API窗格中,选择构建

  3. 选择 New API (新 API)

  4. 设置部分,输入StartExecutionAPI(对于 )API 名称,然后选择创建 API

创建资源

  1. StartExecutionAPIResources 页面上,依次选择 ActionsCreate Resource

  2. 在存储库的新子级资源页面上,输入execution对于 来说为Resource Name,然后选择创建资源

创建 POST 方法

  1. /execution Methods 页面上,依次选择 ActionsCreate Method

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

为您的方法配置集成点

  1. 在存储库的/执行-开机自检-设置页面, 对于集成类型中,选择Amazon服务

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

    注意

    对于当前支持 Step Functions 的区域,请参阅支持的区域

  3. 适用于Amazon服务中,选择Step Functions从列表中。

  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 之间的可视映射显示在/执行-POST-方法执行页.

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

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

测试 API Gateway 与 Step Functions 之间的通信

  1. /execution - POST - Method Execution 页面上,选择 Test

  2. /execution - POST - Method Test 页面上,使用现有状态机的 ARN 将以下请求参数复制到 Request Body 部分 (或者创建新状态机),然后选择 Test

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

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

    如果您不希望在 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. StartExecutionAPIResources 页面上,依次选择 ActionsDeploy API

  2. 部署 API对话框中,选择[新阶段]来自 的部署阶段列表中,输入alpha对于 来说为阶段名称,然后选择部署

测试部署

  1. StartExecutionAPIStages 页面上,展开 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}