为使用 Carrierwave 上传图像文件的用户提供适当的 s3 权限

2024-06-24

在 Michael Hartl 撰写的《Rails 教程》第 11 章末尾,我通过创建存储桶、使用 IAM 设置用户并授予用户 AmazonS3FullAccess 策略,成功地实现了用户上传到 Amazon S3 服务的功能。允许我网站上的未知用户完全访问我网站上的图像上传存储桶,这感觉很肮脏且非常不安全,我不确定我是否应该有这种感觉。我创建了一个自定义策略

  • http://awspolicygen.s3.amazonaws.com/policygen.html http://awspolicygen.s3.amazonaws.com/policygen.html

如下:


   {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Sid": "Stmt1445501067518",
          "Action": [
            "s3:GetObject",
            "s3:PutObject"
          ],
          "Effect": "Allow",
          "Resource": "arn:aws:s3:::bucketname"
        }
      ]
   }  

我对我的解决方案没有信心,并且无法通过谷歌搜索来找到解决此问题的最佳方法的任何答案。我正在使用 Carrierwave(打算在我自己的项目中使用 Carrierwave_direct)、Fog 和 mini_magick gems。


允许用户将文件上传到您的网站(即 S3)的最佳且可能是最安全的方法是使用基于浏览器的帖子上传。

这使用户可以直接上传到 S3,而无需通过您的服务器。在您的服务器上,您只需使用访问密钥创建请求签名即可。

你可以在这里读更多关于它的内容:使用 Post 基于浏览器的上传 http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingHTTPPOST.html

我自己对载波并不熟悉,但您可能会发现这很有用:直接上传到rails中的S3 https://devcenter.heroku.com/articles/direct-to-s3-image-uploads-in-rails

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为使用 Carrierwave 上传图像文件的用户提供适当的 s3 权限 的相关文章

