gr3*_*r3g 5 serverless-framework serverless-architecture serverless-offline
当您只有一个时,您可以使用 Serverless Framework 和 Serverless Offline Plugin 轻松调试您的无服务器应用程序,但是当您有多个 API 网关/服务时,您如何处理这种情况?
我是否应该serverless offline为每个服务运行,并在每个服务中配置不同的端口.yml?
并在环境变量中对该端口进行硬编码,以便我可以访问该端口(如果process.env.offline为真)?
根据文档,--port不再可用--httpPort,而是lambdaPort像下面的代码一样
sls offline --httpPort 3001 --lambdaPort 3003
Run Code Online (Sandbox Code Playgroud)
或者 任何 CLI 选项都可以添加到您的 serverless.yml 中。例如:
custom:
serverless-offline:
httpsProtocol: "dev-certs"
httpPort: 3001
lambdaPort: 3003
stageVariables:
foo: "bar"
Run Code Online (Sandbox Code Playgroud)
来自官方文档
如果您想在本地同时运行两个或多个无服务器 API 网关,您可以使用--port参数轻松完成。
基本上,打开两个命令行窗口,然后在第一个窗口中,转到您的第一个服务目录并运行:
sls offline start --port 3001
在另一个窗口中,转到第二个服务并运行:
sls offline start --port 3002
这样,您将有两个服务在两个端口上侦听(在本例中http://localhost:3001为 和http://localhost:3002)。
如果您还使用 serverless-dynamodb-local 插件,那么(目前)有一个问题:
如果您不使用 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-2为从in中删除 (不需要任何其他更改),然后您可以使用以下命令启动该服务:。serverless-dynamodb-localpluginsserverless.yamlsls offline start --port 3001
第一个服务将启动 DynamoDB,第二个服务将能够使用它。
| 归档时间: |
|
| 查看次数: |
5198 次 |
| 最近记录: |