Как передать переменные среды в shinyapps

Я хочу передать безопасные параметры для развертывания shinyapps.io, чтобы мое приложение могло получить их через:

Sys.getenv('PASSWORD_X')

Я не могу найти ничего для этого в deployApp функции в пакете rsconnect.

Ответы

Ответ 1

Вы можете использовать Renviron.site или .Renviron для хранения и доступа к конфиденциальным данным в своем блестящем приложении. (см. здесь рекомендации и инструкции Hadley Wickham - пример ниже).


Решение:

Сохранение ключей аутентификации API/токенов (Атрибуция: Hadley Wickham)

Если ваш пакет поддерживает процесс проверки подлинности на основе ключа или маркера API, рекомендуется пользователям хранить его в переменной окружения. Мы проиллюстрируем это с помощью пакета github R, который обертывает API Github v3. Создайте этот шаблон для вашего пакета API + и включите его в README.md или виньетку.

  • Создайте токен персонального доступа в области токенов персонального доступа ваши личные настройки GitHub. Скопируйте токен в буфер обмена.
  • Определите свой домашний каталог. Не уверен? Введите normalizePath ( "~/" ) в R консоль.
  • Создайте новый текстовый файл. Если в RStudio сделайте File > New File > Текстовый файл.
  • Создайте такую ​​строку:

    GITHUB_PAT = blahblahblahblahblahblah

где имя GITHUB_PAT напоминает вам, для какого API это, и blahblahblahblahblahblah - ваш токен доступа, вставленный из буфера обмена.

  • Удостоверьтесь, что последняя строка в файле пуста (если это не будет, R будет тихо загружать файл. Если вы используете редактор, который показывает номера строк, должны быть две строки, где вторая пустой.

  • Сохраните в своем домашнем каталоге имя файла .Renviron. Если допросить, ДА, вы хотите использовать имя файла, начинающееся с точки.

    • Обратите внимание, что по умолчанию файлы dotfiles обычно скрыты. Но в RStudio браузер файлов будет делать .Renviron видимым и, следовательно, легко редактировать в будущем.
  • Перезагрузите R..Renviron обрабатывается только в начале сеанса R.

  • Используйте Sys.getenv() для доступа к токену. Например, heres, как использовать ваш GITHUB_PAT с пакетом github:

    library(github)
    ctx <- create.github.context(access_token = Sys.getenv("GITHUB_PAT"))
    # ... proceed to use other package functions to open issues, etc.
    

ЧАСТО ЗАДАВАЕМЫЕ ВОПРОСЫ: зачем определять эту переменную среды через .Renviron, а не в .bash_profile или .bashrc?

Поскольку существует множество комбинаций ОС и способов запуска R, где подход "Reneviron" "просто работает", а bash - нет. Когда R является дочерним процессом, скажем, Emacs или RStudio, вы всегда можете рассчитывать на переменные среды, передаваемые R. Поместите их в файл запуска, специфичный для R, и сберегите себе некоторое горе.