如何使用 API Gateway 调用 AWS Step Function

2023-11-27

如何使用 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(使用前将#替换为@)

如何使用 API Gateway 调用 AWS Step Function 的相关文章

随机推荐

  • 这种自由项变量错误(在宏展开时产生)可以避免吗?

    我正在开发 DSL 并且在扩展宏时遇到 自由术语 失败 我想知道是否可以避免 我把问题简化为以下情况 假设我们有这个表达式 val list join 0 1 2 3 println list 其中 join 是一个宏 其实现是 def j
  • 如何在 Repeater 项中找到选中的 RadioButton?

    我在 ASPX 页面上有一个 Repeater 控件 定义如下
  • 使用 Azure 在哪里存储用户图片等内容?斑点存储?

    我刚刚将我的一个测试用例项目迁移到微软的azure 但对于类似于头像上传的功能 我需要对硬盘上的文件进行写访问 但这是云 所以这是不可能的 我怎样才能构建这样的功能呢 我应该使用 Blob 存储还是有更好的解决方案 将所有网站图像 例如布局
  • 如何从 Firebase 实时数据库获取数据到 Flutter 列表中?

    我正在尝试使用模型将 Firebase 实时数据库中的数据检索到 Flutter 中的列表中 当我这样做时 我的列表返回为空 我已经阅读了其他几篇有关将 Firebase 与 Flutter 结合使用的文章 但尚未找到明确的答案 这是我当前
  • 标签下方的中心单选按钮

    假设我有一些单选按钮 其标签如下所示
  • Haskell:输入“导入”时解析错误

    我正在尝试重新创建输出这个哈斯克尔代码 forM flip mapM import Control Monad Cont main do forM 1 3 i gt do print i forM 7 9 j gt do print j w
  • 在表单中提交禁用的输入无法获取值

    形式如下
  • GTK# .NET 应用程序,无需单独安装 GTK#

    我在 Windows 上使用 MonoDevelop 开发 C 应用程序 发现我喜欢使用 GTK 而不是 winforms 然而 据我所知 到目前为止 您不能仅仅将 GTK 运行时嵌入到应用程序中 问题是我不想要求我正在开发的应用程序的最终
  • MySQL可以替换多个字符吗?

    我正在尝试替换 MySQL 字段中的一堆字符 我知道 REPLACE 函数 但它一次只能替换一个字符串 我看不到任何合适的功能在手册中 我可以一次替换或删除多个字符串吗 例如 我需要用破折号替换空格并删除其他标点符号 您可以链接 REPLA
  • 更新面板错误:在 UpdatePanel 中找不到 ID 为“xxx”的控件

    我有一个复合下拉日历用户控件 由文本框和日历图像以及验证控件组成 我在用户控件上公开了一个名为 TextBox 的属性 该属性返回对控件内使用的文本框的引用 这是用户输入日期的文本框 在 ASPX 页面中 我有一个此用户控件的实例
  • 传递可变参数模板参数的位置

    我想创建一个采用可变数量模板参数的函数 稍后 使用这些参数 函数应该像这样传递它们的位置 template
  • 长ID的性能

    我想知道这个问题已经有一段时间了 在 CouchDB 中 我们有一些相当日志的 ID 例如 000ab56cb24aef9b817ac98d55695c6a 现在 如果我们正在搜索该项目并浏览由视图创建的树结构 看起来一个简单的整数作为 i
  • 为什么派生类不能在此代码中调用受保护的成员函数?

    include
  • 线程和文件写入

    我有一个使用 20 个线程的 java 程序 他们每个人都将结果写入一个名为output txt 我总是得到不同数量的行output txt 会不会是线程同步的问题 有办法处理这个问题吗 难道是线程同步的问题 Yes 有办法处理这个吗 是的
  • 如何构建使用 CMake FetchContent 下载的外部库?

    我有一个依赖于外部库 例如 SDL 的程序 我希望 CMake 为我处理这种依赖性 所以我正在研究FetchContent 据我了解 该模块只是下载源代码 以便可以在以下位置获得有关外部库的信息配置时间 例如 include FetchCo
  • SVN:发布分支和外部?

    我们有两个针对同一客户的网站 主 www 网站和另一个位于单独服务器上的电子商务网站 它们使用共享的代码部分 各种功能 样式 javascript 等 目前 我们通过将共享代码作为 SVN 中的单独项目 在同一存储库中 并使用 svn ex
  • Python3中如何设置文件权限?

    Python 自己的文档非常简洁地介绍了如何使用类似的函数os fchmod os chmod 我对这样的数字感到困惑777和类似的表达方式stat S IWRITE stat S IEXEC 是什么mode 0o777我在一些函数中看到o
  • 首先在 EF 4.1 代码中映射关联表

    我不确定如何映射下面的表格EF 4 1 code first以及我需要哪些对象来代表表格 我如何检索产品规格列表 我目前只有一个Product class Products Table Id Name IsActive ProductSpe
  • 如何正确配置 Cocoa Pods 项目?

    在我过去的一些项目中 Cocoa Pods 的配置不正确 这会导致一些不良情况 例如项目导航器中需要重复的 Cocoa Pod 项目 或者必须将 pod 文件签入版本控制 如何正确安装 Cocoa Pods 并验证我的目录结构和项目导航器结
  • 如何使用 API Gateway 调用 AWS Step Function

    如何使用 API Gateway POST 请求以及 Step Function 的请求 JSON 负载调用 AWS Step Function 1 创建阶跃函数 非常明显 我想如果您正在阅读本文 您就知道该怎么做 否则 您可以查看此处的文