You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在EC2实例的Shiny Server应用中配置AWS S3凭证?

解决EC2上Shiny应用访问S3的凭证配置问题

一、可以在EC2实例内创建.Renviron,先解决权限问题

你创建.Renviron后Shiny Server无权限,核心是文件的所有者或权限设置不符合要求,按以下步骤处理:

  1. 定位你的Shiny应用所在目录,例如/srv/shiny-server/your-app/
  2. 切换到Shiny Server运行的默认用户shiny:
    sudo su - shiny
    
  3. 在应用目录下创建并编辑.Renviron:
    nano /srv/shiny-server/your-app/.Renviron
    
  4. 写入AWS凭证内容,格式和你之前使用的一致:
    AWS_ACCESS_KEY_ID=你的访问密钥ID
    AWS_SECRET_ACCESS_KEY=你的秘密访问密钥
    AWS_DEFAULT_REGION=你的S3桶所在区域
    
  5. 保存退出(按Ctrl+O回车确认,再按Ctrl+X退出编辑器)
  6. 回到root用户,修正文件权限确保Shiny Server能读取:
    sudo chown shiny:shiny /srv/shiny-server/your-app/.Renviron
    sudo chmod 600 /srv/shiny-server/your-app/.Renviron
    
  7. 重启Shiny Server使配置生效:
    sudo systemctl restart shiny-server
    

二、更推荐的安全配置方式:使用EC2 IAM角色

硬编码凭证存在泄露风险,优先用IAM角色替代:

  • 登录AWS控制台,创建一个IAM角色,为其添加针对目标S3桶的访问权限(可以用AmazonS3FullAccess或更精细的自定义策略)
  • 将该角色关联到你的EC2实例:进入EC2控制台→选中目标实例→操作→安全→修改IAM角色
  • 配置完成后,aws.s3包会自动从EC2实例的元数据服务获取凭证,无需在应用中配置任何环境变量,代码也不需要修改

三、其他备选配置方案

  • 系统级环境变量:在/etc/environment中添加凭证,所有用户(包括shiny)都能读取:
    sudo nano /etc/environment
    
    写入内容:
    AWS_ACCESS_KEY_ID=你的访问密钥ID
    AWS_SECRET_ACCESS_KEY=你的秘密访问密钥
    AWS_DEFAULT_REGION=你的S3桶所在区域
    
    重启服务器或Shiny Server生效
  • Shiny Server全局配置:在/etc/shiny-server/shiny-server.conf中添加环境变量,对所有Shiny应用生效:
    在server代码块内添加:
    environment {
      AWS_ACCESS_KEY_ID = "你的访问密钥ID"
      AWS_SECRET_ACCESS_KEY = "你的秘密访问密钥"
      AWS_DEFAULT_REGION = "你的S3桶所在区域"
    }
    
    重启Shiny Server即可

内容的提问来源于stack exchange,提问作者Justin Beresford

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 16:09:17