Lightsail 对象存储桶的键名称 - Amazon Lightsail

Lightsail 对象存储桶的键名称

您上传到存储桶的文件将作为对象存储在 Amazon Lightsail 对象存储服务中。对象键(或键名称)唯一标识存储桶中存储的对象。本指南介绍了键名称和键名称前缀的概念,其构成了 Lightsail 控制台中所显示的存储桶的文件夹结构。有关存储桶的更多信息,请参阅对象存储

键名称

Lightsail 对象存储服务数据模型使用扁平结构,而不是类似于您在文件系统中看到的层次结构。它不包含文件夹和子文件夹层次结构。但您可以使用键名称前缀和分隔符推断逻辑层次结构。Lightsail 控制台使用键名称前缀显示文件夹结构中的对象。

假设您的存储桶包含具有以下对象键的四个对象:

  • Development/Projects.xls

  • Finance/statement1.pdf

  • Private/taxdocument.pdf

  • to-dos.doc

Lightsail 控制台使用键名称前缀(Development/Finance/Private/)和分隔符 (/) 呈现文件夹结构。to-dos.doc 键名称没有前缀,因此其对象直接在存储桶的根级别出现。如果您浏览到 Lightsail 控制台中的 Development/ 文件夹,您会看到 Projects.xls 对象。您会在 Finance/ 文件夹中看到 statement1.pdf 对象,并且会在 Private/ 文件夹中看到 taxdocument.pdf 对象。

在 Lightsail 控制台中,您可以将键名称前缀和分隔符值作为键名称来创建零字节对象,以此方式创建文件夹。这些文件夹对象不会显示在控制台中。但是,它们的行为与任何其他对象一样。您可以使用 Amazon S3 API、AWS Command Line Interface(AWS CLI)或 AWS SDK 对其进行查看和操作。

对象键命名准则

您可以在对象键名中使用任意 UTF-8 字符。但是,在键名中使用某些字符可能导致一些应用程序和协议出现问题。以下指导原则有助于最大程度符合 DNS、Web 安全字符、XML 分析器和其他 API 的要求。

安全字符

以下字符集通常可安全地用于键名。

  • 字母数字字符

    • 0-9

    • a-z

    • A-Z

  • 特殊字符

    • 正斜杠 (/)

    • 感叹号 (!)

    • 连字符 (-)

    • 下划线 (_)

    • 句点 (.)

    • 星号 (*)

    • 单引号 (')

    • 左括号 (()

    • 右括号 ())

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

  • 4my-organization

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

  • videos/2014/birthday/video1.wmv

重要

如果对象键名称以单个句点 (.) 或两个句点 (..) 结尾,您将无法使用 Lightsail 控制台下载该对象。要下载键名称以一个或两个句点结尾的对象,您必须使用 Amazon S3 API、AWS CLI 和 AWS SDK。有关更多信息,请参阅下载存储桶对象

可能需要特殊处理的字符

键名中的以下字符可能需要另外进行代码处理,并且可能需要以十六进制形式在 URL 中编码或引用。其中部分字符是不可打印的字符,浏览器可能无法处理它们,这也需要特殊处理:

  • 表示和的符号 ("&")

  • 美元符号 ("$")

  • ASCII 字符范围 00–1F 十六进制(0–31 十进制)和 7F(127 十进制)

  • "At" 符号 ("@")

  • 等于号 ("=")

  • 分号 (";")

  • 冒号 (":")

  • 加号 ("+")

  • 空格 – 大量连续空格可能会在某些使用情形中丢失(特别是多个空格)

  • 逗号 (",")

  • 问号 ("?")

要避免的字符

避免在键名中使用以下字符,因为这些字符需要进行大量的特殊处理,才能在所有应用程序间保持一致性。

  • 反斜杠 ("\")

  • 左大括号 ("{")

  • 不可打印的 ASCII 字符(128–255 十进制字符)

  • 插入符号 ("^")

  • 右大括号 ("}")

  • 百分比字符 ("%")

  • 重音符/反勾号 ("`")

  • 右方括号 ("]")

  • 引号

  • “大于”符号 (">")

  • 左方括号 ("[")

  • 波浪字符 ("~")

  • “小于”符号 ("<")

  • “井号”字符 ("#")

  • 竖线 ("|")

XML 相关的对象键约束

正如关于行尾处理的 XML 标准所指定的那样,所有 XML 文本都被规范化,这样单个回车符(ASCII 代码 13)和回车符紧跟换行符(ASCII 代码 10)将替换为单个换行符。为了确保正确解析 XML 请求中的对象键,当将回车符和其他特殊字符插入 XML 标签时,必须使用等效的 XML 实体代码替换回车符和其他特殊字符。以下是此类特殊字符及其等效实体代码的列表:

  • ' 用作 &apos;

  • 用作 &quot;

  • & 用作 &amp;

  • < 用作 &lt;

  • < 用作 &gt;

  • \r 用作 &#13;&#x0D;

  • \n 用作 &#10;&#x0A;

以下示例说明了使用 XML 实体代码替换回车的情况。此 DeleteObjects 请求将删除带有键参数 /some/prefix/objectwith\rcarriagereturn 的对象(其中 \r 是回车)。

<Delete xmlns="http://s3.amazonaws.com/doc/2006-03-01/"> <Object> <Key>/some/prefix/objectwith&#13;carriagereturn</Key> </Object> </Delete>