本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 API Gateway 创建Step Functions API
您可以使用Amazon API Gateway 将您Amazon Step Functions的 API 与 API Gateway API 中的方法相关联。在将 HTTPS 请求发送到 API 方法时,APAPI Gateway 将调用您的Step Functions API 操作。
本教程说明如何创建 API 来使用一个资源和 POST
方法与 StartExecution
API 操作进行通信。您将使用Amazon Identity and Access Management (IAM) 控制台为 API Gateway 创建角色。然后,您将使用 API Gateway 控制台创建 API Gateway API,将方法映射到StartExecution
API 操作。最后,您将部署和测试您的 API。有关此 API 操作的更多信息,请参阅 StartExecutionAmazon Step FunctionsAPI 参考中的。
尽管 Amazon API Gateway 可以通过调用开始执行Step FStartExecution
unctions,但您必须调用DescribeExecution
才能获得结果。
步骤 1:为 API Gateway 创建 IAM 角色
在创建 API Gateway API 之前,您需要授予 API Gateway 调用 Step Functions API 操作的权限。
为 API Gateway 设置权限
-
登录 IA M 控制台
并选择角色、创建角色。 -
在选择可信实体类型页面的Amazon服务下,从列表中选择 API Gateway,然后选择下一步:权限。
-
在附加权限策略页面上,选择下一步:标签。
-
(可选)在添加标签页面上,输入要添加的任何标签,然后选择下一步:查看。
-
在 “查看” 页面上,输入
APIGatewayToStepFunctions
角色名称,然后选择 “创建角色”。IAM 角色显示在角色列表中。
-
选择角色的名称并记下 Role ARN (角色 ARN),如以下示例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
将策略附加到 IAM 角色
-
在 Roles (角色) 页面上,搜索您的角色 (
APIGatewayToStepFunctions
),然后选择该角色。 -
在 Permissions 选项卡上,选择 Attach Policy。
-
在 Attach Policy 页面上,搜索
AWSStepFunctionsFullAccess
,选择该策略,然后选择 Attach Policy。
步骤 2:创建 API Gateway API API
创建 IAM 角色后,您可以创建自定义 API Gateway API。
创建 API
-
在 REST API 窗格上,选择构建。
-
选择 New API (新 API)。
-
在设置部分中,输入
StartExecutionAPI
API 名称,然后选择创建 API。
创建资源
-
在
StartExecutionAPI
的资源页面上,选择操作,创建资源。 -
在 “新建子资源” 页上,输入
execution
“资源名称”,然后选择 “创建资源”。
要成为 POST 方法
-
在 /execution Methods 页面上,依次选择 Actions、Create Method。
-
从列表中选择
POST
,然后选择选中标记。
为您的方法配置集成点
-
在 /execution-POST-设置页面上,对于 “集成类型”,选择 “Amazon服务”。
-
对于Amazon区域,从列表中选择一个区域。
注意 有关当前支持 Step Functions 的区域,请参阅支持的区域。
-
对于Amazon服务,从列表中选择 Step F unctions。
-
对于 HTTP Method,从列表中选择 POST。
注意 所有Step Functions API 操作都使用 HTTP
POST
方法。 -
对于 Action Type,选择 Use action name。
-
对于 Action (操作),输入
StartExecution
。 -
对于执行角色,输入您之前创建的 IAM 角色的角色 ARN,如以下示例所示。
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
-
选择 Save(保存)。
API Gateway 和 Step Functions 之间的可视映射显示在 /execution-POST-方法执行页面上。
步骤 3:测试和部署 API Gateway API
创建 API 后,您可以测试和部署它。
测试 API Gateway 和Step Functions 之间的通信
-
在 /execution - POST - Method Execution 页面上,选择 Test。
-
在 /execution-POST-方法测试页面上,使用现有状态机的 ARN 将以下请求参数复制到请求正文部分(或创建使用 Lambda 函数的新状态机),然后选择 Test。
{ "input": "{}", "name": "MyExecution", "stateMachineArn": "
arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld
" }注意 有关更多信息,请参阅 Amazon Step FunctionsAPI 参考中的
StartExecution
请求语法。如果您不想在 API Gateway 调用的正文中包含状态机的 ARN,则可以配置主体映射模板,如以下示例所示。
{ "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "
arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld
" }利用这种方法,可以根据您的开发阶段(例如
dev
、test
和prod
)有不同的状态机。要发布更新,您只需更改阶段变量,如以下示例所示。{ "input": "$util.escapeJavaScript($input.json('$'))", "stateMachineArn": "$util.escapeJavaScript($stageVariables.get(
arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld
))" } -
执行将会启动,并且执行 ARN 及其纪元日期显示在 Response Body 下。
{ "executionArn": "
arn:aws:states:us-east-1:123456789012:execution:HelloWorld:MyExecution
", "startDate": 1486768956.878 }注意 可以通过在 Amazon Step Functions 控制台
上选择您的状态机来查看执行。
部署 API
-
在
StartExecutionAPI
的资源页面上,选择操作,部署 API。 -
在 “部署 API” 对话框中,从 “部署阶段” 列表中选择 [新阶段],输入
alpha
阶段名称,然后选择 “部署”。
测试部署
-
在
StartExecutionAPI
的阶段页面上,展开 alpha、/、/execution、POST。 -
在 alpha - POST - /execution 页面上,记下 Invoke URL (调用 URL),如以下示例所示。
https://a1b2c3d4e5.execute-api.us-east-1.amazonaws.com/alpha/execution
-
在命令行中,使用您状态机的 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}