标签: serverless

多个无服务器文件共享同一个api网关

我正在使用无服务器框架来构建REST API。我已经达到了200个限制堆栈大小,并了解了多种绕过它的方法。最常见的方法是以“微服务方式”拆分堆栈,其中每个堆栈都处理一组有意义的特定资源。

由于无服务器的工作方式,所有这些服务都会为其自身创建一个新的api网关,然后,如本文中所述,可以在它们之间设置一个共享域,以便可以通过相同的基本url访问所有端点。

即使这是一个有效的解决方案,我仍然非常希望能够使用在不同堆栈之间共享的单个API网关资源,因此我不必预先决定api的不同组件之间的关注点分离。这可能吗?

serverless-framework serverless

7
推荐指数
1
解决办法
1495
查看次数

在无服务器框架中禁用SLS_DEBUG =*

使用无服务器框架(在Mac OS X High Sierra上)时,SLS_DEBUG环境变量设置为启用详细的调试信息

export SLS_DEBUG=*
Run Code Online (Sandbox Code Playgroud)

问题:现在如何禁用它(除了转移到新终端)?export SLS_DEBUG=false没有做到这一点.

macos serverless-framework serverless-architecture serverless aws-serverless

7
推荐指数
1
解决办法
1951
查看次数

如何使用备用 go.mod 文件进行本地开发?

目前我正在开发一个使用 Serverless Framework 和 Go 的 API。

我正在使用 Serverless-offline 插件进行本地测试。

该 API 依赖于其他一些存储库(我也维护这些存储库),我使用该go.mod文件导入这些存储库。

然而,我很难完善我的开发人员工作流程。

目前,如果我想对此 API 所依赖的存储库进行更改,我必须更改项目go.mod以包含替换指令以进行测试,但随后我必须手动将其更改回以部署到生产环境。

基本上我正在寻找一种包含替换指令的方法,该指令仅在本地开发期间应用。其他人都是如何处理这个问题的?

额外问题:有什么方法可以在 docker 中离线运行 Serverless 吗?我发现在裸机上运行的无服务器离线会导致不同开发人员环境之间的不一致。

local go serverless go-modules

7
推荐指数
1
解决办法
1401
查看次数

Apollo Server 的无服务器处理程序抛出错误,无法识别 Netlify 上的事件

上下文: 我正在尝试通过 Netlify 使用 Apollo Server Lambda 部署 GraphQL。我的处理程序如下:

代码:

exports.handler = server.createHandler({
  cors: {
    origin: '*'
  }
});
Run Code Online (Sandbox Code Playgroud)

我能够在 Netlify 上成功构建和部署 - 但是服务器在启动时抛出错误。Netlify 正在寻找要触发的事件,但我使用的 Apollo Server 处理程序没有提供。我们如何将此处理程序连接到使用事件的处理程序?

错误信息:

{"errorType":"Error","errorMessage":"Unable to determine event source based on event.","trace":["Error: Unable to determine event source based on event.","    at getEventSourceNameBasedOnEvent (/var/task/node_modules/@vendia/serverless-express/src/event-sources/utils.js:88:9)","    at proxy (/var/task/node_modules/@vendia/serverless-express/src/configure.js:38:51)","    at handler (/var/task/node_modules/@vendia/serverless-express/src/configure.js:99:12)","    at Runtime.handler (/var/task/node_modules/apollo-server-lambda/dist/ApolloServer.js:51:27)"]}
Run Code Online (Sandbox Code Playgroud)

graphql netlify apollo-server serverless

7
推荐指数
1
解决办法
907
查看次数

Serverless Express 关闭 mongodb 连接

我在aws上使用无服务器,以nodejs和mongodb atlas作为数据库

目前我使用的是试用版,最多允许 500 个连接。

似乎我的代码在进程结束时没有断开数据库连接

我正在使用express来管理它

首先,我没有关闭连接,认为一旦进程结束,连接就会自动关闭,但我没有打开很多连接。

然后我添加了一个中间件来在发送响应后关闭我的连接,它不起作用,我认为无服务器在响应发送后就会停止进程。

例如,并非在每条路线上我都会关闭 mongo 连接

router.get('/website/:id/page', async (req, res, next) => {
  try {
    const pages = await pageDataProvider.findByWebsite(req.params.id);
    await mongodbDataProvider.close();
    res.json(pages);
  } catch (error) {
    next(error)
  }
})
Run Code Online (Sandbox Code Playgroud)

这就是我处理与 mongo 的连接的方式

const MongoClient = require('mongodb').MongoClient
const config = require('../config')

const MONGODB_URI = config.stage === 'test' ?
  global.__MONGO_URI__ :
  `mongodb+srv://${config.mongodb.username}:${config.mongodb.password}@${config.mongodb.host}/admin?retryWrites=true&w=majority`;
const client = new MongoClient(MONGODB_URI);

let cachedDb = null;

