RSelenium и Docker на EC2 - PullRequest
       19

RSelenium и Docker на EC2

0 голосов
/ 24 декабря 2018

Моя конечная цель - использовать - мой экземпляр EC2 (AWS).

Для этого я прочитал, что рекомендуетсяиспользовать и установить докер на виртуальной машине.Итак, я выполнил все шаги, данные здесь Джоном Д. Харрисоном: https://rpubs.com/johndharrison/RSelenium-Docker

И все прошло хорошо, кроме как в конце, когда я вхожу в RStudio в моем EC2 экземпляре.Потому что, когда я пытаюсь подключиться к удаленному серверу, я получаю следующую ошибку:

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

1 «Подключение к удаленному серверу» Ошибка в checkError(res): неопределенная ошибка в вызове httr.Вывод httr: истекло время ожидания: истекло время ожидания соединения через 10001 миллисекунду

Я выполнил точные шаги, приведенные в руководстве, поэтому я действительно не знаю, что не так.

Любая помощьочень признателен!

М.

РЕДАКТИРОВАТЬ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:

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Спасибо, @awchisholm!Как вы объяснили, мне нужно было установить докер на мой экземпляр EC2, а не на мою локальную машину.Проблема решена!

0 голосов
/ 04 января 2019

У меня работает следующее.

Создайте экземпляр EC2 Ubuntu с установленным Docker.Я не использовал Windows.

Запустите образ док-сервера селена на экземпляре EC2 следующим образом

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

Убедитесь, что порт 4445 открыт с IP-адреса, на котором вы запускаете 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 и является общедоступным DNS-именем экземпляра.Если вы используете R на другом компьютере AWS, вам, вероятно, потребуется использовать частный адрес DNS.

[Отредактировано, чтобы добавить инструкции для запуска Rstudio в облаке]

Найти IP-адрес контейнера Selenium.Один из способов - войти в него следующим образом:

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

Чтобы запустить Rstudio на той же машине EC2, что и Selenium, можно использовать Docker.Хорошее изображение rocker/rstudio.

Выполните следующие действия.

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

Убедитесь, что порт 8787 открыт для вас, откуда вы хотите получить доступ к Rstudio.Для этого добавьте записи в группу безопасности для экземпляра.

Чтобы установить RSelenium в Docker-контейнер Rstudio, выполните следующие действия.

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

Найдите URL-адрес графического интерфейса Rstudio - itбудет выглядеть примерно так:

http://ec2-xxx:8787 

Имя пользователя - rstudio, а пароль - тот, который вы указали при запуске контейнера.

Установите пакет RSelenium из Rstudio.

install.packages("RSelenium")

Наконец, запустите код R для доступа к экземпляру Selenium.

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