0

我正在使用 nodejs npm-multer s3 将我的视频/音频/图像文件上传到 amazon s3 存储桶。我正在使用以下策略来启用通过我的移动应用程序查看我的文件的权限

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my bucket/*"
        }
    ]
}

但问题是每当我在浏览器中复制我的 s3 文件的链接并将其粘贴时,我的文件就会被下载(或显示)。我怎样才能防止这种情况?当地址栏中给出链接时,我不希望我的文件被下载或显示。我的文件只能通过我的移动和网络应用程序显示或流式传输。我怎样才能做到这一点?

4

1 回答 1

0

在这种情况下,您可能需要考虑通过 CloudFront 使用签名 URL 或签名 Cookie 提供您的内容,并使用源访问身份来限制对您的 Amazon S3 内容的访问。

这样,只有 CloudFront 可以访问您的 S3 内容,并且只有具有有效签名 URL/cookie 的客户端才能访问您的 CloudFront 分配。

在 CloudFront 中设置源访问身份后,您的存储桶策略应类似于:

{
    "Version": "2012-10-17",
    "Id": "Policy1476619044274",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <Your Origin Access Identity ID>"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*"
        }
    ]
}

在Principal语句中指定 Origin Access Identity 的格式为:

"Principal":{
    "CanonicalUser":"<Your Origin Access Identity Canonical User ID>"
}

或者

"Principal": {
    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity <Your Origin Access Identity ID>"
}

请参阅:通过 CloudFront 提供私有内容

于 2017-08-22T11:14:44.993 回答