问题标签 [serverless-framework]

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 回答
696 浏览

amazon-web-services - 使用 zappa 部署 Web 应用程序

我按照此处的步骤操作:https ://github.com/Miserlou/Zappa尝试将我的 Web 应用程序部署到 AWS。

我的应用程序使用烧瓶作为服务器端,它还使用烧瓶来托管客户端 JavaScript、html 和 css 文件。我可以成功地将它托管在我的本地机器和服务器机器上(我host="0.0.0.0"在服务器上使用过,我还指定了一个端口号)。

我需要做的就是运行python my_app.py。客户端向服务器发送请求,服务器将响应。

我尝试使用 进行部署zappa,但页面加载到一个空页面。我不确定我在哪里做错了。一件事是我的python程序需要外部库,当我将它部署到我的AWS lambda时如何安装它?

0 投票
3 回答
13547 浏览

amazon-web-services - 在无服务器框架 1.0 中使用路径参数

我想使用GET/customer/{customerId}请求的路径参数来使用 AWS Lambda 查询客户:

我必须如何定义路径参数才能使用无服务器框架 1.0将其传递给我的 AWS Lambda 函数?

0 投票
1 回答
1366 浏览

amazon-web-services - 如何通过 CloudFormation 创建 S3 存储桶并默认启用 Transfer Acceleration?

我的无服务器项目创建了一个 S3 存储桶,我希望它默认启用 Transfer Acceleration。

我试过这个:

但这不是一个可接受的属性,我在 aws 文档中找不到任何合适的内容:https ://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-s3-bucket.html

在资源部署期间有什么方法可以做到这一点?

0 投票
1 回答
842 浏览

mysql - 使用 nodejs 和 mysql 的无服务器 => 进程在完成请求之前退出

我正在使用 nodejs 模板开发一些无服务器功能。我有一个连接到 mysql 数据库并检索一些数据的服务。当我第一次打电话时一切都很好,但是当我重复它时,我收到“在完成请求之前退出进程”错误消息。如果我再次尝试相同的呼叫,我会收到数据。因此,该服务在奇数调用上运行良好,并且在偶数调用上返回错误(有趣吧?)。这是处理函数的代码:

这是存储库功能的代码:

正如你所看到的,我在“when”库中使用了 Promise。我在处理程序中调用“完成”回调,并且在每种可能的情况下都应该有来自 Promise 的响应。

我看不出这有什么问题,为什么提出奇怪的请求是错误的。任何人都可以帮忙吗?

提前致谢!

0 投票
1 回答
1356 浏览

lambda - 如何使用无服务器 1.0 创建 EventSourceMapping?

我正在尝试设置事件源映射,以便每次将记录提交到我的 dynamodb 表时调用 Lambda 函数。我正在尝试按照以下说明进行操作

https://github.com/serverless/serverless/blob/master/docs/guide/overview-of-event-sources.md

我目前serverless.yml正在使用:

每次我打电话serverless deploy,我都会得到:

我猜这与 IAM 角色权限有关,但无法弄清楚如何解决它。对于我用于无服务器本身的角色,我尝试使用:

所以它应该可以做任何事情。

请注意,如果我resources从 中删除该部分serverless.yml,我可以正确部署。我什至可以去 dynamodb 表,手动将触发器添加到 lambda 函数中,一切正常。

提前致谢

0 投票
1 回答
849 浏览

amazon-web-services - 无服务器框架 1.0:将 Cloudformation 转换为适用于 AWS Firehose 的 Yaml

有谁知道在 Serverless v1.0 中将 cloudformation 转换为 yaml 的权威指南?

我可以做很多事情,但我完全坚持如何设置 Firehose 并允许 lambda 写入它。

我认为资源部分看起来像这样:

但我不知道如何为 IAM 部分转换 Cloudformation,如下所述:http: //docs.aws.amazon.com/firehose/latest/dev/controlling-access.html

非常感谢任何关于 CF->Yaml 转换的指针、示例或指南!

0 投票
3 回答
10699 浏览

