API使用API网关创建 Step Functions - AWS Step Functions

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

API使用API网关创建 Step Functions

您可以使用 Amazon API Gateway 关联您的 AWS Step Functions APIs在API网关中使用方法API。当向API方法发送HTTPS请求时,Gate API way 会调用您的 Step Fun API ctions 操作。

本教程向您展示如何创建使用API一种资源的,以及与StartExecutionAPI操作进行通信POST的方法。你将使用 AWS Identity and Access Management (IAM) 控制台用于为 Gate API way 创建角色。然后,您将使用 API Gateway 控制台创建API网关API,创建资源和方法,并将该方法映射到StartExecutionAPI操作。最后,您将部署并测试您的API.

注意

尽管 Amazon API Gateway 可以通过调用来启动 Step Functions 的执行StartExecution,但你必须调用DescribeExecution才能得到结果。

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

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

为 Gate API way 设置权限
  1. 登录IAM控制台并选择角色创建角色

  2. 选择受信任的实体页面上,请执行以下操作:

    1. 对于 “可信实体” 类型,保留默认选择 AWS 服务.

    2. 对于用例,请从下拉列表中选择 APIGatewa y。

  3. 选择 “API网关”,然后选择 “下一步”。

  4. 添加权限页面上,选择下一步

  5. (可选)在名称、查看和创建页面上,输入角色名称等详细信息。例如,输入 APIGatewayToStepFunctions

  6. 选择 Create role(创建角色)。

    该IAM角色出现在角色列表中。

  7. 选择您的角色名称并记下该角色 ARN,如以下示例所示。

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

  2. 权限选项卡上,选择添加权限,然后选择附加策略

  3. 附加策略页面上,搜索 AWSStepFunctionsFullAccess,选择该策略,然后选择添加权限

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

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

要创建 API
  1. 打开 Amazon API Gateway 控制台,然后选择创建API

  2. “选择API类型” 页面的RESTAPI窗格中,选择 “构建”。

  3. 在 “创建 REST API” 页面上,选择 “建”API,然后输入 StartExecutionAPI 为了这个名API字

  4. API终端节点类型保留为区域,然后选择创建API

创建资源
  1. 在 “资源” 页面上 StartExecutionAPI,选择创建资源

  2. 创建资源页面上,输入 execution 作为资源名称,然后选择创建资源

创建 POST 方法
  1. 选择 /execution 资源,然后选择创建方法

  2. 对于方法类型,选择 POST

  3. 对于集成类型,选择 AWS 服务

  4. 对于 AWS 区域,从列表中选择一个区域。

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

  6. 保持 AWS 子域名空白。

  7. 对于HTTP方法,请POST从列表中选择。

    注意

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

  8. 对于操作类型,选择使用操作名称

  9. 对于操作名称,输入 StartExecution

  10. 在执行角色中,输入您之前创建ARN的IAM角色的角色,如以下示例所示。

    arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
  11. 对于凭证缓存默认超时,保留默认选项,然后选择保存

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

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

创建完成后API,对其进行测试和部署。

测试 Gate API way 和 Step Functions 之间的通信
  1. /execution POST--方法执行页面上,选择测试选项卡。您可能需要选择右箭头按钮,以显示该选项卡。

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

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

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

    注意

    如果您不想在 Gate API way 调用的正文中包含状态机的,则可以在集成请求选项卡中配置映射模板,如以下示例所示。ARN

    { "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.arn)" }

    使用这种方法,您可以根据自己的开发阶段指定ARNs不同的状态机(例如devtest、和prod)。有关在映射模板中指定阶段变量的更多信息,请参阅 APIGateway 开发者指南$stageVariables中的。

  3. 执行开始,执行ARN及其周期日期显示在响应正文下。

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

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

要部署你的 API
  1. 在 “资源” 页面上 StartExecutionAPI,选择 “部署” API。

  2. 对于阶段,选择新建阶段

  3. 对于阶段名称,输入 alpha

  4. (可选)对于描述,输入描述。

  5. 选择部署

测试部署
  1. 在 “阶段” 页面上 StartExecutionAPI,展开 alpha//ex ec POSTution、,然后选择POST方法。

  2. 在 “方法覆盖” 下,选择复制图标以复制您的API调用URL。完整内容URL应类似于以下示例。

    https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
  3. 在命令行中,使用状态机运行curl命令,然后调用部署的,如以下示例所示。ARN 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}
    注意

    如果您收到 “缺少身份验证令牌” 错误,请确保调用URL以 /execution 结尾。