Azure Blob 容器名称可以有多长?
How long can an Azure Blob Container Name be?
我读到 azure blob 存储容器名称的长度不得超过 63 个字符(请参阅 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/naming-and-referencing-containers--blobs--and-metadata),但在阅读本文之前,我正在测试比这更长的容器名称,因此尝试了更长的时间:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
CloudBlockBlob blockBlob = container.GetBlockBlobReference(@"blob.txt");
这似乎工作正常(注意大写字母,据说也是不允许的)。我还使用 Microsoft Azure 存储资源管理器 (v0.8.9) 打开使用 C# 创建的文件夹和文件,并在我的 blob 存储中创建更多长文件夹名称(大小写混合)。
在现实生活中,我正在考虑拥有最多约 100 个字符的容器(复制一个 Windows 文件结构,其中包含五个级别的文件夹,子文件夹名称最多 20 个字符。如有必要,我可以强制这些小写。我读过的大部分内容似乎都表明 blob 存储比文件存储更好,除非处理遗留系统或需要 SMB。基于这个推理,blob 存储听起来是更好的选择,并且在测试时一切似乎都运行良好。但是,Microsoft 会不会突然强加小写字母和 63 个字符的限制?还有什么我想念的吗?
所以容器名称的最大长度可以是63个字符。您在代码中没有收到任何错误的原因是因为此限制是在服务器端强制执行的。当您使用以下代码创建 CloudBlobContainer
的实例时:
CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
这是在客户端发生的。如果您尝试对此 container
对象执行任何服务器端操作(例如创建该容器),您将收到错误消息,因为您违反了 63 个字符的限制。
您可以将容器视为 blob 存储帐户中的顶级文件夹。打个比方,如果你认为 C:\
在你的计算机上作为存储帐户,那么容器可能是 windows
。现在每个容器都可以有零个或多个 blob,并且为了创建层次结构的错觉,您可以将 blob 命名为 cursors\aero_arrow.cur
。命名 blob 时,您可以拥有超过 63 个字符。但是,由于每个 blob 都可以通过 URL (https://accountname.blob.core.windows.net/containername/blobname
) 访问,因此最大长度受 URL 中的最大字符限制我认为是 1024 个字符。
我读到 azure blob 存储容器名称的长度不得超过 63 个字符(请参阅 https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/naming-and-referencing-containers--blobs--and-metadata),但在阅读本文之前,我正在测试比这更长的容器名称,因此尝试了更长的时间:
CloudStorageAccount storageAccount = CloudStorageAccount.Parse("YourKey");
CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient();
CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
CloudBlockBlob blockBlob = container.GetBlockBlobReference(@"blob.txt");
这似乎工作正常(注意大写字母,据说也是不允许的)。我还使用 Microsoft Azure 存储资源管理器 (v0.8.9) 打开使用 C# 创建的文件夹和文件,并在我的 blob 存储中创建更多长文件夹名称(大小写混合)。
在现实生活中,我正在考虑拥有最多约 100 个字符的容器(复制一个 Windows 文件结构,其中包含五个级别的文件夹,子文件夹名称最多 20 个字符。如有必要,我可以强制这些小写。我读过的大部分内容似乎都表明 blob 存储比文件存储更好,除非处理遗留系统或需要 SMB。基于这个推理,blob 存储听起来是更好的选择,并且在测试时一切似乎都运行良好。但是,Microsoft 会不会突然强加小写字母和 63 个字符的限制?还有什么我想念的吗?
所以容器名称的最大长度可以是63个字符。您在代码中没有收到任何错误的原因是因为此限制是在服务器端强制执行的。当您使用以下代码创建 CloudBlobContainer
的实例时:
CloudBlobContainer container = blobClient.GetContainerReference(@"mystorage\A2345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890\AA345678901234567890B234567890C2345678901234567890D234567890E234567890F23456789G234567890");
这是在客户端发生的。如果您尝试对此 container
对象执行任何服务器端操作(例如创建该容器),您将收到错误消息,因为您违反了 63 个字符的限制。
您可以将容器视为 blob 存储帐户中的顶级文件夹。打个比方,如果你认为 C:\
在你的计算机上作为存储帐户,那么容器可能是 windows
。现在每个容器都可以有零个或多个 blob,并且为了创建层次结构的错觉,您可以将 blob 命名为 cursors\aero_arrow.cur
。命名 blob 时,您可以拥有超过 63 个字符。但是,由于每个 blob 都可以通过 URL (https://accountname.blob.core.windows.net/containername/blobname
) 访问,因此最大长度受 URL 中的最大字符限制我认为是 1024 个字符。