Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 限制对Amazon S3 URL的全球访问_Amazon Web Services_Amazon S3 - Fatal编程技术网

Amazon web services 限制对Amazon S3 URL的全球访问

Amazon web services 限制对Amazon S3 URL的全球访问,amazon-web-services,amazon-s3,Amazon Web Services,Amazon S3,我已经使用CloudFront配置了一个S3 bucket,并使用CludFront提供的备用域名(我在DNS区域文件中设置了域名别名images.mydomain.com)。 在我的DNS主机CNAME上,我指向xyz.cloudfront.net。我的s3存储桶名称和CNAME域别名都是images.mydomain.com 我想让世界访问我在images.mydomain.com/image.jpg上的图片,这一切都很好 问题是世界也可以通过下面两个URL直接访问同一个资源,我不希望这种情

我已经使用CloudFront配置了一个S3 bucket,并使用CludFront提供的备用域名(我在DNS区域文件中设置了域名别名images.mydomain.com)。 在我的DNS主机CNAME上,我指向xyz.cloudfront.net。我的s3存储桶名称和CNAME域别名都是images.mydomain.com

我想让世界访问我在images.mydomain.com/image.jpg上的图片,这一切都很好

问题是世界也可以通过下面两个URL直接访问同一个资源,我不希望这种情况发生。我只希望images.mydomain.com/image.jpg为world工作,而不是下面两个

images.mydomain.com.s3.amazonaws.com/image.jpg s3.amazonaws.com/images.mydomain.com/image.jpg

我如何做到这一点?请帮忙。

您可以通过创建源访问权限来限制对Amazon S3内容的访问 身份,这是一个特殊的CloudFront用户。您可以更改AmazonS3 授予源访问标识访问权限的权限 您的对象,并从其他所有人删除权限。当你的 用户使用CloudFrontURL访问AmazonS3对象 CloudFront origin access identity可获取用户计算机上的对象 利益如果您的用户尝试使用Amazon S3 URL访问对象, 他们被拒绝进入。源访问标识具有访问的权限 访问AmazonS3存储桶中的对象,但用户不访问


我完全按照你解释的做了,事实上我遵循了你引用的相同资源。其他两个URL仍在工作。我是否需要等待一定的时间才能发生这种情况。下面是我对s3 bucket的策略:`{“Version”:“2008-10-17”,“Id”:“PolicyForCloudFrontPrivateContent”,“Statement”:[{“Sid”:“1”,“Effect”:“Allow”,“Principal”:{“AWS”:“arn:AWS:iam::cloudfront:user/cloudfront原始访问标识**********”},“Action”:“s3:GetObject”,“Resource”:“arn:aws:s3:::images.mydomain.com/*”}]}`另外,当我在我的DNS主机上创建CNAME记录时,我应该使用cloudfront域名(xyz.cloudfront.net)还是s3路径(images.mydomain.com.s3.amazonaws.com)?哪个是正确的?我为我的s3 bucket创建的新策略仍然不起作用:`{“Id”:“Policy1419249708936”,“Statement”:[{“Sid”:“Stmt**********”,“Action”:“s3:*”,“Effect”:“Deny”,“Resource”:“arn:aws:s3:::images.mydomain.com/*”,“Principal”:{“aws:[”]}},{“Sid:“Stmt**********”,“Action”:“s3:GetObject”,“Effect:“Allow”,“Resource”:“arn:aws:s3:::::images.mydomain.com/,“Principal”:{“AWS”:[“arn:AWS:iam::cloudfront:user/cloudfront源访问标识**************”]}}`在删除所有bucket、IAM用户和cloudfront发行版后,我在努力实现上述目标的同时创建了一个新bucket,然后创建了一个cloudfront发行版来使用新bucket,一切都很好。感谢您的帮助@E.J。Brenan@user3708270那是什么问题?我也有同样的问题,只是删除所有存储桶后是否工作?