當您只有一臺服務器時,您可以使用無服務器框架和無服務器脫機插件輕鬆調試您的無服務器應用程序,但是如何處理具有多個API網關/服務的情況?無服務器脫機:處理多個API網關
我應該爲每項服務運行serverless offline
,在每個.yml
中配置了不同的端口嗎?
和硬編碼端口在環境變量,所以我可以訪問該端口,如果process.env.offline
是真的?
當您只有一臺服務器時,您可以使用無服務器框架和無服務器脫機插件輕鬆調試您的無服務器應用程序,但是如何處理具有多個API網關/服務的情況?無服務器脫機:處理多個API網關
我應該爲每項服務運行serverless offline
,在每個.yml
中配置了不同的端口嗎?
和硬編碼端口在環境變量,所以我可以訪問該端口,如果process.env.offline
是真的?
如果您想在本地同時運行兩個或更多無服務器API網關,您可以使用--port
參數輕鬆完成此操作。
基本上,打開兩個命令行窗口,並在第一個窗口,去你的第一個服務目錄並運行:
sls offline start --port 3001
在其他窗口,進入到你的第二個服務並運行:
sls offline start --port 3002
這樣,你,你將有監聽兩個端口兩個服務(在這個例子http://localhost:3001
和http://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-2
你從serverless.yaml
plugins
刪除serverless-dynamodb-local
(有沒有需要任何其他更改),然後你可以啓動該服務:sls offline start --port 3001
。
第一項服務將啓動DynamoDB,第二項服務將能夠使用它。
默認情況下,'serverless-offline'會將請求代理到'http:// localhost:3000',這將處理針對多個端點/函數的請求。但它聽起來像你有不同的事情 - 你可以發佈你的'serverless.yml'嗎?我真的不知道這個問題的答案,因爲這是一個非常流行的項目,但我可以通過幾件事來談談。 – killthrush
我有多個服務/ .yml的:不同的API網關必須在不同的服務器上運行。 – gr3g