问题标签 [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.
python-2.7 - 每当使用无服务器将文件上传到 s3 存储桶时获取电子邮件
我想在将文件上传到 s3 存储桶时收到电子邮件,如上面的标题所述,我使用的是无服务器,问题是我在 s3 上创建的事件只在 s3-aws 控制台上给我通知,并且不要不知道如何在 S3 上配置 cloudwatch 事件来触发 lambda。所以,如果有人知道如何使用 cloudwatch 在 S3 上触发事件,我会全力以赴。这是我的代码:
这是我的 serverless.yml 文件
node.js - 具有项目集属性的 Dynamodb 搜索/查询 GSI
我在使用具有项目集值的属性的 GSI 时遇到问题,如果有人能指导我如何解决这个问题,我将不胜感激。例如我想查询 {"queryStringParameters": {"cities": ["Chicago", "Ikeja", "Victoria Island"]}} 的属性
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)
?
javascript - Webtask.io 后端找不到模块
我正在学习无服务器后端,我正在尝试 webtask.io 部署一个简单的后端来从加密货币交易所获取价格。当我在本地部署它时,我的服务器工作正常,但是当我尝试在 webtask.io 中部署它时,我收到了这个错误Cannot find module './server/routes/api'
。
您可以在此处检查错误:
这是我的代码
index.js
api.js
一如既往地感谢您的帮助!
azure - 如何通过定时器触发器调用 Durable 函数?
我是 Durable 功能(编排功能)的新手,并且根据 Microsoft 文档查看了示例应用程序。所以我几乎没有疑问。
例子:
为了调用它,我使用邮递员发出了 HTTP POST 请求,因此请求成功处理,但是当我配置不同的动词(如 HTTP GET)时,它在控制台中以 NotFound 错误响应,并且来自浏览器的 HTTP 请求向它发出的请求以“NotFound”错误响应在控制台中。为什么会这样?
我可以使用计时器触发天蓝色功能调用任何编排功能吗?
如果不是为什么?
更新:
有关问题的一些其他详细信息
我可以通过计时器触发对 http 触发器的请求吗,为什么因为我的持久函数有长时间运行的过程,所以如果在计时器触发器本身中调用编排函数,那么可能有计时器触发超时的可能性,所以我为什么要尝试遵循这种方法。是可以通过上面的代码调用吗?
docker - 无服务器容器与其他容器的区别
我读过有人从 Docker 切换到无服务器,但我的头是什么,有什么性能差异吗?我的意思是,两者都是容器,所以应该没有任何区别?
假设您创建了一个返回特定计算数字的函数,并将其部署为无服务器并部署到 docker。我的猜测是两者都应该同样快速地执行该功能,我错了吗?
我的理解是,无服务器容器就像 Docker 一样,只是它们“更小”并且仅在调用函数时运行。
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 绑定的整个文档。
python - 无服务器:上传的文件必须是非空 zip。
我有一个与 AWS 一起使用的 python 无服务器项目。但是每当我运行 sls deploy 时,我都会收到此错误,并且我在 .serverless 中注意到它实际上并没有压缩文件,只生成 .json 文件。
发生错误:ParserLambdaFunction - 上传的文件必须是非空 zip。
我的 yml 看起来像这样:
我的 package.json 看起来像这样:
我的文件夹结构如下所示:
google-cloud-functions - 如何使用 FaaS 连接到任意数据库?
我刚刚阅读了一些关于无服务器计算和 FaaS 的文章。如果使用 FaaS 访问任意数据库,我们每次都需要建立和关闭数据库连接。在一个节点应用程序中,我们通常会建立一次连接并将其重用于多个请求。
正确的?
我在 mlab 有一个托管的 MongoDB,并考虑使用 Googles Cloud Functions Service 实现一个 REST API。不知道如何高效地处理数据库连接。
当然,在编码和测试时事情会变得更加清晰。但我想知道在花费大量时间之前成功的机会。
谢谢斯特凡
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
. 有没有人这样做的例子或尝试?