1

请参阅:在 Amazon S3 上,我可以为单个对象提供下载权限,但不能为整个存储桶提供此问题的下一个演变。

我有一个上传所有图片的桶。我正在尝试按照https://devcenter.heroku.com/articles/s3的指示通过他们的 url 访问它们。我当然想确保在将我的最新更改上传到我的实时应用程序之前我可以访问它们。据我所知,我已经正确设置了 yml,但是当我访问在 WEBRICK 上本地运行的站点时,图像没有加载。我没有对我的 ruby​​gems 目录中的 AWS 文件进行任何更改。这是我用来显示图像的参考示例:

<%= image_tag("https://s3-us-west-2.amazonaws.com/mybucket/someimage.jpg") %>

谁能给我一些指示?我知道有向包含的 AWS 文件添加代码的说明,但我对它们的理解不够深入,无法进入那里胡闹。谢谢。

我将以下内容添加到我的存储桶策略中:

{
  "Id": "somepolicy",
  "Statement": [
    {
      "Sid": "someid",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::myapp/mykey",
      "Principal": {
        "AWS": [
          "*"
        ]
      }
    }
  ]
}

我仍然无法访问图像。是否GetObject允许采取适当的行动?

4

3 回答 3

0

Paperclip 是上传和提供文件的绝佳解决方案,但听起来您已经上传了您打算提供的所有内容。这是您的 S3 存储桶的权限问题。

Amazon 示例存储桶策略:
http ://docs.aws.amazon.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html

于 2013-05-26T18:10:07.590 回答
0

非常感谢与我一起解决这个问题的每个人,尤其是@LarryMcKenzie。问题是您需要在上传时设置文件权限,并且无法将权限批量分配给存储桶中的所有对象。

解决方案:我重新上传了所有图像,并将每个人的打开/下载标志设置为 true。

于 2013-05-27T15:57:53.603 回答
0

您应该使用回形针 gem 来上传图片。我知道这似乎没有必要,但是当涉及到允许用户上传到磁盘时,最好留给专业人士。(为什么要重新发明轮子?)。

使用回形针,您可以执行以下操作

User.profile_pic.url

或者

User.images.first.image.url

我当然认为这是要走的路。

于 2013-05-26T17:46:28.517 回答