EC2 上的 RSelenium 和 Docker

标签 r docker amazon-ec2 rselenium

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

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

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

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

我按照教程中给出的具体步骤进行操作,所以我真的不知道出了什么问题。

非常感谢任何帮助!

M.

编辑1: 请查看以下我迄今为止所拥有的屏幕截图: enter image description here

enter image description here

enter image description here

enter image description here

EDIT 5: Security Groups Port within EC2

我使用的 EC2 实例如下: My EC2 instance I use is the following:

最佳答案

以下内容对我有用。

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

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

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

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

在我可以看到 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 控制台获取,并且是实例的公有 DNS 名称。如果您碰巧在另一台 AWS 计算机上运行 R,那么您可能需要使用私有(private) DNS 地址。

[编辑以添加在云中运行 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")

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

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

关于EC2 上的 RSelenium 和 Docker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53916609/

相关文章:

r - R中箱线图中的上下四分位数

arrays - 将多维 NetCDF 读取为 R 中的数据框

java - 当我有自定义存储库时,如何使用 Dockerfile 在 Docker 中运行 Maven 项目

docker - 从主机访问 Docker 镜像中的数据文件

docker - 在 docker 中的链接容器上执行二进制文件

linux - 无法 ssh 到 Amazon ec2 服务器上的端口 443

从ggplot2中删除某些图例变量和图例值?

r - 主要情节标题中的斜体和普通文本

amazon-web-services - AWS S3 同步功能 - 缺少文件

amazon-web-services - AWS VSToolKit .Config 文件