只希望我的网站从我的网站和网络服务器获取和发布

时间:2019-11-21 20:54:37

标签: amazon-web-services amazon-s3

我有Google并尝试了许多解决方案,但似乎都没有用。所以,这就是为什么我最后在这里问。 我是AWS和S3的新手。我已经在我的s3存储桶中检查了Block all public access。因此,我无法从URL查看图像。现在,我只想添加一个策略,该策略仅允许从我的网站获取图像。为此,我去了他们的文档并应用了此存储桶策略

{
    "Version": "2012-10-17",
    "Id": "http referer policy example",
    "Statement": [
        {
            "Sid": "Allow get requests originating from www.example.com and example.com.",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:*",
            "Resource": "arn:aws:s3:::development-stockarea/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://developstockarea.herokuapp.com/*",
                        "http://developstockarea.herokuapp.com/*",
                        "https://stockarea-application-test.herokuapp.com",
                        "http://stockarea-application-test.herokuapp.com"
                    ]
                }
            }
        }
    ]
}

但是当我尝试保存它时,却向我展示了这个东西:

Granting public access in this policy will be blocked because Block public access settings are turned on for this bucket. To determine which settings are turned on, check your Block public access settings.

因此,看来我的政策实际上并没有受到重视。我还尝试使用CORS政策来访问我的网站,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/">
<CORSRule>
    <AllowedOrigin>https://developstockarea.herokuapp.com/*</AllowedOrigin>
    <AllowedMethod>GET</AllowedMethod>
    <AllowedMethod>POST</AllowedMethod>
    <AllowedMethod>PUT</AllowedMethod>
    <AllowedMethod>DELETE</AllowedMethod>
    <MaxAgeSeconds>3000</MaxAgeSeconds>
    <AllowedHeader>Authorization</AllowedHeader>
</CORSRule>
</CORSConfiguration>

但这似乎也没有效果。任何人都可以给我详细的帮助或指示,以解决我要去的地方或其他问题。

更新: 好吧,在阅读他们的文档之后,我尝试了一些尝试,但仍然无法正常工作。

{
    "Version": "2012-10-17",
    "Id": "Policy1488494182833",
    "Statement": [
        {
            "Sid": "Stmt1488493308547",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::892246803113:user/abhiraj-tulsyan"
            },
            "Action": [
                "s3:Get*",
                "s3:Put*",
                "s3:Delete*"
            ],
            "Resource": "arn:aws:s3:::app-stockarea/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "https://app.stockarea.io/*",
                        "http://app.stockarea.io/*",
                        "https://admin-stockarea.herokuapp.com/*",
                        "http://admin-stockarea.herokuapp.com/*",
                        "https://stockarea.io/*"
                    ]
                }
            }
        }
    ]
}

这是我现在的政策。而且我没有选中阻止所有公共访问设置。 但是我仍然能够复制粘贴图片的网址,并获得显示,而没有任何4xx错误。

1 个答案:

答案 0 :(得分:0)

“ Amazon S3阻止公共访问设置会覆盖这些策略和权限,以便您可以限制对这些资源的公共访问。”来自https://docs.aws.amazon.com/AmazonS3/latest/dev/access-control-block-public-access.html
此设置将覆盖所有策略。您得到的错误也是如此。
因此,我们取消选中此选项,一切都会正常进行:-)

您共享的策略的

JSON足以获得所需的内容。它基本上只允许指定的引荐来源访问。
有关更多详细信息,请参见https://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

中的“限制对特定HTTP引荐来源网址的访问”部分