AWS S3 上的 WooCommerce 数字商品



我想在 AWS S3 上托管我的数字下载。 似乎没有简单的方法可以做到这一点。我用谷歌搜索了很多。 有 2 个插件,一个付费,一个不支持 v4。

我认为我最后的手段是以某种方式从 SDK 中获取 v4 签名并将其放在"不起作用"的签名之上,但我不知道这有多容易(或者我是否能够做到这一点(。

有没有办法将我的 S3 存储桶配置为可链接但不可浏览? 这样我就可以将预签名的URL放入我的WooCommerce中,它就像那样工作? 我发现 S3(或一般的 AWS(文档真的很令人困惑。 我只想在 S3 上托管我的文件并通过 wooCommerce 出售它们。 对我来说似乎是一项微不足道的任务,但这似乎非常困难。 有什么简单的方法?我是否必须自己实现 v4 签名?如果是这样,我在哪里可以找到有关如何执行此操作的简单解释?

谢谢:)

是的,这是绝对可能的。只需在 S3 存储桶上配置正确的策略(可通过 AWS 控制台设置(即可,不允许列表,但允许存储桶上的 GET。这是最常见的要求;因为我们希望用户能够看到产品图片;但不是所有图像的列表。

此策略将起作用:

{
"Version": "2012-10-17",
"Id": "Policy1432653608784",
"Statement": [
{
"Sid": "Stmt1432653602777",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<bucket-name>/*"
}
]
}

如果您需要更多帮助,请告诉我

始终为您的产品使用相同的 URL 是不明智的。

一旦有人购买了你的产品并且你提供了一个链接,理论上他们可以在推特上发布链接,然后任何人都可以下载它。

预签名 URL 的正常用法是:

  • 您的应用程序确定用户是否有权访问 Amazon S3 中的对象
  • 您的应用程序会生成一个预签名 URL(可以通过几行代码或通过 AWS 命令行界面 (CLI(aws s3 presign命令完成(
  • 应用程序向用户提供预签名的 URL
  • 用户可以使用 URL 下载项目的时间段有限

但是,您的设计使用单个预签名 URL(可能具有遥远的未来过期时间(,这并不使其安全。

同样,您公开存储桶内容但不可列出的想法是"默默无闻的安全性",这不是一个好的选择。

底线:尝试使用自定义生成的预签名 URL 来提供对 Amazon S3 中私有内容的限时访问。

请参阅: PHP 中的 Amazon S3 预签名网址

最新更新