问题标签 [serverless-architecture]

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 投票
3 回答
1953 浏览

mysql - AWS Lambda 在峰值期间泛滥 RDS MySQL 连接

我在 AWS Lambda 上运行 Django,连接到 RDS 上的 MySQL。大多数时候一切都很好。

但是,如果峰值执行 10000 个并发请求,则会产生许多 Lambda 容器,并且每个容器都会打开一个数据库连接,该连接最终将超过 RDS 连接限制。(根据https://serverfault.com/questions/862387/aws-rds-connection-limits

什么是最好的策略(如果有的话)可以在不丢失 SQL 的情况下实现网络规模。一些想法:

  • 有没有办法限制 AWS 容器的数量以鼓励/强制重复使用而不是产生更多?(例如,将最大 lambda 容器设置为数据库连接限制的某个比例)。如果达到容器限制,则连接可能会等到热 aws 容器可用。
  • API Gateway 可以检测到连接到 Lambda 的峰值和延迟吗?这将允许通过重复使用不会创建过多数据库连接的热容器来完成大部分工作。我知道 API Gateway 允许节流,但这非常粗略,除了丢弃超过限制的连接之外不能做任何事情。
  • 自由使用 MySQL/RDS 只读副本
0 投票
0 回答
1781 浏览

amazon-web-services - 部署到 lambda 的无服务器 Express 应用程序中的 Cookie 和会话管理

问题:我正在尝试检索存储在 aws Dynamodb 中的会话数据,但 sessionID 总是在从同一端点到我的服务器较少的快速应用程序的连续调用之间发生变化。

快递代码:

Dynamodb 存储配置

在上面的代码中,我在后端为我添加到购物车的每件商品都点击了“/addtocart/:id”路线。我在端口 8080 上加载我的前端静态 html 页面,在端口 3000 上加载我的服务器)

  • 我已经在 aws lambda 上部署了我的 express 应用程序,并且我正在使用 dynamodb 来存储会话。
  • 我正在尝试构建一个购物车模块,因此当我在前端(在托管在 s3 上的静态 html 页面上)向购物车添加一些商品时,它应该保留以前的购物车配置并将当前商品添加到其中。相反,一旦我创建了一个新的购物车并将其存储在 dynamoDB 中,会话 id 会为添加的每个项目更改并创建一个新的购物车对象并再次存储一个会话,而不是保留旧的购物车并将数据添加到顶部其中。
  • 如果我从后端点击相同的 addproduct 路由,并且如果我将Acess-Control-Allow-Origin标头设置为http://localhost:8080 ,则购物车将被保留。

  • 由于这是一个无服务器应用程序,因此我无法修复端点。因此,在从前端进行 ajax 调用时,我没有将 xhrCredentials 选项设置为 true,并且后端的 orgin 标头也设置为“*”。

  • 有没有一种方法可以保留来自不同用户对服务较少的 lambda express 应用程序的不同调用的购物车信息,购物车数据存储在 dynamodb 中。有关 cookie 和会话管理的任何信息都会有所帮助,并进一步澄清了我的困惑。

我使用express-session管理会话,使用 Dynamodb-store 将会话存储到 db

0 投票
0 回答
624 浏览

amazon-web-services - 单独的无服务器包?

如果我想部署我的无服务器项目,我应该单独打包它吗?还是我不应该?

另外,请告诉我为什么。

0 投票
2 回答
730 浏览

node.js - 无服务器应用程序的结构

我是无服务器应用程序的新手。我按照 aws 教程使用 codestar 和 lambda 构建了一个简单的 nodejs 无服务器应用程序。

然而,想象一下这个节点应用程序做了很多事情。因此,它在 index.js 中有多个函数,一个用于功能 A,一个用于功能 B,等等(例如)。

我是否必须将多个 lambda 表达式(每个功能一个)附加到这个 codestar 项目?

0 投票
2 回答
334 浏览

amazon-web-services - AWS 市场上基于 Lambda 的应用程序

