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

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

使用 API Gateway 创建 Step Functions API

您可以使用亚马逊 API Gateway 来关联Amazon Step FunctionsAPI Gateway API 中包含方法的 API Gateway API。将 HTTPS 请求发送到 API 方法后,API Gateway 将调用您的 Step Functions API 操作。

本教程说明如何创建 API 来使用一个资源和 POST 方法与 StartExecution API 操作进行通信。您将使用Amazon Identity and Access Management(IAM) 控制台用于为 API Gateway 创建角色。然后,您将使用 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. 在存储库的/执行-POST-设置页面,集成类型,选择Amazon服务.

  2. 适用于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}