如何在不使用云端的情况下在 aws s3 中启用基本身份验证?

how to enable basic auth in aws s3 without using cloudfront?

我有一个 S3 存储桶,这里有一些图像文件。世界上任何下载 link 的人都可以下载该文件。

但是,我想使用基本的用户名和密码身份验证来限制它。不使用云端方式。 aws 中是否有其他可用的方法?下载前启用基本身份验证。

我将 S3 存储桶策略与自定义 header 一起使用,如下所示:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "getwithauthen",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*.txt",
            "Condition": {
                "StringEquals": {
                    "aws:UserAgent": "username",
                    "aws:Referer": "password"
                }
            }
        },
        {
            "Sid": "allowgetwithoutauthen",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*.pem"
        }
    ]
}

然后我使用curl命令获取txt文件的内容:

curl --user-agent username --referer password --request GET "https://s3-url"

但我还没有用图片测试过。我想你可以使用 curl -O 来获取图像