共有、ディレクトリ、ファイル、メタデータの名前付けと参照
1 つのストレージ アカウントには、0 個以上の Azure File 共有を含めることができます。 共有には、プロパティ、メタデータ、および 0 個以上のファイルまたはディレクトリが格納されます。 ディレクトリには、プロパティおよび 0 個以上のファイルまたはディレクトリが格納されます。 ファイルは、バイナリ データ、プロパティ、およびメタデータで構成される単一のエンティティです。
リソース名
共有、ディレクトリ、またはファイルを参照する URI は一意であることが必要です。 ストレージ アカウント内では、すべての共有名は一意である必要があります。 共有またはディレクトリ内のすべてのファイルの名前もその共有またはディレクトリ内で一意である必要があります。
共有、ディレクトリ、またはファイルを名前付け規則に違反する名前で作成しようとすると、要求はステータス コード 400 (Bad Request) で失敗します。
共有名
コンテナーと共有に対する同じような名前付け規則を BLOB サービスと File サービスで共通化できるように、File サービスの共有名の規則は SMB プロトコルで規定されている SMB 共有名の規則よりも制約が厳しくなっています。 共有の名前付けの制約は、次のとおりです。
- 共有名は有効な DNS 名にする必要があります。
- 共有名は、文字または数字で始まり、文字、数字、またはダッシュ (-) 文字だけを使用できます。
- すべてのダッシュ文字は、その直前および直後に文字または数字が使用されている必要があります。連続するダッシュ文字は、共有名では使用できません。
- 共有名のすべての文字は、小文字にする必要があります。
- 共有名の長さは 3 ~ 63 文字にする必要があります。
次の表は、Azure Filesと Azure Blob Storage の名前付け制限を比較したものです。
コンテナー、BLOB、メタデータの名前付けと参照 | SMB 共有名の制限 |
---|---|
• コンテナー名は有効な DNS 名である必要があります。 • コンテナー名は、文字または数字で始まる必要があり、文字、数字、ダッシュ (-) 文字のみを含めることができます。 • すべてのダッシュ (-) 文字の直前に文字または数字を付ける必要があります。連続するダッシュは、コンテナー名では使用できません。 • コンテナー名のすべての文字は小文字にする必要があります。 • コンテナー名の長さは 3 ~ 63 文字にする必要があります。 |
• 共有名の長さは 80 文字以下にする必要があります。 • 共有名に次の文字が無効です。 \ / [ ] : ¦ < > + = ; , * ? " • 0x00から0x1Fまでの範囲の制御文字は、共有名では無効です。 • その他の Unicode 文字はすべて有効です。 • 名前は大文字と小文字が区別されず、大文字と小文字は区別されません。 |
ディレクトリとファイルの名前
Azure Filesでは、ディレクトリ名とファイル名に次の名前付け規則が適用されます。
- ディレクトリ名とファイル名では、大文字と小文字が区別されます。
- ディレクトリとファイルのコンポーネント名は 255 文字以下で指定する必要があります。
- ディレクトリ名をスラッシュ文字 (/) で終えることはできません。 使用した場合、自動的に削除されます。
- ファイル名は、スラッシュ (/) で終わることができません。
- URL の予約文字は適切にエスケープしてください。
- 次の文字は使用できません。
" \ / : | < > * ?
- 無効な URL パス文字は使用できません。 NTFS ファイル名で有効な
\uE000
などのコード ポイントは、有効な Unicode 文字ではありません。 また、制御文字 (0x00
~0x1F
、\u0081
など) など、一部の ASCII 文字または Unicode 文字も使用できません。 HTTP/1.1 の Unicode 文字列を管理する規則については、 RFC 2616、セクション 2.2: 基本規則 および RFC 3987 を参照してください。 - 次のファイル名は使用できません: LPT1、LPT2、LPT3、LPT4、LPT5、LPT6、LPT7、LPT8、LPT9、COM1、COM2、COM4、COM5、COM6、COM7、COM8、COM9、PRN、AUX、NUL、CON、CLOCK$、ドット文字 (.)、および 2 つのドット文字 (..)。
- バージョン 2021-12-02 以降では、ディレクトリ名とファイル名は、すべての操作で U+FFFE 文字と U+FFFF 文字をサポートします。 これらの文字は、SMB プロトコルを介してサポートされます。 リスト ディレクトリとファイルとリスト ハンドルの操作には、それぞれのドキュメントで説明されているように、これらの文字に対して特別な処理が必要です。
次の表は、Azure Filesと Azure Blob Storage の名前付け制限を比較したものです。
コンテナー、BLOB、メタデータの名前付けと参照 | SMB プロトコル名の制限 |
---|---|
• BLOB 名は 1 文字以上でなければならず、1,024 文字以下にすることはできません。 • BLOB 名では大文字と小文字が区別されます。 • 予約 URL 文字は適切にエスケープする必要があります。 • BLOB 名は、スラッシュ (/) などの仮想ディレクトリ区切り記号で終わる場合があります • 無効な URL パス文字は使用できません。\uE000 のようなコード ポイントは NTFS ファイル名で有効ですが、有効な Unicode 文字ではありません。 また、制御文字 (0x00 ~ 0x1F、\u0081 など) など、一部の 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# 識別子の名前付け規則に従う必要があります。
メタデータ名の作成時に指定された大文字と小文字の違いは維持されますが、設定時または読み取り時には大文字と小文字は区別されません。 リソースに対して同じ名前の複数のメタデータ ヘッダーが送信された場合、Azure File サービスはステータス コード 400 (Bad Request) を返します。
リソース 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