问题标签 [serverless]

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 投票
1 回答
4162 浏览

python-2.7 - 每当使用无服务器将文件上传到 s3 存储桶时获取电子邮件

我想在将文件上传到 s3 存储桶时收到电子邮件,如上面的标题所述,我使用的是无服务器,问题是我在 s3 上创建的事件只在 s3-aws 控制台上给我通知,并且不要不知道如何在 S3 上配置 cloudwatch 事件来触发 lambda。所以,如果有人知道如何使用 cloudwatch 在 S3 上触发事件,我会全力以赴。这是我的代码:

这是我的 serverless.yml 文件

0 投票
0 回答
165 浏览

node.js - 具有项目集属性的 Dynamodb 搜索/查询 GSI

我在使用具有项目集值的属性的 GSI 时遇到问题,如果有人能指导我如何解决这个问题,我将不胜感激。例如我想查询 {"queryStringParameters": {"cities": ["Chicago", "Ikeja", "Victoria Island"]}} 的属性

0 投票
1 回答
8477 浏览

node.js - What's the correct way of returning HTTP error codes in serverless lambda

I have a serverless lambda function written in Node.JS.

What is the best / correct way of returning error codes?

The pattern that I use right now (and it works!) is:

When I make a call, for example from POSTMAN, to my endpoint I get:

Status: 404 Not Found which is exactly what I'm expecting.

Moreover, in the logs I can see:

That works well.

What bothers me is that I'm passing null as the error. Looking into a few other tutorials/examples I've found patterns like:

https://aws.amazon.com/blogs/compute/error-handling-patterns-in-amazon-api-gateway-and-aws-lambda/

https://serverless.com/framework/docs/providers/aws/events/apigateway/

callback ("the sky is falling!");

callback("[BadRequest] Validation error: Missing field 'name'");

callback("[404] Not Found");

callback(new Error('[404] Not found'));

callback(JSON.stringify(myErrorObj));

All of them make perfect sense and you can specify HTTP Status Code - yet what I'm getting is HTTP Status Code 200 in the end. When I look at the logs I can see that the error was followed straight after with 200:

In this place I've found following explanation: https://github.com/serverless/serverless/issues/4119

If you want to respond with HTTP errors in that case, you have to encode the HTTP error as successful Lambda response

with following example:

So that's basically the same way I've. For the sake of completeness, I can add that there is also a plenty of examples that uses context.fail(result) or context.succeed(result) - but from what I gathered context is deprecated and shouldn't be used (even though it still works).

What is the point of using callback(error)?

0 投票
2 回答
246 浏览

javascript - Webtask.io 后端找不到模块

我正在学习无服务器后端,我正在尝试 webtask.io 部署一个简单的后端来从加密货币交易所获取价格。当我在本地部署它时,我的服务器工作正常,但是当我尝试在 webtask.io 中部署它时,我收到了这个错误Cannot find module './server/routes/api'

您可以在此处检查错误:

WT错误链接

这是我的代码

index.js

api.js

一如既往地感谢您的帮助!

0 投票
4 回答
9907 浏览

azure - 如何通过定时器触发器调用 Durable 函数?

我是 Durable 功能(编排功能)的新手,并且根据 Microsoft 文档查看了示例应用程序。所以我几乎没有疑问。

例子:

为了调用它,我使用邮递员发出了 HTTP POST 请求,因此请求成功处理,但是当我配置不同的动词(如 HTTP GET)时,它在控制台中以 NotFound 错误响应,并且来自浏览器的 HTTP 请求向它发出的请求以“NotFound”错误响应在控制台中。为什么会这样?

我可以使用计时器触发天蓝色功能调用任何编排功能吗?

如果不是为什么?

更新:

有关问题的一些其他详细信息

我可以通过计时器触发对 http 触发器的请求吗,为什么因为我的持久函数有长时间运行的过程,所以如果在计时器触发器本身中调用编排函数,那么可能有计时器触发超时的可能性,所以我为什么要尝试遵循这种方法。是可以通过上面的代码调用吗?

0 投票
1 回答
191 浏览

docker - 无服务器容器与其他容器的区别

我读过有人从 Docker 切换到无服务器,但我的头是什么,有什么性能差异吗?我的意思是,两者都是容器,所以应该没有任何区别?