我有包含 Lambda 函数、API 网关和 Dynamodb 表的应用程序。我想将完整的包放在 AWS 市场中,但不想作为 SaaS 产品。

我想在客户端安装这个包。

例如 - 具有由 dynamoDb 表更改触发的 lambda 函数的应用程序也具有 api 网关。这个应用程序在我的最后工作正常。我想在市场上发布这个完整的包,但不是作为 saas 产品。我希望将这个完整的包部署在客户的 AWS 实例上。但我认为我的产品也不是 AMI 产品或 SaaS。如果您有任何解决方案可以在市场上列出基于 lambda 的应用程序。

0 投票
1 回答
482 浏览

openwhisk - 从 OpenWhisk (IBM Cloud Function) 操作返回二进制 HTTP 响应

我想在 IBM Cloud Function 中使用 OpenWhisk 通过 HTTP 返回驻留在(IBM Cloud)ObjectStorage 中的二进制文件。

这可能吗?在我看来,OpenWhisk 似乎只支持 JSON 作为操作的结果。

这是我正在使用的代码(get_object_storage_file 返回二进制数据):

0 投票
1 回答
3853 浏览

amazon-web-services - 使用 Kinesis 进行事件溯源 - 重放和持久性

我正在尝试使用 Amazon Kinesis 作为平台的中央事件日志来实施事件驱动架构。这个想法与Nordstrom 在 Hello-Retail 项目中提出的想法几乎相同。

我以前用 Apache Kafka 做过类似的事情,但 Kinesis 似乎是 Kafka 的一种具有成本效益的替代品,我决定试一试。然而,我面临着一些与事件持久性和重放相关的挑战。我有两个问题:

  1. 你们是否将 Kinesis 用于此类用例,或者您是否推荐使用它?
  2. 由于 Kinesis 不能永远保留事件(就像 Kafka 一样),如何处理来自消费者的重播?

我目前正在使用 lambda 函数(Firehose 也是一个选项)将所有事件持久保存到 Amazon S3。然后,可以从存储中读取过去的事件,然后开始监听来自流的新事件。但我对这个解决方案不满意。消费者无法使用 Kinesis 的检查点(Kafka 的消费者偏移量)。另外,Java 的KCL 还不支持 AFTER_SEQUENCE_NUMBER,这在这种实现中会很有用。

0 投票
4 回答
397 浏览

serverless-framework - 无服务器 - 大型应用程序

我是无服务器框架的新手。

我正在启动一个具有多个路由的 Rest API,例如:

获取用户/{userid}

发布用户


获取帐户/{accountid}

发布帐户

我需要 2 项服务 - 帐户 + 用户吗?

最佳实践是什么?如果有 2 个服务,那么 2 个 serverless.yml?有没有人有无服务器大型应用程序的例子?

谢谢大家!

0 投票
3 回答
1063 浏览

serverless-framework - 无服务器 Web 应用架构

我目前正在使用无服务器设计一个简单的无服务器 Web 应用程序。

我当前的预期堆栈是;

  • API 网关
  • 拉姆达
  • 动态数据库
  • 静态单页应用

我遵循了一些使用无服务器框架构建无服务器 API、Lambda 和 DynamoDB 的教程,并且我构建了我的单页应用程序,但是现在它们是 2 个独立的实体。

我现在要做的是将静态站点(nodejs)与我的 API、Lambda 和 DynamoDB 放到同一个项目中,并使用无服务器框架来控制部署,但是我正在努力寻找指导;

  1. 无服务器框架中如何表示静态网站部分
  2. 如何最好地托管该静态网站(例如 s3 静态网站托管或其他选项?)
  3. 如何最好地引用在部署发生的同时生成的 API 网关 URL(例如,通过无服务器框架)

任何人都可以提供任何关于这应该如何工作的见解,或者可以向我指出一些好的博客/资源的方向吗?

亲切的问候,约翰

0 投票
1 回答
320 浏览

angular - s3 存储桶中的 Angular PathLocationStrategy 问题

在 PathLocationStrategy 上,当我重新加载页面然后找不到 404 页面。而且我不想使用 HashLocationStrategy。