2017-06-06 36 views
2

当您只有一台服务器时,您可以使用无服务器框架和无服务器脱机插件轻松调试您的无服务器应用程序,但是如何处理具有多个API网关/服务的情况?无服务器脱机:处理多个API网关

我应该为每项服务运行serverless offline,在每个.yml中配置了不同的端口吗?
和硬编码端口在环境变量,所以我可以访问该端口,如果process.env.offline是真的?

+0

默认情况下,'serverless-offline'会将请求代理到'http:// localhost:3000',这将处理针对多个端点/函数的请求。但它听起来像你有不同的事情 - 你可以发布你的'serverless.yml'吗?我真的不知道这个问题的答案,因为这是一个非常流行的项目,但我可以通过几件事来谈谈。 – killthrush

+0

我有多个服务/ .yml的:不同的API网关必须在不同的服务器上运行。 – gr3g

回答

2

如果您想在本地同时运行两个或更多无服务器API网关,您可以使用--port参数轻松完成此操作。

基本上,打开两个命令行窗口,并在第一个窗口,去你的第一个服务目录并运行:

sls offline start --port 3001

在其他窗口,进入到你的第二个服务并运行:

sls offline start --port 3002

这样,你,你将有监听两个端口两个服务(在这个例子http://localhost:3001http://localhost:3002)。

这里有一个陷阱(目前),如果您还使用无服务器-dynamodb本地插件:

如果你不使用DynamoDB插件,那么你是可以的,现在可以停止阅读:)

DynamoDB插件是使用相同的--port参数,并导致java.net.BindException: Address already in use

看到这个问题:https://github.com/99xt/serverless-dynamodb-local/issues/135

ŧ他的解决方法是保持serverless-offline-local插件启用只有一个服务(如果你有两个或更多)。

例, 在my-service-1你把所有dynamodb配置在serverless.yaml文件,然后使用默认端口此服务:sls offline start --migrate true。在接下来的服务,让我们把它my-service-2serverless.yamlplugins删除serverless-dynamodb-local(有没有需要任何其他更改),然后你可以启动该服务:sls offline start --port 3001

第一项服务将启动DynamoDB,第二项服务将能够使用它。