问题标签 [aws-step-functions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
12704 浏览

amazon-web-services - Api 网关从 step 函数获取输出结果?

我遵循了有关创建和调用步进函数的教程

我在 api 的 GET 请求中得到输出

但是,我想要我的阶跃函数输出而不是上述响应,它由结束状态给出,如下所示。

如何做到这一点?

0 投票
2 回答
578 浏览

amazon-web-services - AWS Step Functions:调用特定步骤的不同实例?

我有一个项目清单。此列表的长度未知。我想使用循环对每个项目执行一些相当繁重的处理。我想知道是否可以使用状态机来做到这一点。更具体地说,我可以让机器的一个步骤执行循环并启动每个项目的下一步实例吗?如果不是,你会建议什么?目标是尽可能保持无服务器。

PS我知道我可以使用步进函数进行迭代,但是状态机会在几分钟后超时,如果处理是串行完成的,恐怕没有足够的时间来处理所有项目。

0 投票
3 回答
3935 浏览

amazon-web-services - 具有长时间运行任务的应用程序适用于 AWS Lambda 或 AWS Step Functions

我在每天运行一次的 AWS EC2 实例上有一个应用程序。该应用程序从 Web 服务获取一些文件,逐行解析文件,更新数据库,根据数据库中的更改更新 S3 文件,向客户发送通知电子邮件以及其他一些任务。

这是一系列必须按顺序执行的逻辑任务,尽管有些任务可以被认为是可以并行执行的子任务。所有任务都是 Perl 脚本和 Java 程序的组合,其中一个 Perl 脚本充当依次执行每个任务的管理器。有些任务可能需要长达 45 分钟才能完成,而整个过程总共可能需要长达 3 小时。

我想让整个过程serverless。我最初的想法是使用AWS Lambda,每个任务都将作为 Lambda 函数执行,直到我发现 Lambda 函数强制执行 5 分钟超时。看起来AWS Step Functions服务实际上更适合我的用例,但我的理解是这个服务是由 Lambda 支持的,所以任务仍然有 5 分钟的执行限制。

(我也知道我必须将我的 Perl 脚本重新编写为 Lambda 支持的语言)。

我假设我可以通过将代码重构为较小的函数来解决执行时间限制,这些函数将保证在 5 分钟内完成。不过,在我的特殊情况下,这似乎效率低下。

目前,数据库更新任务一次处理一个文件中的行。为了与 Lambda 一起工作,Lambda 函数只需要处理文件中的一行(或非常少的行),以保证不会溢出超过 5 分钟的执行时间。这将涉及在每次调用 Lambda 函数时打开和关闭与数据库的连接。此外,处理的每一行都应导致写入文件的条目,以存储在 S3 中。现在,我只是在内存中保留一个文件句柄,并在处理完所有行后将文件写入 S3,但是使用 Lambda,我需要继续读取文件、更新文件并将其写回 S3。

我要问的是:

  • 我的用例是否不适合 AWS Lambda 和/或 AWS Step Functions?
  • 我是否误解了这些服务的运作方式?
  • 还有其他更适合我的使用案例的 AWS 服务吗?

经过进一步研究,我认为AWS Batch可能是一个好主意

0 投票
1 回答
3827 浏览

amazon-web-services - AWS Step Functions:创建新状态机时不显示现有角色列表

问题:

1) 我用“Hello World”蓝图创建了新的 AWS 状态机

2)点击创建状态机按钮

3) 它打开一个对话框并选择 iam 角色下拉列表为空,并且未显示与我的 aws 帐户关联的现有 iam 角色列表

调试:

我发现它在执行任何其他操作之前加载仪表板本身时会引发以下 JS 错误。

JS 错误:grapheneConsole_prod_963c8da….gz.js:110 POST https://us-west-2.console.aws.amazon.com/states/service/iam/createrole 403(禁止)

所以我认为它假设用户拥有我没有的“创建角色”权限。