module.exports.connect = async () => {

  if (cachedDb) return cachedDb;

  await client.connect();

  const dbName …
Run Code Online (Sandbox Code Playgroud)

javascript mongodb node.js express serverless

7
推荐指数
1
解决办法
826
查看次数

排除构建中除一个文件夹之外的所有内容 无服务器模式

我正在开发一个无服务器项目。我想要实现或想知道是否可能的是,当我运行时,sls package我希望无服务器排除根目录中除一个文件夹之外的每个文件/文件夹。

我尝试了多种方法来使用无服务器文件中的模式来完成此操作,但没有任何效果。

package: #This didn't not work
  patterns:
    - '!./**'
    - './dist/**'


package: # This didn't work
  patterns:
    - '!.*/**'
    - './dist/**'
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?因为如果我明确定义特定文件夹,我就能够排除它们。但我无法使用通配符排除整个根目录。

package: # This works and excludes constant folder
  patterns:
    - '!./constants/**'
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过编写脚本来实现它。但我想知道是否可以通过简单地定义模式来通过无服务器框架来完成。

javascript yaml serverless-framework serverless aws-serverless

7
推荐指数
1
解决办法
1644
查看次数

Node.js lambda:如何在本地开发中导入公共层实用程序库,同时也可以在云中工作

我有一个 monorepo,在自己的文件夹中包含一些函数。我想创建一个具有实用功能的公共层,我可以require/import在本地使用它,也可以在部署到云后使用它。我想添加一个layers/目录来执行此操作,文件夹结构如下所示:

  A
  |- node_modules/
  |- package.json
  |- index.js
  B
  |- node_modules/
  |- package.json
  |- index.js
  layers
    |- nodejs
      |- node_modules
      |- package.json
      |- util.js
Run Code Online (Sandbox Code Playgroud)

我没有设置上面的文件夹结构,并且可以接受它的更改。

目前,我只有A和 以及B它们自己的独立依赖层(使用 编排terraform),并且它们在本地工作和部署都很好。

引入通用实用程序层后,问题是我可以在本地要求/导入,但在云中就不一样了(/opt/nodejs/*),但如果我将其更改为在云上工作,它将无法工作本地。

我没有使用该serverless框架。

amazon-web-services aws-lambda serverless aws-lambda-layers

7
推荐指数
0
解决办法
577
查看次数

无服务器部署使用无服务器组合抛出“spawn serverless ENOENT”

无服务器部署抛出spawn serverless ENOENT\n尝试部署时出现以下错误client-service,尽管在此之前所有服务都已部署。

\n
\n

错误:生成无服务器 ENOENT

\n
\n

使用以下版本进行无服务器和无服务器组合

\n
"@serverless/compose": "^1.3.0",\n"serverless": "^3.22.0",\n
Run Code Online (Sandbox Code Playgroud)\n

serverless-compose.ts 配置

\n
const serverlessCompose = {\n  services: {\n    "infra-test": {\n      path: "infra-test",\n    },\n    "client-service": {\n      path: "client-\'service\'",\n      dependsOn: ["infra-test"],\n    },\n  },\n};\n\nmodule.exports = serverlessCompose;\n\n
Run Code Online (Sandbox Code Playgroud)\n

带有使用标志的完整命令名称(如果不适用,请填写“N/A”)

\n

serverless deploy --stage sbx

\n

完整的命令输出。

\n
infra-test \xe2\x80\xba \ninfra-test \xe2\x80\xba Stack Outputs:\ninfra-test \xe2\x80\xba   ServerlessDeploymentBucketName: infra-test-sbx-serverlessdeploymentbucket-yg91fd\ninfra-test \xe2\x80\xba 3 deprecations found: run \'serverless doctor\' for more details\ninfra-test \xe2\x80\xba deployed\nclient-service \xe2\x80\xba deploying\nclient-service \xe2\x80\xba Running "serverless deploy …
Run Code Online (Sandbox Code Playgroud)

node.js typescript serverless-framework serverless-architecture serverless

7
推荐指数
1
解决办法
683
查看次数

无服务器离线启动热重载不起作用

我在使用时无法热重载serverless offline start

这是我的 serverless.yml 文件

service: function-with-environment-variables

frameworkVersion: ">=3.0.0 <4.0.0"

provider:
  name: aws
  runtime: nodejs16.x
 
plugins:
  - serverless-offline

functions:
  register:
    handler: handler.register
    events:
      - http:
          path: /register
          method: post

  login:
    handler: handler.login
    events:
      - http:
          path: /login
          method: post

  verify:
    handler: handler.verify
    events:
      - http:
          path: /verify
          method: post

Run Code Online (Sandbox Code Playgroud)

我也尝试过使用sls offline start仍然面临同样的错误。

这是输出serverless --version

`从node_modules运行“无服务器”框架核心:3.24.1(本地)3.24.1(全局)插件:6.2.2 SDK:4.3.2

aws-lambda serverless serverless-offline

7
推荐指数
1
解决办法
6867
查看次数

无服务器部署中 EMFILE 打开文件过多

当我升级到 Windows 11 时,我在部署无服务器应用程序时遇到问题。我尝试寻找安装“serverless-plugin-common-excludes”和“serverless-plugin-include-dependencies”等解决方案,但失败了。

这是错误:

无法读取文件 node_modules\rxjs\dist\types\internal\operators\publishLast.d.ts.map 由于: EMFILE:打开的文件太多,打开 'C:\Users\renzo\ARCS\admin-service.build\node_modules \rxjs\dist\types\internal\operators\publishLast.d.ts.map'

在此输入图像描述

node.js aws-cloudformation serverless

7
推荐指数
0
解决办法
1071
查看次数