本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
API使用API网关创建 Step Functions
您可以使用 Amazon API Gateway 关联您的 AWS Step Functions APIs在API网关中使用方法API。当向API方法发送HTTPS请求时,Gate API way 会调用您的 Step Fun API ctions 操作。
本教程向您展示如何创建使用API一种资源的,以及与StartExecution
API操作进行通信POST
的方法。你将使用 AWS Identity and Access Management (IAM) 控制台用于为 Gate API way 创建角色。然后,您将使用 API Gateway 控制台创建API网关API,创建资源和方法,并将该方法映射到StartExecution
API操作。最后,您将部署并测试您的API.
注意
尽管 Amazon API Gateway 可以通过调用来启动 Step Functions 的执行StartExecution
,但你必须调用DescribeExecution
才能得到结果。
步骤 1:为API网关创建IAM角色
在创建网关之前API,您需要授予API网关调用 St API ep Functions API 操作的权限。
为 Gate API way 设置权限
-
登录IAM控制台
并选择角色、创建角色。 -
在选择受信任的实体页面上,请执行以下操作:
对于 “可信实体” 类型,保留默认选择 AWS 服务.
对于用例,请从下拉列表中选择 APIGatewa y。
选择 “API网关”,然后选择 “下一步”。
-
在添加权限页面上,选择下一步。
-
(可选)在名称、查看和创建页面上,输入角色名称等详细信息。例如,输入
APIGatewayToStepFunctions
。 选择 Create role(创建角色)。
该IAM角色出现在角色列表中。
-
选择您的角色名称并记下该角色 ARN,如以下示例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
为IAM角色附加策略
-
在角色页面上,搜索您的角色 (
APIGatewayToStepFunctions
),然后选择该角色。 -
在权限选项卡上,选择添加权限,然后选择附加策略。
-
在附加策略页面上,搜索
AWSStepFunctionsFullAccess
,选择该策略,然后选择添加权限。
步骤 2:创建您的API网关 API
创建IAM角色后,您可以创建自定义API网关API。
要创建 API
-
打开 Amazon API Gateway 控制台
,然后选择创建API。 在 “选择API类型” 页面的RESTAPI窗格中,选择 “构建”。
在 “创建 REST API” 页面上,选择 “新建”API,然后输入
StartExecutionAPI
为了这个名API字。将API终端节点类型保留为区域,然后选择创建API。
创建资源
-
在 “资源” 页面上
StartExecutionAPI
,选择创建资源。 -
在创建资源页面上,输入
execution
作为资源名称,然后选择创建资源。
创建 POST 方法
-
选择 /execution 资源,然后选择创建方法。
-
对于方法类型,选择
POST
。 -
对于集成类型,选择 AWS 服务。
-
对于 AWS 区域,从列表中选择一个区域。
-
对于 AWS 服务,从列表中选择 Step F unctions。
保持 AWS 子域名空白。
-
对于HTTP方法,请POST从列表中选择。
注意
所有 Step Functions API 操作都使用该HTTP
POST
方法。 -
对于操作类型,选择使用操作名称。
-
对于操作名称,输入
StartExecution
。 -
在执行角色中,输入您之前创建ARN的IAM角色的角色,如以下示例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
-
对于凭证缓存和默认超时,保留默认选项,然后选择保存。
APIGateway 和 Step Functions 之间的可视映射显示在 /execution POST--方法执行页面上。
步骤 3:测试和部署API网关 API
创建完成后API,对其进行测试和部署。
测试 Gate API way 和 Step Functions 之间的通信
-
在 /execution POST--方法执行页面上,选择测试选项卡。您可能需要选择右箭头按钮,以显示该选项卡。
-
在 /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不同的状态机(例如
dev
test
、和prod
)。有关在映射模板中指定阶段变量的更多信息,请参阅 APIGateway 开发者指南$stageVariables
中的。 -
执行开始,执行ARN及其周期日期显示在响应正文下。
{ "executionArn": "
arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution
", "startDate": 1486768956.878 }注意
您可以通过在上选择状态机来查看执行情况 AWS Step Functions 控制台
。
要部署你的 API
-
在 “资源” 页面上
StartExecutionAPI
,选择 “部署” API。 对于阶段,选择新建阶段。
对于阶段名称,输入
alpha
。(可选)对于描述,输入描述。
选择部署。
测试部署
-
在 “阶段” 页面上
StartExecutionAPI
,展开 alpha、/、/ex ec POSTution、,然后选择POST方法。 -
在 “方法覆盖” 下,选择复制图标以复制您的API调用URL。完整内容URL应类似于以下示例。
https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
-
在命令行中,使用状态机运行
curl
命令,然后调用部署的,如以下示例所示。ARN URLcurl -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 结尾。