显示存储在s3存储桶中的图像

时间:2015-11-08 23:18:19

标签: amazon-web-services amazon-s3

我实际上很难理解如何做到这一点。 在我以前将图像存储在服务器中,但转向生产之前,我决定采取这种方式。因此,将其存储在存储桶example中之后,我应该如何获取图片19512491.jpg并将其显示在源代码中?

<img src="image_src_should_go_here"/>

我是否应该在存储桶中编辑权限并允许读取给定文件夹中的内容,否则?非常感谢你......

1 个答案:

答案 0 :(得分:3)

IMG链接

首先,您将构建一个指向Amazon S3中图像的URL。

确切的网址可能会根据使用的区域而有所变化(请参阅Amazon S3 Endpoints)。它看起来像这样:

https://s3-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg

如果您已将存储桶配置为静态网站,则URL将如下所示:

https://s3-website-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg

因此,您可以在IMG标记中使用它,如下所示:

<img src="https://s3-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg"/>

安全

您可以将对象公开访问,也可以使用预签名网址

使对象可公开访问的最简单方法是使用 Bucket Policy ,例如这个(来自Amazon S3 documentation),使整个存档公开:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}

当然,该政策可以更具选择性,例如只公开特定目录。

或者,如果您希望更具选择性,可以将Amazon S3中的对象保密,然后让您的应用程序生成预签名URL ,以便为特定对象提供对对象的身份验证访问权限时间段。

这是一种有选择地访问文件的好方法。例如,如果您操作像Flickr这样的照片共享网站,则可以向所有者提供私人照片

请参阅文档:Share an Object with Others