gpt4 book ai didi

amazon-web-services - 通过服务器将 S3 中的图像流式传输到客户端的最佳实践

转载 作者:行者123 更新时间:2023-12-03 03:34:57 38 4
gpt4 key购买 nike

我正在尝试寻找将图像从 s3 流式传输到客户端应用程序的最佳实践。

我在移动设备(类似于 instagram)上使用 flutter 创建了一个类似网格的布局。我的客户端如何访问其所有图像?

这是我当前的设置:客户端打开其个人资料屏幕(其中包含所有按时间戳排序的图像的网格布局)。这会自动从服务器请求所有图像。我的 python3 后端服务器使用 boto3 访问 S3 和 dynamodb 表。 Dynamodb 表包含客户端上传的所有图像路径的列表,按时间戳排序。获取路径后,我首先使用它来将所有图像下载到我的服务器,然后将其发送到客户端。

基本上我的服务器是下载图像并将其发送回客户端的中间人。这是正确的做法吗?看起来如果客户端直接访问S3,它会更快但我不确定是否安全。另外,我不知道如何在不提供 aws 凭据的情况下让客户访问 S3...

如有任何建议,我们将不胜感激。提前致谢!

最佳答案

您正在做的事情会奏效,如果您正在优化以使某些东西快速运行,而无需过多担心服务器资源浪费、不必要的计算,并且您没有可扩展性问题,那么这可能是最佳选择.

但是,如果您担心可扩展性和较低的延迟,以及对这些图像资源的安全访问,您可能需要改进当前的架构。

Once I get the paths, I use that to download all images to my server first and then send it to the client.

这部分是我要尝试摆脱的第一部分,因为您实际上并不需要后端来下载这些图像并自行流式传输它们。然而,似乎仍然有必要根据谁拥有资源来控制对资源的访问。我会考虑将其切换到以下设置以改善延迟,并花费更少的服务器资源来完成这项工作:

  • 一旦我在您的后端服务中获得路径,generate Presigned urls对于 s3 对象,这将使您的客户端临时访问这些资源(根据您的需要,您可以调整您希望 URL 访问工作的时间范围)。
  • 然后,将这些链接发送到您的客户端,以便它可以直接从 S3 流式传输 URL,而不是您的服务器为此充当中间人。

一旦你使这个设置工作,我会尝试考虑使用 Amazon CloudFront通过 CloudFront 为您提供的 CDN 功能改进对您的对象的访问,尤其是当您的客户端分布在不同的地理区域时。 AFA 我可以看到,you can also make CloudFront work with presigned URLs .

Is this the right way of doing it? It seems that if the client accesses S3 directly, it'll be faster but I'm not sure if that is safe

预签名 URL 是您减轻对 S3 对象的不受控制访问的方式。不过,您可能需要担心边缘情况(例如,当客户端对 S3 对象的访问权限已过期时,客户端应如何操作,以便用户不会注意到这一点,等等)。如果您有可扩展性方面的顾虑,所有这些都是使某些东西大规模运行的成本。

关于amazon-web-services - 通过服务器将 S3 中的图像流式传输到客户端的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61694450/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com