假设您创建了一个返回特定计算数字的函数,并将其部署为无服务器并部署到 docker。我的猜测是两者都应该同样快速地执行该功能,我错了吗?

我的理解是,无服务器容器就像 Docker 一样,只是它们“更小”并且仅在调用函数时运行。

0 投票
1 回答
714 浏览

azure - Azure 函数 DocumentClient 绑定

我正在尝试将我的 DocumentDB nuget 包从 1.13 升级到 1.18

我在升级具有 DocumentClient 绑定的天蓝色函数时遇到问题。

在 DocumentDB 1.13 中,绑定部分不采用 :{Id} 作为绑定参数,而是完美地创建了 DocumentClient 对象。而 DocumentDB 1.18 需要 {Id} 作为绑定参数 [我不想要,因为我想遍历集合中的整个文档]

我在 1.18 之前的 host.json 绑定是

我的 local.settings.json 只有

我的天蓝色功能看起来像

}

现在,当使用更新的 documentDB 1.18 包运行 azure 函数时,它说绑定 {Id} ,这将只给出具有指定 id 的单个文档。而我的要求与以前版本的 DocumentDB 1.13 相同。

请告诉我如何使用新的更新包获取与我的 DocumentClient 绑定的整个文档。

0 投票
1 回答
8291 浏览

python - 无服务器:上传的文件必须是非空 zip。

我有一个与 AWS 一起使用的 python 无服务器项目。但是每当我运行 sls deploy 时,我都会收到此错误,并且我在 .serverless 中注意到它实际上并没有压缩文件,只生成 .json 文件。

发生错误:ParserLambdaFunction - 上传的文件必须是非空 zip。

我的 yml 看起来像这样:

我的 package.json 看起来像这样:

我的文件夹结构如下所示:

0 投票
1 回答
377 浏览

google-cloud-functions - 如何使用 FaaS 连接到任意数据库?

我刚刚阅读了一些关于无服务器计算和 FaaS 的文章。如果使用 FaaS 访问任意数据库,我们每次都需要建立和关闭数据库连接。在一个节点应用程序中,我们通常会建立一次连接并将其重用于多个请求。

正确的?

我在 mlab 有一个托管的 MongoDB,并考虑使用 Googles Cloud Functions Service 实现一个 REST API。不知道如何高效地处理数据库连接。

当然,在编码和测试时事情会变得更加清晰。但我想知道在花费大量时间之前成功的机会。

谢谢斯特凡

0 投票
3 回答
1020 浏览

amazon-cloudformation - 无服务器框架:实现完整“基础架构即代码”的方法?

我遵循了一个优秀的指南(无服务器堆栈),它创建了一个带有反应前端的典型 CRUD 无服务器基础架构。它使用 AWS 的无服务器框架

我不喜欢的是,为了引导设置,需要在 GUI(主要是亚马逊的控制台界面)中进行大量手动点击。即设置不受版本控制并且不容易重现。使用 CI/CD 流程等进行扩展并不容易。在此示例中,需要手动设置以下资源:

  • AWS Cognito 用户池
  • AWS Cognite 用户池应用程序
  • AWS Cognito 联合身份池
  • AWS DynamoDB 实例
  • AWS S3 存储桶 (x3)(这也托管了前端
  • AWS CloudFront 分布
  • AWS Route53 区域文件

从代码构建的唯一资源是无服务器函数 (lambda) 本身以及 API 网关实例。这就是无服务器框架使用其serverless.yml文件所做的事情。但上述所有资源都不会自动创建。有时需要引用它们以使用它们的 ARN,但它们不是由 serverless.yml 配置创建的。在生产中运行这样的系统(严重依赖于通过 GUI 手动创建服务)似乎是有风险的。

我在想一个解决方案是使用 Terraform 或 Cloudformation。但是无服务器框架本身已经在使用 Cloudformation 来设置 Lambda,尽管还没有用于其他资源。那么如何消除这种差距呢?换句话说,如何在代码中重建无服务器堆栈中描述的整个设置?

让 CloudFormation 设置 Serverless 看起来很奇怪,而且可能是不可能的,然后它有自己的 Cloudformation 模板来设置 lambdas。扩展无服务器框架可能更有意义,不仅可以定义需要在serverless deploy. 有没有人这样做的例子或尝试?