AWS lambda 类似于 Haskell 函数的执行

Posted

技术标签:

【中文标题】AWS lambda 类似于 Haskell 函数的执行【英文标题】:AWS lambda like execution of Haskell functions 【发布时间】:2015-10-02 11:24:57 【问题描述】:

在 AWS Lambda 中,人们可以创建 node.js 函数并通过事件触发它,例如消息等。

我想知道这如何“在幕后”工作,以及如何在 Haskell 中将这样的东西放在一起。上传的函数基本都是单函数库,没有任何main函数。

意味着在 CLI 上或通过 API,您可以按名称(以及所需的输入)调用任何函数,并获得由函数签名定义的输出——或者,当然也可以是错误。

在 Haskell 中可以做到这一点吗?

澄清一下:我想要做的是例如在 Haskell 平台或我的数据中心中的任何其他执行上下文上加载许多不同的单功能 Haskell 库,并通过 CLI 或通过名称执行/调用它们API 与 AWS Lambda 处理 node.js 函数的方式相同。

【问题讨论】:

您在寻找什么?可能是hackage.haskell.org/package/aws-lambda 我正在寻找一些指导,如何在没有主函数的情况下在 Haskell 中执行任意函数。 Haskell aws-lambda 包是 AWS API 的包装器,因此您可以在 Haskell 函数中执行/触发 lambda 函数。 我认为你必须澄清你想要做什么(使用 Haskell 语言编写一些 AWS Lambda 函数是不可能的),严格来说,任何程序都需要 main 函数才能工作(尽管那个函数遇到一些服务服务器)。您想使用 Haskell 编写 AWS Lambda 函数吗?然后看看 Amazon Linux... 添加了说明。希望这可以帮助。我认为,如果您使用 AWS lambda 工作,就会清楚我想要重现的外观和感觉。 【参考方案1】:

如果您想重现相同的功能(作为服务的功能),您可以使用很多技术(soap、rpc、rest,...)。如果您不知道,我建议您阅读一下。

我最喜欢的是 SOAP,但它是如此不受欢迎,而且 Haskell 支持有限soap(请参阅related question)。 SOAP(和其他人一样)提供您想要的。

但您必须具体化您的真正问题才能选择最佳技术。

如果您正在寻找分发自己的 Haskell 代码 Cloud Haskell 可能是一个很好的起点。

如果您需要更多类似“网络服务器”的内容,请查看 sodium、elm、... javascript 样式或 servant(生成某些语言的客户端代码)。

无论如何,即使是 AWS Lambda 也需要支持每种语言,您不应该期望找到一种普遍存在的 RPC 技术(如 HTTP)。

【讨论】:

【参考方案2】:

您可能想查看“haskell 无服务器”框架:http://qmu.li

您不仅可以使用它将单个 haskell 函数作为 Lambda 函数运行,还可以在 haskell 中描述您的整个 AWS 基础设施。 (相对于在 CloudFormation json/yaml 模板中进行),全部在本地构建并轻松部署到 AWS。

【讨论】:

以上是关于AWS lambda 类似于 Haskell 函数的执行的主要内容,如果未能解决你的问题,请参考以下文章

Idris——类似Haskell的纯函数编程语言

Haskell - lambda 表达式

Back4App 删除关联对象脚本。类似于 AWS lambda

适用于 postgreSQL 的 AWS Lambda 函数 NodeJs - 超时错误

当消息存在于 SQS 队列中时触发 AWS 中的 Lambda 函数

Twilio API 调用适用于本地环境,但不适用于 AWS Lambda 函数