如果有人以前遇到过这个问题并解决了它。请帮我。

一些额外信息:我使用的是分配给所有开发人员的公司 aws 帐户。同样对于 lambda 或任何其他 AWS 资源,我们已经被赋予了我们应该使用的特定开发角色,并且我已经成功地将它与其他所有东西一起使用,以及创建 lambda。如果它会向我显示列表,我会选择相同的 iam 角色

0 投票
1 回答
1761 浏览

amazon-web-services - 是否可以从 CloudWatch 为 Lambda 状态函数集创建计划规则

我想使用 CloudFormation 按计划(30 分钟)使用 Step Functions 将一堆预先存在的 Lambda 函数创建到状态机中。我已经成功地为我的其他方法创建了堆栈。

本质上,我需要有关如何在 CloudFormation中为 Step Functions创建计划事件的帮助或指导。这是我一直在尝试的:

但我不断收到错误,例如

[错误] /Resources/NOTDScheduler/Properties/Targets/0/statemachineARN/Fn::GetAtt:资源类型 AWS::StepFunctions::StateMachine 不支持属性 {Arn}。

并且不知道 Arn 如何不是受支持的属性。有解决方法吗?

0 投票
4 回答
1496 浏览

python - 使用 API Gateway 处理 AWS Lambda 错误

class BadRequest(Exception): pass的 Lambda 函数中有。

我想让raise BadRequest("Invalid request params")API 返回一个状态码为 400 和正文{ "message": "Invalid request params" }(或等效项)的响应。

然而,简单地这样做会返回一个状态码为 200(哦,不!)和正文的响应

在网上搜索后,似乎我有3个选择:

1)chalice

2)使用集成响应和方法响应将该错误解析为更好的响应。当我抛出异常时,我会喜欢正则表达式[BadRequest].*并插入一个前缀(不是很优雅的 IMO)。

3) 使用Step Functions创建 API 的有状态表示。这似乎有点乏味,因为我需要学习 ASL,而且我不认识任何聋人。-.-

-.-亚马逊国家语言


我应该去哪个兔子洞,为什么?

0 投票
2 回答
5378 浏览

amazon-web-services - 带有 Step Function 的 AWS API 网关

我想要一个将 AWS API Gateway 与 Step Function 集成的示例。我已阅读本教程使用 API Gateway 创建 Step Functions API,但该教程需要我以以下格式发送请求

我想发送正常请求并仅在 API Gateway 中配置此stateMachineArn,以便客户端不需要发送此内容。

0 投票
2 回答
6832 浏览

amazon-web-services - 通过步进函数执行 lambda 时出错

我正在执行步进功能。但是,我在执行一种状态时遇到错误。

它给出错误:Lambda.Unknown Cause:无法确定原因,因为 Lambda 没有返回错误类型。

我的 lambda 函数调用外部 web 服务。我不想等到收到 web 服务响应。

我们可以在不等待 web 服务响应的情况下从函数返回数据吗?

我的 Lambda 函数

0 投票
2 回答
1436 浏览

amazon-web-services - 如何在 AWS 步骤函数中自动扩展工作人员

我们正在使用 AWS 步骤函数实施流程。这个过程中的一些任务需要很长时间。我们在这一步使用在 ECS 实例中运行的活动(工作人员)。状态机是这样的:

触发器 -> 步骤 1 (Lambda) -> 步骤 2 (ECS) -> 最后一步

有没有办法找到队列中等待 step2 工作人员拾取的任务数量并使用此信息自动扩展工作人员(ECS 集群)?

0 投票
2 回答
5294 浏览

amazon-web-services - AWS Step Functions 历史事件限制

我对一个大循环使用步进函数,到目前为止没问题,但是当我的循环超过 8000 次执行时,我遇到了错误“最大执行历史大小”,即 25000。

有没有没有历史事件的解决方案?

否则,我可以轻松迁移我的步进函数(3 lambda),因为 aws batch 会要求我重写很多代码..

非常感谢