使用多个端口在单个 EC2 实例上托管多个 Plumber API?

Hosting multiple Plumber APIs on a single EC2 instance using multiple ports?

根据 R 非常好的 Plumber 文档,以及从 this helpful link 获得帮助,我能够使用 Plumber 库在 EC2 实例上设置一个 R API端点。

我在 EC2 实例的端口 8000 上有这个 API,并确认,如果我检查我的 EC2 实例中的进程,我可以在端口 8000 上看到我的 R API:

[ec2-user@ip-123-45-67-890 ~]$ lsof -i tcp:8000
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
R       16784 ec2-user   11u  IPv4 152626      0t0  TCP *:irdmi (LISTEN)

我想在同一个 EC2 服务器上启动第二个 API,我的问题是,我可以使用 EC2 服务器上的其他端口来为 API 服务吗?例如,在我的新 API 即 "plumbs" 和 API 的 R 文件中,我只需将端口更改为 8001:

# clear workspace and load library
rm(list = ls())
library(plumber)

# serve API
r <- plumb("NBA_API.R")
r$run(host="0.0.0.0", port=8001)

此外,对于 EC2 实例,更改安全组以便可以访问端口 8001。

这样做(使用不同的端口)是否正常,或者我是否会尝试在不同的端口上托管多个 API 来搞乱 EC2 实例?我想在弄乱我目前的 API.

之前知道这一点

在此先感谢您对此的任何帮助!

编辑 - 另外,如果可以使用端口 8001,这是否意味着我几乎可以使用任何端口来提供额外的 APIs(8002、8003、8004 等)。是否有任何我不应该使用的端口?

这应该不是问题。您可以在任意端口上托管任意数量的这些。您只需要确保安全组允许流量通过您的机器,如果适用,机器的本地防火墙也允许流量进入。

不过请注意,服务器上的 运行 R 并不是最佳选择。如果 R 进程曾经崩溃(例如,由于代码中的错误可能会在不太可能的情况下被绊倒),它不会自动重启。同样,如果服务器需要重新启动,您将需要在适当的端口上手动启动适当的进程以再次获取东西 运行。

您可以查看 https://www.rplumber.io/docs/hosting.html 中提到的一些托管选项,了解如何以更 "productiony" 的方式托管管道工。我没有在文档中专门针对 EC2,但是其中一些模式(包括 PM2)应该在 EC2 机器上工作得很好。