AWS S3 - 存储和提供非私有图像
AWS S3 - storing and serving non-private images
我是第一次使用 Flysystem 使用 S3(在本例中特别是用户个人资料头像图像)实现文件上传。我目前正在创建 S3 存储桶,用户可以上传图像,然后在存储桶控制台中在线可见。
我现在需要能够在请求时显示这些图像(即查看该用户的个人资料)。我假设此过程将生成 URL(例如 https://s3.my-region.amazonaws.com/my-bucket/my-filename.jpeg)并将其用作图像标签的 src
但是要执行此操作,文件(或存储桶)必须标记为 public。这对我来说似乎是合理的,因为其中的文件并不是真正的私人文件。但是,当将存储桶更新为 public 状态时,您会收到一条消息,说明;
We highly recommend that you never grant any kind of public access to your S3 bucket.
是否有其他或更安全的方法来实现像这样的 AWS 新手看不到的直接图像链接?
警告是因为很多人无意中制造了信息public。但是,如果您乐于让 Internet 上的任何人随时访问这些特定文件,那么您当然可以创建单个对象 public 或创建 Amazon S3 存储桶策略以创建特定路径 public.
另一种授予访问权限的方法是创建一个 S3 Pre-Signed URL,它是一个 time-limited URL,可以授予对私有对象的访问权限。
您的应用程序将负责验证是否应向用户授予对特定对象的访问权限。然后它将生成 URL,提供访问持续时间。然后您的应用程序可以将 URL 插入 src
字段,图像将正常显示。但是,一旦持续时间过后,将无法再访问。
这通常在提供对私人文件的访问权限时使用——类似于 DropBox 如何在不创建文件本身的情况下提供对私人文件的访问权限 public。
我建议将 cloudfront 放在静态资产的前面(没有双关语意),这样它就可以在他们的所有数据中心提供服务,而不仅仅是您上传它的区域,我认为这会向您收费更少,因为它不使用 S3 存储桶中的带宽。
这样您就可以为您的 S3 存储桶授予云端权限,并且无需在您的存储桶中手动设置文件 public。 Google 如何为 cloudfront 和 S3 设置 IAM 用户以进行设置。
我是第一次使用 Flysystem 使用 S3(在本例中特别是用户个人资料头像图像)实现文件上传。我目前正在创建 S3 存储桶,用户可以上传图像,然后在存储桶控制台中在线可见。
我现在需要能够在请求时显示这些图像(即查看该用户的个人资料)。我假设此过程将生成 URL(例如 https://s3.my-region.amazonaws.com/my-bucket/my-filename.jpeg)并将其用作图像标签的 src
但是要执行此操作,文件(或存储桶)必须标记为 public。这对我来说似乎是合理的,因为其中的文件并不是真正的私人文件。但是,当将存储桶更新为 public 状态时,您会收到一条消息,说明;
We highly recommend that you never grant any kind of public access to your S3 bucket.
是否有其他或更安全的方法来实现像这样的 AWS 新手看不到的直接图像链接?
警告是因为很多人无意中制造了信息public。但是,如果您乐于让 Internet 上的任何人随时访问这些特定文件,那么您当然可以创建单个对象 public 或创建 Amazon S3 存储桶策略以创建特定路径 public.
另一种授予访问权限的方法是创建一个 S3 Pre-Signed URL,它是一个 time-limited URL,可以授予对私有对象的访问权限。
您的应用程序将负责验证是否应向用户授予对特定对象的访问权限。然后它将生成 URL,提供访问持续时间。然后您的应用程序可以将 URL 插入 src
字段,图像将正常显示。但是,一旦持续时间过后,将无法再访问。
这通常在提供对私人文件的访问权限时使用——类似于 DropBox 如何在不创建文件本身的情况下提供对私人文件的访问权限 public。
我建议将 cloudfront 放在静态资产的前面(没有双关语意),这样它就可以在他们的所有数据中心提供服务,而不仅仅是您上传它的区域,我认为这会向您收费更少,因为它不使用 S3 存储桶中的带宽。 这样您就可以为您的 S3 存储桶授予云端权限,并且无需在您的存储桶中手动设置文件 public。 Google 如何为 cloudfront 和 S3 设置 IAM 用户以进行设置。