AWS Step Functions
开发人员指南
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

使用 API 网关 创建 Step Functions API

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

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

注意

虽然 Amazon API Gateway 可以通过调用 StartExecution 启动 Step Functions 执行,但您必须调用 DescribeExecution 才能获得结果。

步骤 1:为 API 网关 创建 IAM 角色

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

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

  2. 选择受信任实体的类型页面上的 AWS 服务下,从列表中选择 API 网关,然后选择下一步: 权限

  3. Attached permissions policy 页面上,选择 Next: Review

  4. 审核页面上,为角色名称输入 APIGatewayToStepFunctions,然后选择创建角色

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

  5. 选择用于您的角色的名称,然后记下 Role ARN,例如:

    arn:aws-cn:iam::123456789012:role/APIGatewayToStepFunctions

将策略附加到 IAM 角色

  1. Roles 页面上,搜索您的角色 (APIGatewayToStepFunctions),然后选择该角色。

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

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

步骤 2:创建您的 API 网关 API

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

创建 API

  1. 导航到 Amazon API Gateway 控制台,然后选择 Get Started

  2. Create new API 页面上,选择 New API

  3. Settings (设置) 部分中,为 API name (API 名称) 输入 StartExecutionAPI,然后选择 Create API (创建 API)

创建资源

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

  2. New Child Resource (新建子资源) 页面上,为 Resource Name (资源名称) 输入 execution,然后选择 Create Resource (创建资源)

创建 POST 方法

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

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

配置该方法

/execution - POST - Setup 页面上,配置您的方法的集成点。

  1. 对于 Integration Type (集成类型),选择 AWS Service (AWS 服务)

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

    注意

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

  3. 对于 AWS Service (AWS 服务),从列表中选择 Step Functions

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

    注意

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

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

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

  7. 对于 Execution Role (执行角色),输入您之前创建的 IAM 角色的角色 ARN,例如:

    arn:aws-cn:iam::123456789012:role/APIGatewayToStepFunctions
  8. 选择 Save

    API 网关 与 Step Functions 之间的可视映射显示在 /execution - POST - Method Execution (/execution - POST - 方法执行) 页面上。

步骤 3:测试和部署 API 网关 API

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

测试 API 网关 与 Step Functions 之间的通信

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

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

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

    注意

    有关更多信息,请参阅 AWS Step Functions API 参考 中的 StartExecution 请求语法

    如果您不希望在 API 网关 调用正文中包含状态机的 ARN,可以配置正文映射模板,例如:

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

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

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

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

    注意

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

部署您的 API

  1. StartExecutionAPIResources 页面上,依次选择 ActionsDeploy API

  2. Deploy API (部署 API) 对话框中,从 Deployment stage (部署阶段) 列表中选择 [New Stage] ([新建阶段]),为 Stage name (阶段名称) 输入 alpha,然后选择 Deploy (部署)

测试部署

  1. StartExecutionAPIStages 页面上,展开 alpha//executionPOST

  2. alpha - POST - /execution 页面上,记下 Invoke 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-cn:states:us-east-1:123456789012:stateMachine:HelloWorld"}' https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution

    将返回执行 ARN 及其纪元日期,例如:

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