当前位置: 首页 > 知识库问答 >
问题:

公共Amazon S3存储桶的URL

景成和
2023-03-14

我有一个亚马逊S3桶,我公开了这样的政策

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Allow Public Access to All Objects",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucket/*"
        }
    ]
}

我的水桶现在显示为http://bucket.s3-website-us-east-1.amazonaws.com/

我看到其他人把他们的水桶称为http://s3-us-east-1.amazonaws.com/bucket/

我更喜欢第二个URL,但它给出了拒绝访问。

如何更改策略以允许第二个URL?

共有1个答案

方兴旺
2023-03-14

您所指的URL结构称为RESTendpoint,而不是Web站点endpoint。

注意:由于这个答案是最初编写的,S3已经在RESTendpoint上推出了双堆栈支持,使用了新的主机名,同时保留了现有的主机名。这一点现已纳入下文提供的信息。

如果您的bucket确实位于AWS的us-east-1区域——S3文档以前称之为“美国标准”区域,但后来正式更名为“美国东部(北弗吉尼亚)区域”——则http://s3-us-east-1.amazonaws.com/bucket/不是该endpoint的正确形式,尽管看起来应该如此。该区域的正确格式为http://s3.amazonaws.com/bucket/http://s3-external-1.amazonaws.com/bucket/。ª

您使用的格式适用于所有其他S3区域,但不适用 <罢工> 美国标准 美国东部(N.弗吉尼亚州)[美国-东-1]。

S3现在还为RESTendpoint提供了双堆栈endpoint主机名,并且与原始endpoint主机名不同,这些endpoint主机名具有跨区域的一致格式,例如s3.dualstack.us-east-1.amazonaws.com。这些endpoint支持IPv4和IPv6连接和DNS解析,但在其他方面与现有RESTendpoint功能等同。

如果您的权限和配置设置为网站endpoint可以工作,那么RESTendpoint也应该可以工作。

然而这两个endpoint不提供相同的功能。

粗略地说,RESTendpoint更适合机器访问,网站endpoint更适合人工访问,因为网站endpoint提供友好的错误消息、索引文档和重定向,而RESTendpoint不提供。另一方面,REST终结点提供HTTPS和对签名URL的支持,而网站终结点不提供。

为您的应用程序选择正确的endpoint类型(REST或网站):

http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteEndpoints.html#WebsiteRestEndpointDiff

s3-external-1.amazonaws.com被称为北弗吉尼亚终结点,与全球终结点s3.amazonaws.com相反。如果使用"s3-外部-1"主机名,非官方可能会在此区域中的新对象上获得读写后一致性,因为这会将您发送到可能提供该功能的物理终结点的子集。此endpoint现在正式支持此行为,因此这可能是许多应用程序中更好的选择。以前,s3-外部-2被称为US-Standard的太平洋西北endpoint,尽管它现在是DNS中s3-外部-1的CNAME,因此s3-外部-2似乎没有任何用途,除了向后-兼容性。

 类似资料:
  • 代码: 我的文件已成功上载到我的firebase存储,但是: null

  • 存储桶用于存储用户的任意文件。 对象存储是用于存储任意文件的分布式存储服务。存储桶即bucket,用于存储对象文件。用户在存储文件之前必须先创建存储桶,云管平台以存储桶为对象存储的资源单位分配给项目使用。用户可以通过网络便捷的在对象存储中上传、下载以及分享文件。 云管平台目前支持对接并导入基于S3协议的对象存储服务MinIO、Ceph Radio以及公有云提供的对象存储服务。 使用流程: (二者任

  • 我有一个Amazon S3存储桶,所有设置都处于默认模式。当我转到我的Bucket权限选项卡并查看Public access/Everyone部分时,所有选项都为空,因此所有内容都是私有的。 现在我制作一个带有很长随机sha1-hash的文件夹,我在这个文件夹中上传一些文件和子文件夹,并将整个文件夹公开。是否可以检测(列出)此文件夹? 看起来不错。但也许还有其他方法可以检测我的公用文件夹?

  • 目前,我正在尝试将一个文件上载到AmazonS3存储桶,我对此进行了一些研究,发现如果文件足够大,类TransferManager会将文件拆分为小块,然后使用多个线程并行上载。现在在应用程序中,我们正在创建一个AmazonS3客户端实例(在应用程序开始时创建的一个bean),并使用该AmazonS3客户端为用户上传文件所需的每个文件创建TransferManager类实例,文件上传完成后(由Tra

  • 我的网站文件托管在Google Cloud Storage,每次我更新一个文件(比如。png或。xml)时,我总是要等一段时间才能看到新文件出现在我的页面上。 有没有办法覆盖单个对象的默认缓存设置(max-age=3600)?尝试用“no store”、“no cache”、“max-age=0”编辑“cache-control”元数据,但它们似乎都不起作用,仍然在响应头中获得“cache-con

  • 问题内容: 在的实现细节中,我可以阅读: 如果我有恒常的能力,而我的班级没有实现,它将如何打破束缚以及如何构造树呢? 我的意思是- 铲斗会变成一棵树,并会打断领带。然后,我将尝试使用其他实例(具有和)相同的实例来调用方法,它将具有不同的实例,因此是否有可能树被错误的节点遍历(向左而不是向右)并且找不到键? 我是否缺少某些东西,或者这是正常现象? 问题答案: 存储桶将在插入期间使用,但查找仅使用哈希