Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.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 s3 可以通过S3RESTAPI访问的有效S3密钥名称是什么?_Amazon S3 - Fatal编程技术网

Amazon s3 可以通过S3RESTAPI访问的有效S3密钥名称是什么?

Amazon s3 可以通过S3RESTAPI访问的有效S3密钥名称是什么?,amazon-s3,Amazon S3,根据AWS文件,我了解到: S3键名称可以是任何小于1024个字符的UNICODE名称 当使用GET OBJ时,我需要对密钥名称进行URL编码以访问它 然而,这些规则似乎过于宽松 例如,如果我创建了一个名为“../../d”的键,当我尝试使用GET OBJECT API访问它时,会发生400错误。有趣的是,我在访问“../d”时没有问题 是否有文件规定哪些是合法的,哪些不是合法的?亚马逊提供的唯一限制是(见其网站): 存储桶或对象名称中允许哪些字符? 密钥是一个Unicode字符序列,其UT

根据AWS文件,我了解到:

  • S3键名称可以是任何小于1024个字符的UNICODE名称
  • 当使用GET OBJ时,我需要对密钥名称进行URL编码以访问它
然而,这些规则似乎过于宽松

例如,如果我创建了一个名为“../../d”的键,当我尝试使用GET OBJECT API访问它时,会发生400错误。有趣的是,我在访问“../d”时没有问题


是否有文件规定哪些是合法的,哪些不是合法的?

亚马逊提供的唯一限制是(见其网站):

存储桶或对象名称中允许哪些字符?
密钥是一个Unicode字符序列,其UTF-8编码长度最多为1024字节

其他限制适用于Bucket(如常见问题解答的Bucket命名规则部分所示):

在除美国标准区域外的所有区域中,bucket名称必须符合 遵守规则。这些将产生符合DNS的bucket名称

  • 存储桶名称的长度必须至少为3个字符,且不超过63个字符
  • Bucket name必须是一系列由一个或多个标签组成的,这些标签之间用句点(.)分隔,其中每个标签:
    • 必须以小写字母或数字开头
    • 必须以小写字母或数字结尾
    • 可以包含小写字母、数字和破折号
  • Bucket名称不得格式化为IP地址(例如192.168.5.4)
较宽松的限制适用于美国标准地区。有关更多信息,请参阅常见问题解答 信息和一些例子。希望有帮助

根据:

尽管可以在对象密钥名称中使用任何UTF-8字符,但以下密钥命名最佳实践有助于确保与其他应用程序的最大兼容性。每个应用程序可能会以不同的方式解析特殊字符。以下准则可帮助您最大限度地遵守DNS、web安全字符、XML解析器和其他API

请在下面找到

中的对象键命名准则
安全字符 以下字符集通常可以安全地用于密钥名:

  • 字母数字字符:0-9 a-z a-z
  • 特殊字符:!-\u173'()

请注意分隔符(“/”)

以下是有效对象键名称的示例:

  • 4my组织

  • my.great_photos-2014/jan/myvacation.jpg

  • 视频/2014/生日/视频1.wmv

请注意,AmazonS3数据模型是一个平面结构:创建一个bucket,bucket存储对象。没有子bucket或子文件夹的层次结构;但是,您可以像AmazonS3控制台那样使用键名前缀和分隔符来推断逻辑层次结构

e、 g如果您使用Private/taxdocument.pdf作为密钥,它将创建包含taxdocument.pdf的私有文件夹

AmazonS3支持bucket和对象,AmazonS3中没有层次结构。但是,对象键名称中的前缀和分隔符使AmazonS3控制台和AWS SDK能够推断层次结构并引入文件夹的概念


可能需要特殊处理的字符 键名中的以下字符可能需要额外的代码处理,并且可能需要URL编码或作为十六进制引用。其中一些是不可打印的字符,您的浏览器可能无法处理它们,这也需要特殊处理:

  • 符号(&)
  • “At”符号(“@”)
  • 冒号(“:”)
  • 逗号(“,”)
  • 美元($)
  • 等于(“=”)
  • 加号(“+”)
  • 问号(“?”)
  • ASCII字符范围为00–1F十六进制(0–31十进制)和7F(127十进制)
  • 分号(“;”)
  • 空间–某些用途(尤其是多个空间)可能会丢失重要的空间序列

要避免的字符 由于对所有应用程序的一致性进行了重要的特殊处理,因此应避免在密钥名称中使用以下字符

  • 反斜杠(“”)
  • 插入符号(“^”)
  • 庄重的口音/背勾(“`”)
  • “大于”符号(“>”)

  • “小于”symbol(“我担心对对象(键)名称的未记录限制。亚马逊声称任何unicode都有效,但“../../word”显然无效。我想知道还有什么不受支持……答案似乎是“不,没有文档”“。我建议您在AWS论坛上提问。另一方面,这里有一个类似的问题(和答案:):@Downvoter:如果您能得到反馈,说明您认为答案没有解决问题的原因,那就太好了。或者更好的是,对答案进行编辑。
    [
    会让你感到悲伤(因为我花了2个小时进行故障排除)。下面是如何对这些讨厌的字符进行编码。我有一个场景,我将接收密钥作为API的参数下载该文件。我想知道我的API是否能够以某种方式接收密钥(abc/def/filename.png)作为路径参数