EC2 上的 RSelenium 和 Docker

RSelenium and Docker on EC2

我的最终目标是能够使用 through 我的 EC2 实例 (AWS)。

为此,我读到建议在虚拟机上使用和安装 docker。所以我在这里遵循了 John D Harrison 给出的所有步骤: https://rpubs.com/johndharrison/RSelenium-Docker

一切都很顺利,除了最后我在 EC2 实例上输入 RStudio 时。 因为当我尝试连接到远程服务器时出现以下错误:

library(RSelenium) remDr <- remoteDriver(remoteServerAddr = "192.168.99.100", port = 4445L) remDr$open()

1 "Connecting to remote server" Error in checkError(res) : Undefined error in httr call. httr output: Timeout was reached: Connection timed out after 10001 milliseconds

我完全按照教程中给出的步骤操作,所以我真的不知道哪里出了问题。

非常感谢任何帮助!

男.

编辑1: 请在下面找到我到目前为止的截图:

我使用的 EC2 实例如下:

以下适合我。

创建一个安装了 Docker 的 EC2 Ubuntu 实例。我没有使用 Windows.

运行EC2实例上的selenium docker镜像如下

docker run -d -p 4445:4444 selenium/standalone-firefox:2.53.0 

通过在安全组中创建适当的条目,确保端口 4445 从您所在的 IP 地址打开 运行ning R。

在我可以看到 EC2 实例的台式机上,使用此 R 代码连接...

library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "ec2-xxx.eu-west-1.compute.amazonaws.com", port = 4445L)
remDr$open()

#[1] "Connecting to remote server"
#$applicationCacheEnabled
#[1] TRUE

#$rotatable
#[1] FALSE

#$handlesAlerts
#[1] TRUE
#...

注意 EC2 实例的地址是 "ec2..."。该地址可从 AWS 控制台获得,是实例的 public DNS 名称。如果您恰好在另一台 AWS 机器上 运行ning R,那么您可能需要使用私有 DNS 地址。

[编辑以在云中为 运行ning Rstudio 添加说明]

找到Selenium容器的IP地址。一种方法是按如下方式登录

docker exec -it <nameofthecontainer> bash
hostname -i
exit

对于与 Selenium 在同一台 EC2 机器上的 运行 Rstudio,一种选择是使用 Docker。好的形象是rocker/rstudio

执行以下操作。

docker run -d -p 8787:8787 -e PASSWORD=<password> --name rstudio rocker/rstudio

确保端口 8787 对您开放,您可以从那里访问 Rstudio。在实例的安全组中添加条目以执行此操作。

要在 Rstudio docker 容器中安装 RSelenium,请执行以下操作。

docker exec rstudio bash
apt-get update
apt-get install -y libxml2-dev
exit

找到 Rstudio GUI 的 URL - 它会是这样的

http://ec2-xxx:8787 

用户名是 rstudio,密码是您启动容器时指定的密码。

从 Rstudio 安装 RSelenium 包。

install.packages("RSelenium")

最后 运行 访问 Selenium 实例的 R 代码。

library(RSelenium)
remDr <- remoteDriver(remoteServerAddr = "IP address of the Selenium container", port = 4445L)
remDr$open()

谢谢@awchisholm!正如您所解释的,我需要在我的 EC2 实例上而不是在我的本地计算机上安装 docker。问题已解决!