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

Fan*_*ane 4 amazon-s3 amazon-web-services

我实际上在理解如何做到这一点时遇到了一些困难。在我过去将图像直接存储在服务器中之前,但在转向生产之前,我决定采用这种方式。那么,将它存储在存储桶中后,example我应该如何获取图片19512491.jpg并将其显示在源中?

<img src="image_src_should_go_here"/>

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

Joh*_*ein 10

IMG 链接

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

确切的 URL 可能会根据使用的区域而变化(请参阅Amazon S3 终端节点)。它看起来像这样:

https://s3-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg
Run Code Online (Sandbox Code Playgroud)

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

https://s3-website-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg
Run Code Online (Sandbox Code Playgroud)

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

<img src="https://s3-ap-southeast-2.amazonaws.com/BUCKET-NAME/image.jpg"/>
Run Code Online (Sandbox Code Playgroud)

安全

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

使对象可公开访问的最简单方法是使用这样的存储桶策略(来自Amazon S3 文档),使整个存储桶公开:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"AddPerm",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::examplebucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

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

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

这是提供对文件的选择性访问的好方法。例如,如果您经营像 Flickr 这样的照片共享网站,您可以向所有者提供私人图片

请参阅文档:与他人共享对象