在Blazor网站上显示存储在私人S3存储桶中的图像



我有一些图像被不断地输入到一个私有的S3存储桶中,然后我需要在Blazor应用程序中显示这些图像。

我已经根据本指南中的说明设置了一个基于VPC的接入点和一个VPC端点。这样做的目的是,只要代码在VPC中执行,我就可以自由访问S3存储桶的内容。

我试图在一个简单的img标签中显示图像:

<img src="https://my-access-point-12345678910.s3-accesspoint.us-east-1.amazonaws.com/img/image1.jpg">

我现在遇到的问题是,每次我试图访问url时,无论是在网站上嵌入图像时,还是通过浏览器访问时,我都会遇到错误消息:

<Code>InvalidRequest</Code>
<Message>The authorization mechanism you have provided is not supported. Please use Signature Version 4.</Message>

根据关于Signature Version 4的AWS文档,我需要使用签名密钥发出HTTP请求,以获得我需要的图像。这是不可行的,因为我需要的图像数量太多了,并且逐个执行GET请求的速度太慢了。

我也尝试过创建一个完全公共的接入点,但遇到了同样的问题

我该如何绕过这件事,或者我错过了什么?

通常的方法是:

  • 将图像存储在Amazon S3存储桶中
  • 将bucket保持为私有,即不添加bucket策略
  • 是否将bucket限制为只能通过接入点访问(不确定您是否在这样做(
  • 当您的应用程序确定允许用户访问私人对象时,生成一个AmazonS3预签名URL,这是一个有时间限制的URL,可提供对私人对象的临时访问
  • 在图像标签中使用预先签名的URL,例如<img src="pre-signed-url-here">

这样,最终用户将能够通过预先签名的URL访问S3中的图像。

相关内容

  • 没有找到相关文章

最新更新