随机推荐

  • 使用参数元组进行测试的 Pytest 文本注释

    我正在为此类问题寻找更优雅的解决方案 def ids x if isinstance x int return str x elif isinstance x str return x 0 pytest mark parametrize n
  • window.getSelection() 与 HTML 标签的偏移量?

    如果我有以下 HTML div class content Vivamus span luctus span urna sed urna ultricies ac tempor dui sagittis div 我举办了一个活动mouseu
  • 协议中的提示返回类型在 Clojure 中是否有任何影响?

    您可以在协议中暗示返回类型 defprotocol Individual Integer age this 并且编译器将使您的方法符合 defrecord person Individual String age this one Comp
  • 如何使用 powershell 重命名 blob 文件

    看似简单的任务 我只想重命名一个 blob 文件 我知道我必须复制它来重命名或执行其他操作 然后删除原始文件 但这很棘手 我已经创建了存储上下文 New AzureStorageContext 并获取了 blob Get AzureStor
  • 3D游戏编程

    他们使用什么编程语言来制作 Bioware 龙腾世纪 起源 等游戏以及 使命召唤 等其他一些 3D 游戏 如果我想做 3D 游戏编程 我该从哪里开始 有没有简单的教程 我想为电脑游戏进行 3D 游戏编程 我不想令人沮丧 但我也不想撒谎 即使
  • 如何在每种情况下仅使用 CSS 将首字母大写

    我只想将第一个字母大写并且其他应该小使用CSS 字符串是 SOMETHING BETTER sOMETHING bETTER Something better 但结果应该是 Something Better 使用 CSS 可以实现这一点吗
  • 在 Docker 容器中运行 MySQL

    所以我的最终目标是运行一个 MySQL Docker 容器 比如来自公共注册表的 tutum mysql 然后将一个 Gitlab Docker 容器 比如 Sameersbn gitlab 链接到它 其中两个容器都使用持久存储 然而 我被
  • 在 facebook 的 share.php 上传递标题、url 和图像

    我想在 facebook 上分享标题 图像和描述 无需 javascript 只需将这些传递到 facebook 的 share php 即可 我在这个网站上得到了一些有问题的代码用于社交书签的 AddThis AddToAny Share
  • Python 列表理解和“不在”

    我正在开始使用 Python 目前正在学习列表理解 所以这听起来可能很奇怪 问题 是否可以使用列表理解来创建元素列表t中没有找到s 我尝试了以下操作 但它给了我一个错误 gt gt gt t 1 2 3 4 5 gt gt gt s 1 3
  • Intellij IDEA 与 ideavim。无法从其他来源复制文本

    我尝试使用默认的 vim 键绑定 使用 ideavim 插件从 IDEA 复制文本 y 但这段文本没有复制到全局缓冲区中 我只能将其粘贴到 IDEA 中 例如 如何在浏览器中使用复制的文本 Vim s yank http vimdoc so
  • 使用 mvc3 将图像保存到文件系统

    我有一些简单的实体 现在需要有一个个人资料图像 执行此操作的正确方法是什么 因此 这是一对一的关系 一张图像仅与一个实体相关 反之亦然 该图像应通过网络表单上传并插入相关实体 因此 当我指出使用文件系统来存储图像并仅将路径图像持久保存到数据
  • Javascript:类型错误:值未实现 FormData 接口

    我正在尝试使用 FormData 通过 AJAX 将数据发送到 PHP 脚本 输入类型文本值似乎没有任何问题 但当我尝试附加文件时 出现错误 TypeError Value does not Implement Interface Form
  • Flask 没有获取复选框值

    当我点击提交按钮时 我试图打印 Flask 中的复选框值 app py 片段 app route test2 methods GET POST def test2 if request method POST if request form
  • 单击选定的 UIButton 时不显示 UIButton 突出显示状态

    我希望当我单击已选择的按钮时 我的 UIButton 显示突出显示状态 基本上在突出显示的状态下 我应用 png 图像作为 UIButton 背景图像以提供按下效果 但是 如果按钮已经处于选定状态 当我再次单击它时 我只是看不到突出显示的状
  • 使用带反射的 XPath 样式查询

    我有一个类树 其中包含层次结构中的多个对象 因此 我可能有一个 Container 对象 它托管 3 个 SubContainer 对象 而这些对象又托管任意数量的 Item 对象 有什么方法可以在此对象树上使用 XPath 样式表达式 这
  • 通过股票报价识别 pandas 数据框中的价格波动/趋势

    我有一个带有 DatetimeIndex 和 ohlcv 股票报价列的 pandas Dataframe 我想提取满足特定阈值的价格波动 趋势 大于 0 3 美元的上涨波动 趋势 变动以及超过 0 3 美元的下跌波动 趋势 变动 df 10
  • 用于 Jenkins/本地构建的 PyPI 本地缓存

    我有一个 Jenkins 实例 它与其伴随者一起构建我的项目PyPI http pypi python org pypi包裹来自要求 txt http www pip installer org en latest requirements
  • 如何使用 Google Fit API 获取各种健身活动的读数?

    Google Fit API 中有各种健身活动 例如有氧运动 羽毛球 拳击 举重等 如何使用 Google Fit API 获取每项活动的步数读数和消耗的卡路里 任何形式的建议都是非常受欢迎的 提前致谢 我不确定这个结果是否是您需要的 您可
  • 如何部署连接Django RESTful API的静态网站?

    首先 谷歌或SO搜索对我没有帮助 很多关于django静态文件的提示 我认为这些提示与这里无关 我继承了一个项目 其中包括 Django 后端以 API 形式仅返回 JSON 响应 标准 Swampdragon 部署将实时更新推送到前端 这
  • 为使用 Carrierwave 上传图像文件的用户提供适当的 s3 权限

    在 Michael Hartl 撰写的 Rails 教程 第 11 章末尾 我通过创建存储桶 使用 IAM 设置用户并授予用户 AmazonS3FullAccess 策略 成功地实现了用户上传到 Amazon S3 服务的功能 允许我网站上