Android 如何将用户上传的图像存储在S3私有bucket中并在应用程序中显示

Android 如何将用户上传的图像存储在S3私有bucket中并在应用程序中显示,android,ios,amazon-s3,amazon-ec2,hybrid-mobile-app,Android,Ios,Amazon S3,Amazon Ec2,Hybrid Mobile App,我正在开发一个android应用程序,用户可以选择上传很多图片。我计划使用S3作为所有这些映像的存储系统。我将创建一个私有bucket,并在其中为每个用户创建文件夹。当用户上传图像时,我将创建一个预先签名的url,应用程序将使用该url直接将文件上传到S3。到现在为止一切都很好。我的问题是如何在应用程序上显示它?由于bucket是私有的,直接使用文件URL将无法工作,因为它需要身份验证。一种解决方案是调用S3并生成一个临时签名URL,该URL可以传递回应用程序并显示出来。本例的问题是,假设我正在

我正在开发一个android应用程序,用户可以选择上传很多图片。我计划使用S3作为所有这些映像的存储系统。我将创建一个私有bucket,并在其中为每个用户创建文件夹。当用户上传图像时,我将创建一个预先签名的url,应用程序将使用该url直接将文件上传到S3。到现在为止一切都很好。我的问题是如何在应用程序上显示它?由于bucket是私有的,直接使用文件URL将无法工作,因为它需要身份验证。一种解决方案是调用S3并生成一个临时签名URL,该URL可以传递回应用程序并显示出来。本例的问题是,假设我正在显示一个用户图像提要(比如20个图像),那么我必须进行20次调用来生成经过签名的经过身份验证的URL并将其传递回应用程序。我想我们也可以把所有的东西都成批通过。但是每次都打电话给它来创建一个签名的URL是不对的。有没有更好的方法来检索图像并在不打很多电话的情况下将其显示出来?我可以生成一个唯一的UUID作为文件名,这样就不容易猜到它,并将bucket公开。但它安全吗

您可以从后端计划一个包装器API,例如baseurl/userDP/这将使用AWS访问密钥和密码在s3上打印文件内容,并在图像源中使用相同的url。但在这种情况下,所有图像都将通过我的EC2实例。i、 e,S3->Ec2->应用程序。这将导致不必要的处理和带宽消耗您可以从后端计划一个包装器API,例如baseurl/userDP/这将使用AWS访问密钥和密码在s3上打印文件内容,并在图像源中使用相同的url。但在这种情况下,所有图像都将通过我的EC2实例。i、 e,S3->Ec2->应用程序。这将导致不必要的处理和带宽消耗