R 如何将环境变量传递给shinyapps

R 如何将环境变量传递给shinyapps,r,shiny,R,Shiny,我想将安全参数传递给shinyapps.io部署,以便我的应用程序可以通过以下方式获取这些参数: Sys.getenv('PASSWORD_X') 我在rsconnect软件包的deployApp功能中找不到与此相关的任何内容。您可以使用Renviron.site或.Renviron将私人数据存储并访问到您的应用程序中。() 解决方案: 存储API身份验证密钥/令牌() 如果您的包支持基于API密钥或令牌的身份验证工作流,请鼓励用户将其存储在环境变量中。我们使用github R包来说明这一点,

我想将安全参数传递给shinyapps.io部署,以便我的应用程序可以通过以下方式获取这些参数:

Sys.getenv('PASSWORD_X')


我在
rsconnect
软件包的
deployApp
功能中找不到与此相关的任何内容。

您可以使用Renviron.site.Renviron将私人数据存储并访问到您的应用程序中。()


解决方案: 存储API身份验证密钥/令牌() 如果您的包支持基于API密钥或令牌的身份验证工作流,请鼓励用户将其存储在环境变量中。我们使用github R包来说明这一点,该包封装了github v3 API。根据您的API+包定制此模板,并将其包含在README.md或vignette中

  • 在的个人访问令牌区域中创建个人访问令牌 您的GitHub个人设置。将令牌复制到剪贴板
  • 识别您的主目录。不确定?在R中输入normalizePath(~/) 控制台
  • 创建一个新的文本文件。如果在RStudio中,则执行文件>新建文件> 文本文件
  • 创建一条如下所示的线:

    GITHUB_PAT=blahblahblahblahblahblah

  • 其中名称
    GITHUB_PAT
    提醒您这是用于哪个API,并且
    blahblahblahblahblahblah
    是您的个人访问令牌,从剪贴板粘贴

  • 确保文件中的最后一行是空的(如果不是空的,R将自动加载文件。如果使用显示行号的编辑器,则应该有两行,其中第二行是空的

  • 用文件名.Renviron保存在主目录中。如果有疑问, 是的,您确实希望使用以点开头的文件名

    • 请注意,默认情况下,点文件通常是隐藏的。但在RStudio中,文件浏览器将使.Renviron可见,因此将来易于编辑
  • 重新启动R..Renviron仅在R会话开始时处理

  • 使用Sys.getenv()访问您的令牌。例如,以下是如何将您的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.
    
    库(github)
    
    ctx总的来说是一个好问题。但是关于安全性,一旦你将这些参数传递给shinyapps.io,它们就不再安全了:你已经将它们交给了第三方。这对任何第三方都是正确的,例如亚马逊将拥有我们的密钥BTW,任何其他发送密钥的方法都会很有帮助,以便应用程序可以从S3读取密钥。当前选项Ihave正在以文本文件(例如json)的形式发送密钥,但由于所有aws相关软件包都是以这种方式实现的,因此我必须设置env VAR。如果您真的相信“Amazon将拥有您的密钥”,那么您将不得不严重不信任Amazon EC2管理员或其虚拟机监控程序的实现如果您在EC2实例上使用环境变量作为机密。@hrbrmstr您是对的,我不相信。Shiny也可能是这样。您可以删除有关s3的详细信息,这只是一个示例,但与解决方案无关。查看
    .Renviron
    ,我认为这是我真正需要的。需要使用shinyapps进行测试。乐意帮助-获取careThis在我的Shiny应用程序的根目录中创建了.Renviron文件的副本后对我起了作用。从安全角度来看,将
    .Renviron
    中的API密钥部署到shinyapps.io是否安全?Lauren,我相信这取决于文件权限。就我个人而言,我不相信这个答案。你可能需要向RStudio a查询Tsecurity@rstudio.com我给RStudio发了一封电子邮件。。。