共有、ディレクトリ、ファイル、およびメタデータの名前付けと参照
ストレージ アカウントには、0 個以上の Azure ファイル共有を含めることができます。 共有には、プロパティ、メタデータ、および 0 個以上のファイルまたはディレクトリが含まれます。 ディレクトリには、プロパティと 0 個以上のファイルまたはディレクトリが含まれます。 ファイルは、バイナリ データ、プロパティ、およびメタデータで構成される任意の 1 つのエンティティです。
リソース名
共有、ディレクトリ、またはファイルを参照する URI は一意である必要があります。 特定のストレージ アカウント内では、すべての共有に一意の名前が必要です。 特定の共有またはディレクトリ内のすべてのファイルも、その共有またはディレクトリ内で一意の名前を持つ必要があります。
名前付け規則に違反する名前を持つ共有、ディレクトリ、またはファイルを作成しようとすると、要求は状態コード 400 (無効な要求) で失敗します。
共有名
ファイル サービス共有名の規則は、SMB 共有名の SMB プロトコルで規定されている規則よりも制限が厳しく、BLOB サービスとファイル サービスがコンテナーと共有に対して同様の名前付け規則を共有できるようにします。 共有の名前付け制限は次のとおりです。
- 共有名は有効な DNS 名である必要があります。
- 共有名は文字または数字で始まる必要があり、文字、数字、ハイフン/マイナス (-) 文字のみを含めることができます。
- すべてのハイフン/マイナス (-) 文字の直前に文字または数字を付ける必要があります。連続するハイフンは共有名では使用できません。
- 共有名内のすべての文字は小文字にする必要があります。
- 共有名の長さは 3 ~ 63 文字にする必要があります。
次の表は、Azure Files と Azure Blob Storage の名前付け制限を比較したものです。
コンテナー、BLOB、およびメタデータ の名前付けと参照の | SMB 共有名の制限 |
---|---|
• コンテナー名は有効な DNS 名である必要があります。 • コンテナー名は、文字または数字で始まる必要があり、文字、数字、ハイフン/マイナス (-) 文字のみを含めることができます。 • すべてのハイフン/マイナス (-) 文字の直前に文字または数字を付ける必要があります。連続するハイフンはコンテナー名では使用できません。 • コンテナー名のすべての文字は小文字にする必要があります。 • コンテナー名の長さは 3 ~ 63 文字にする必要があります。 |
• 共有名の長さは 80 文字以下にする必要があります。 • 共有名に次の文字が無効です: \ / [ ] : ¦ < > + = ; , * ? " • 0x00から0x1Fまでの範囲の制御文字は、共有名では無効です。 • その他の Unicode 文字はすべて有効です。 • 名前は大文字と小文字が区別されず、大文字と小文字が区別されません。 |
ディレクトリ名とファイル名
Azure Files では、ディレクトリ名とファイル名に次の名前付け規則が適用されます。
- ディレクトリ名とファイル名では、大文字と小文字が区別されず、大文字と小文字が区別されません。
- ディレクトリおよびファイル コンポーネント名の長さは 255 文字以下にする必要があります。
- ディレクトリ名をスラッシュ (/) で終えることはできません。 指定すると、自動的に削除されます。
- ファイル名の末尾をスラッシュ (/) にすることはできません。
- 予約 URL 文字は適切にエスケープする必要があります。
- 次の文字は使用できません:
" \ / : | < > * ?
- 無効な URL パス文字は使用できません。
\uE000
などのコード ポイントは NTFS ファイル名で有効ですが、有効な Unicode 文字ではありません。 また、制御文字 (0x00
から0x1F
) など、一部の ASCII 文字または Unicode 文字も使用できません。 HTTP/1.1 の Unicode 文字列を管理する規則については、RFC 2616 の 、セクション 2.2: 基本的な規則 および RFC 3987 を参照してください。 - 無効な Unicode 文字 (無効なサロゲート ペアと呼ばれます) はサポートされていません。
- 次のファイル名は使用できません:LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9、COM1、COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9、PRN、AUX、NUL、CON、CLOCK$、ドット文字 (.)、ドット文字 (..)。
- バージョン 2021-12-02 以降では、ディレクトリ名とファイル名は、すべての操作で U+FFFE 文字と U+FFFF 文字をサポートします。 これらの文字は、SMB および REST プロトコルでもサポートされます。 リスト ディレクトリとファイルの と リスト ハンドル 操作には、それぞれのドキュメントで説明されているように、これらの文字に対する特別な処理が必要です。
SMB プロトコルが有効になっているファイル共有の既定では、ディレクトリの末尾にあるドット (.) 文字と要求 URL 内のファイル名は無視されるか、省略されます。
- たとえば、
file1...
という名前のファイルが作成されている場合、末尾のドットは無視され、file1
という名前のファイルが作成されます。 パス内のディレクトリにも同じことが当てはまります。 ファイル作成要求にパス\Dir1\Dir2…\File1
が含まれている場合、ファイルは\Dir1\Dir2\File1
に作成されます。 - ただし、バージョン 2022-11-02以降では、ヘッダー
x-ms-allow-trailing-dot
を URL 要求でtrue
に設定することで、既定の動作をオーバーライドできます。 - たとえば、
file1...
という名前のファイルを作成し、末尾のドットを含める場合は、x-ms-allow-trailing-dot
を要求ヘッダーに含め、true
に設定する必要があります。 ディレクトリ名の作成にも同じことが当てはまります。 - ファイル コピー要求の場合、ソース ファイル名に末尾のドットを含める場合は、
x-ms-source-allow-trailing-dot
ヘッダーをtrue
に設定する必要があります。 詳細については、個々の REST API で使用可能なヘッダー オプションを確認してください。
NFS プロトコルが有効になっているファイル共有の既定では、ディレクトリの末尾にあるドット (.) 文字と要求 URL 内のファイル名は無視 。
次の表は、Azure Files と Azure Blob Storage の名前付け制限を比較したものです。
コンテナー、BLOB、およびメタデータ の名前付けと参照の | SMB プロトコル名の制限 |
---|---|
• BLOB 名の長さは 1 文字以上にする必要があり、長さは 1,024 文字以下にする必要があります。 • BLOB 名では大文字と小文字が区別されます。 • 予約 URL 文字は適切にエスケープする必要があります。 • BLOB 名は、スラッシュ (/) などの仮想ディレクトリ区切り記号で終わる場合があります • 無効な URL パス文字が許可されていません: \uE000などのコード ポイントは、NTFS ファイル名で有効ですが、有効な Unicode 文字ではありません。 また、制御文字 (0x1Fに0x00) などの一部の ASCII 文字または Unicode 文字も使用できません。 HTTP/1.1 の Unicode 文字列を管理する規則については、RFC 2616 の 、セクション 2.2: 基本的な規則 および RFC 3987 を参照してください。 |
• パス名の長さは 32,760 文字以下です。 • 各パス名コンポーネント (ファイル/ディレクトリ) の長さは 255 文字以下です。 • パス名は、1 つ以上のパス名コンポーネントで構成され、(\) の下位スラッシュ文字で区切られます。 • パス名は大文字と小文字が区別されず、大文字と小文字が区別されません (大文字と小文字のみが異なる 2 つの名前は許可されません)。 • ファイル パスと同じディレクトリ パスを含めることはできません。 • コンポーネント名には、次の文字が無効です: \ / : ¦ < > * ? " • 0x00から0x1Fまでの範囲の制御文字は、共有名では無効です。 |
パス名
パス名は、スラッシュ (/) 文字で区切られた 1 つ以上のパス名コンポーネント (ディレクトリまたはファイル名) で構成されます。 最後のパス名コンポーネント以外のすべてのパス名コンポーネントは、ディレクトリを表します。 最後のパス名コンポーネントは、ディレクトリまたはファイルを表します。 次の名前付け規則が適用されます。
- パス名の長さは 2,048 文字以下です。 パス内の個々のコンポーネントの長さは最大 255 文字です。
- パス名は、スラッシュ (/) 文字で区切られた 1 つ以上のパス名コンポーネントで構成されます。
- パス内のサブディレクトリの深さは 250 を超えることはできません。
- 同じ親ディレクトリを共有するファイルとディレクトリに同じ名前を使用することはできません。 たとえば、
data
という名前のファイルとディレクトリは、同じ親パスの下に存在できません。
メタデータ名
共有またはファイル リソースのメタデータは、リソースに関連付けられている名前と値のペアとして格納されます。 メタデータ名は、C# 識別子の名前付け規則に従う必要があります。
メタデータ名は、作成された大文字と小文字を保持しますが、設定または読み取り時には大文字と小文字が区別されません。 リソースに対して同じ名前のメタデータ ヘッダーが 2 つ以上送信された場合、Azure File サービスは状態コード 400 (無効な要求) を返します。
リソース URI の構文
各リソースには、対応するベース URI があり、リソース自体を参照します。 ストレージ アカウントの場合、ベース URI にはアカウントの名前のみが含まれます。
https://myaccount.file.core.windows.net
共有の場合、ベース URI にはアカウントの名前と共有の名前が含まれます。
https://myaccount.file.core.windows.net/myshare
ディレクトリの場合、ベース URI には、アカウントの名前、共有の名前、ディレクトリのパスが含まれます。
https://myaccount.file.core.windows.net/myshare/myparentdir/mydir
ファイルの場合、ベース URI には、アカウントの名前、共有の名前、およびファイルのパスが含まれます。
https://myaccount.file.core.windows.net/myshare/myfile
https://myaccount.file.core.windows.net/myshare/mydir/myfile
https://myaccount.file.core.windows.net/myshare/myparentdir/mydir/myfile