如何使用 API Gateway POST 请求以及 Step Function 的请求 JSON 负载调用 AWS Step Function ?
1. 创建阶跃函数
非常明显。我想如果您正在阅读本文,您就知道该怎么做。
否则,您可以查看此处的文档:什么是 AWS Step Functions?.
2. 为您的 API 创建 IAM 角色
它可以适用于所有 Step Functions,也可以仅适用于这一功能。我们只会介绍第一种情况,如亚马逊教程中所述:使用 API Gateway 创建 API.
创建 IAM 角色
登录 AWS Identity and Access Management 控制台。
在角色页面上,选择创建新角色。
在设置角色名称页面上,键入 APIGatewayToStepFunctions 作为角色名称,然后选择下一步。
在选择角色类型页面上的选择角色类型下,选择 Amazon API Gateway。
在附加策略页面上,选择下一步。
在审核页面上,记下角色 ARN,例如:
arn:aws:iam::123456789012:role/APIGatewayToStepFunctions
- 选择创建角色。
将策略附加到 IAM 角色
- 在角色页面上,按名称搜索您的角色 (APIGatewayToStepFunctions),然后选择角色。
- 在权限选项卡上,选择附加策略。
- 在附加策略页面上,搜索 AWSStepFunctionsFullAccess,选择策略,然后选择附加策略。
3. Setup
3.a 如果您没有 JSON 负载
正如 Ka Hou Ieong 在《如何通过 API Gateway 调用 AWS Step Functions?,您可以通过 API Gateway 控制台创建 AWS 服务集成,如下所示:
- 集成类型:AWS服务
- AWS服务:步进功能
- HTTP方法:POST
- 动作类型:使用动作名称
- Action: 开始执行
- 执行角色:角色开始执行(我们刚刚创建的。只需粘贴它的 ARN)
-
Headers:
X-Amz-Target -> 'AWSStepFunctions.StartExecution'
内容类型 -> 'application/x-amz-json-1.0'
-
身体映射模板/请求负载:
{
"input": "string" (optional),
"name": "string" (optional),
"stateMachineArn": "string"
}
3.b 如果您确实有 JSON 负载作为输入传递
除了主体映射模板之外,一切都与 2.a 中相同。你要做的就是把它变成一个字符串。使用 $util.escapeJavascript(),例如这样。它将传递您的整个请求正文作为 Step Function 的输入
#set($data = $util.escapeJavaScript($input.json('$')))
{
"input": "$data",
"name": "string" (optional),
"stateMachineArn": "string" (required)
}
Notes
-
stateMachineArn
:如果您不想将 stateMachineArn 作为请求的一部分传递给 API Gateway,您可以简单地将其硬编码到您的 Body Mapping 模板中(请参阅具有 Step Function 的 AWS API 网关)
-
name
:省略 name 属性将使 API Gateway 在每次执行时为您生成不同的名称属性。
现在,这是我的第一个“回答你自己的问题”,所以也许这不是它的做法,但我确实花了相当多的时间试图理解我的映射模板出了什么问题。希望这将有助于节省其他人的头发和时间。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)