amazon-web-services - 如何调试 AWS Api Gateway 和 Lambda 的“AWS/ApiGateway 5XXError”

我有一个运行 lambda 函数的 API Gateway 资源。我正在使用我的 Api Gateway 中的 AWS Generated SDK 调用 API Gateway 资源。

这是我的客户端的堆栈跟踪部分似乎相关的部分:

现在查看 AWS 控制台,在我的 Api Gateway 仪表板中,我看到请求进入并导致“AWS/ApiGateway 5XXError”。但是有 0 个日志(我可以找到)。我的 lambda 函数似乎没有被调用,并且没有显示 lambda 日志。

现在这就是我的 lambda 的样子:

我能做些什么来调试这个?

编辑:好的,这里是把所有东西放在一起的 cloudformation 脚本。

编辑 2:当我在 AWS 控制台中使用 API Gateway 的测试功能测试端点时,一切正常:/

编辑 3:再次更新了 cloudformation 脚本——仍然无法正常工作。

0 投票
2 回答
6162 浏览

multipartform-data - 使用无服务器处理多部分/表单数据?

如何使用无服务器框架处理多部分/表单数据?v.0.5.6

刚试过这个:

动作.js:

但出现错误:errorMessage = "Cannot read property 'content-length' of undefined";

0 投票
0 回答
514 浏览

node.js - 请求后产生旧结果的 Lambda 函数

我正在编写一个脚本来废弃某个网页。对于该架构,它是一个无服务器功能,每分钟抓取特定页面,以便我们尽快收到更改通知。

我的问题是查询的结果说没有找到新条目,只有旧条目,它没有报告。

今天有另一个条目是新的,所以我应该得到一个关于它的报告。

当我手动执行该功能时,它确实有效并报告了它。当我删除该条目时,它仍然没有从 AWS 自动报告它。

在做了一些调试之后,我注意到在客户端,请求的结果是网页的新版本。在 AWS Lambda 上,我仍然得到页面的旧结果。

尝试了客户端命令(都有效)

  • node-debug sls function run example/functionname
  • sls function run example/functionname

服务器确实完全运行该功能,并且不会在 cloudwatch 中报告任何错误。我个人开始认为问题与缓存有关,尽管那里不存在(对吗?)。

欢迎任何想法或建议。

获取旧版本的行: request(url, function (error, response, html) {

示例代码:(异步部分)(get= 获取 html)(checkLogged = 如果已报告)(doLog = 如果未报告则记录)

检查所有条目的代码

0 投票
5 回答
984 浏览

microservices - 无服务器框架 - 一个 APIGW 端点下的两个服务

如果我有两个服务,“用户”和“产品”,每个服务都有几个函数,每个函数都定义了端点(就像任何传统的 API 一样),它们是否可以在代码库中单独组织(为了清楚起见)但是一旦部署共享相同的 API 基本 URL?例如,考虑我有以下结构:

src/users/serverless.yml的定义如下:

和我src/products/serverless.yml的基本相同,只需将“用户”换成“产品”。

目前,这两种服务都将部署到截然不同的 API 端点,一个带有 URL https://fghijklmnop.execute-api...,另一个带有 URLhttps://abcdevwxyz.execute-api....

我的问题是,是否可以部署这些服务但仍保留在具有单个 URL 的单个 API 下(因此两者都将在 URL 下提供https://abcdevwxyz.execute-api....)?

我假设答案是“不,因为 Cloud Formation ...”,但我想我只是为了讨论和帮助我自己理解构建无服务器应用程序而在此处发布问题。

根据此处的答案,我知道使用自定义域,但是对于更快的开发周期,这并不是一个理想的解决方案。

到目前为止,我唯一的解决方案是简单地创建一个名为“api”的服务,该服务将包含我的 API 需要的所有端点,这些端点将直接调用我的其他服务的 Lambda 函数,而不是通过以前配置的端点。实际上,这将是一个抽象层,但会为我的应用程序添加可能不必要的层。再次,很好奇社区对此的感受。