Я использую R в Windows для подключения к базе данных PostgreSQL, размещенной на AWS. База данных настроена с использованием forcesl = 1 — это означает, что любое соединение должно быть установлено с sslmode=require.
Базовый пакет RPostgreSQL
не предоставляет каких-либо параметров ssl. Это поднималось как проблема много раз (см. здесь, здесь, здесь и здесь)
Я знаю, что есть обходной путь с использованием пакета RPostgres
, но по другим причинам функциональности я бы предпочел использовать пакет RPostgreSQL
.
В нескольких ответах (например, здесь) предлагается использовать измененное имя базы данных для подключитесь к ssl так:
dbConnect(dbDriver('PostgreSQL'),
dbname = 'dbname=foobar sslmode=require', # modified dbname
host = 'foobar.rds.amazonaws.com',
port = 5439,
user = 'foobar',
password = 'foobar')
Но это не сработало для меня, используя версию пакета CRAN. Это привело меня к недавней проблеме, поднятой на github RPostgreSQL: https://github.com/tomoakin/RPostgreSQL/issues/88
Первоначальный пользователь мог использовать измененный метод dbname, когда он компилировал пакет из исходного кода. В Windows, используя последний исходный пакет (0.6.2), скомпилированный с помощью RTools, я получаю следующую ошибку при запуске измененного кода dbname:
Error in postgresqlNewConnection(drv, ...) :
RS-DBI driver: (could not connect xxxxx.rds.amazonawss.com:5432 on dbname "xxxxxxx": sslmode value "require" invalid when SSL support is not compiled in
)
Судя по этой и остальной части потока, SSL невозможен из текущего источника как в Windows, так и в Mac. Однако разработчик предлагает:
Если вы компилируете в среде, где libssl и libpq были активированы через SSL, драйвер может использовать SSL.
Я думаю, это означает, что я могу вручную загрузить библиотеки и скомпилировать их самостоятельно, но я не уверен, что это быстрое исправление или оно потребует значительного переписывания пакета. Любая помощь или указание в правильном направлении будут высоко оценены. Как я могу сделать это безопасным и воспроизводимым способом?