繁体   English   中英

如何从本地开发应用程序引用S3存储桶中的图像?

[英]How do I reference images in my S3 bucket from local dev app?

请参阅: 在Amazon S3上,我可以赋予单个对象下载权,但不能为整个存储桶提供该问题的下一个发展。

我的所有图片都已上传到存储桶中。 我正在尝试按照https://devcenter.heroku.com/articles/s3的指示通过其URL访问它们。 我当然想确保在将最新更改上传到实时应用程序之前可以访问它们。 据我所知,我已经适当地设置了yml,但是当我访问在WEBRICK上本地运行的站点时,图像未加载。 我尚未对rubygems目录中的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是允许的适当操作吗?

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

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

User.profile_pic.url

要么

User.images.first.image.url

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM