コンテナー、BLOB、メタデータの名前付けと参照
このトピックでは、コンテナー、BLOB、メタデータ、およびスナップショットの名前付けと参照について説明します。 1 つのストレージ アカウントは、0 個以上のコンテナーを格納できます。 コンテナーは、プロパティ、メタデータ、および 0 個以上の BLOB を格納します。 アカウントに階層型名前空間がある場合、コンテナーには 0 個以上のディレクトリを含め、それらのディレクトリには 0 個以上の BLOB を含めることもできます。 BLOB は、バイナリ データ、プロパティ、およびメタデータで構成される単一のエンティティです。
リソース名
コンテナーまたは BLOB を参照する URI は一意であることが必要です。 すべてのアカウント名は一意なので、2 つのアカウントが同名のコンテナーを持つことができます。 ただし、ストレージ アカウント内では、すべてのコンテナー名は一意である必要があります。 また、コンテナー内のすべての BLOB 名は一意である必要があります。
コンテナーまたは BLOB を名前付け規則に違反する名前で作成しようとすると、要求はステータス コード 400 (Bad Request) で失敗します。
BLOB 名とコンテナー名は、URL 内の BLOB サービスに渡されます。 一部の文字は、URL に表示するために UTF-8 (推奨) または MBCS でパーセント エンコードする必要があります。 このエンコードは、Azure Storage クライアント ライブラリを使用すると自動的に行われます。 ただし、エンコードしても URL パスでは無効な文字もあります。 これらの文字が BLOB 名またはコンテナー名に含まれている場合、要求が失敗する可能性があります。 これらの文字の一覧については、「 コンテナー名または BLOB 名での使用に推奨されない Unicode 文字」を参照してください。
\uE000 のようなコード ポイントは NTFS ファイル名では有効ですが、無効な Unicode 文字であるため、使用することはできません。 また、制御文字 (0x00 ~ 0x1F、\u0081 など) など、一部の ASCII 文字または Unicode 文字も使用できません。
HTTP/1.1 の Unicode 文字列を管理するその他の規則については、 RFC 2616、セクション 2.2: 基本規則 および RFC 3987 を参照してください。
コンテナー名
コンテナー名は有効な DNS 名で、次の名前規則に準拠している必要があります。
コンテナー名は、文字または数字で始まるか終わる必要があり、文字、数字、ダッシュ (-) 文字のみを含めることができます。
すべてのダッシュ (-) 文字は、その直前または直後に文字または数字が使用されている必要があります。連続するダッシュ文字は、コンテナー名では使用できません。
コンテナー名の文字はすべて小文字である必要があります。
コンテナー名の長さは、3 ~ 63 文字にする必要があります。
ディレクトリ名
アカウントに階層型名前空間がある場合、ディレクトリ名は次の名前付け規則に準拠している必要があります。
ディレクトリ名には、任意の組み合わせの文字を含めることができます。
ディレクトリ名の長さは 1 文字以上にする必要があり、1,024 文字を超えることはできません。
ディレクトリ名では大文字と小文字が区別されます。
URL の予約文字は適切にエスケープしてください。
Note
ドット (.)、スラッシュ (/)、または 2 つのシーケンスまたは組み合わせで終わるディレクトリ名は避けてください。 パス セグメントはドット (.) で終わる必要はありません。
BLOB 名
BLOB 名は、次の名前付け規則に準拠している必要があります。 これらのルールは、階層型名前空間を持つアカウント内の BLOB にも適用されます。
BLOB 名には、任意の文字の組み合わせを含めることができます。
Azure Storage の BLOB について、BLOB 名は 1 ~ 1,024 文字で指定する必要があります。
Azure Storage エミュレーターでは、最大 256 文字の BLOB 名がサポートされています。 詳細については、「 開発とテストに Azure ストレージ エミュレーターを使用する」を参照してください。
BLOB 名では大文字と小文字が区別されます。
URL の予約文字は適切にエスケープしてください。
アカウントに階層型名前空間がない場合、BLOB 名を構成するパス セグメントの数は 254 を超えることはできません。 パス セグメントは、仮想ディレクトリの名前に対応する、連続するいくつかの区切り記号 (スラッシュ '/' など) で囲まれた文字列です。
Note
ドット (.)、スラッシュ (/)、またはこの 2 つの文字のシーケンスあるいは組み合わせで終わる BLOB 名は使用しないでください。 パス セグメントはドット (.) で終わる必要はありません。
既定では、BLOB サービスは階層構造ではなくフラット ストレージ スキームに基づいています。 BLOB 名に文字または文字列の区切り記号を指定することで仮想階層を作成できます。 たとえば、以下に示す名前はすべて有効で一意な BLOB 名です。 文字列は、BLOB 名としても、また同じコンテナー内の仮想ディレクトリ名としても有効です。
/a
/a.txt
/a/b
/a/b.txt
BLOB の列挙にも区切り文字を利用できます。
メタデータ名
コンテナー リソースまたは BLOB リソースのメタデータは、リソースに関連付けられた名前と値のペアとして保存されます。 メタデータ名は 、C# 識別子の名前付け規則に従う必要があります。
メタデータ名の作成時に指定された大文字と小文字の違いは維持されますが、設定時または読み取り時には大文字と小文字は区別されません。 リソースに対して同じ名前の複数のメタデータ ヘッダーが送信された場合、BLOB サービスはステータス コード 400 (Bad Request) を返します。
リソースの URI の構文
各リソースには、リソースそれ自体を参照する、対応するベース URI があります。
ストレージ アカウントの場合、ベース URI にはアカウントの名前だけが含まれます。
https://myaccount.blob.core.windows.net
コンテナーの場合、キュー操作のベース URI にはアカウントの名前とコンテナーの名前が含まれます。
https://myaccount.blob.core.windows.net/mycontainer
BLOB の場合、ベース URI にはアカウントの名前、コンテナーの名前、および BLOB の名前が含まれます。
https://myaccount.blob.core.windows.net/mycontainer/myblob
ストレージ アカウントには既定のコンテナーであるルート コンテナーが存在する場合がありますが、ルート コンテナーは URI から省略できます。 ルート コンテナー内の BLOB は、コンテナー名なしで参照できますが、明示的にルート コンテナーの名前 ($root
) で参照することもできます。 詳細については、「 ルート コンテナーの操作 」を参照してください。 次の 2 つの URI はいずれもルート コンテナー内の BLOB を参照しています。
https://myaccount.blob.core.windows.net/myblob
https://myaccount.blob.core.windows.net/$root/myblob
BLOB のスナップショット
スナップショットは、スナップショットが作成された時点で格納されていた BLOB の読み取り専用バージョンです。 スナップショットを使用して、BLOB のバックアップまたはチェックポイントを作成できます。 スナップショット BLOB 名は、ベース BLOB の URI と、スナップショットが作成された時点の日付/時刻値から構成されます。
たとえば、BLOB の URI を次のように想定します。
https://myaccount.blob.core.windows.net/mycontainer/myblob
この場合、BLOB のスナップショットの URI は次のようになります。
https://myaccount.blob.core.windows.net/mycontainer/myblob?snapshot=<DateTime>
コンテナー名または BLOB 名で使用する Unicode 文字は推奨されません
次の表に、コンテナー名または BLOB 名で使用しないことを示す Unicode 文字の一覧を示します。 これらの文字は、この一覧の他の文字と組み合わせて使用すると、UTF-8 または MCBS デコードに失敗し、BLOB サービスへの要求が失敗する可能性があります。
Unicode 文字 |
---|
U+0080 |
U+0082 |
U+0083 |
U+0084 |
U+0085 |
U+0086 |
U+0087 |
U+0088 |
U+0089 |
U+008A |
U+008B |
U+008C |
U+008E |
U+0091 |
U+0092 |
U+0093 |
U+0094 |
U+0095 |
U+0096 |
U+0097 |
U+0098 |
U+0099 |
U+009A |
U+009B |
U+009C |
U+009E |
U+009F |
U +FDD1 |
U +FDD2 |
U +FDD3 |
U+FDD4 |
U +FDD5 |
U +FDD6 |
U+FDD7 |
U+FDD8 |
U +FDD9 |
U + FDDA |
U +FDDB |
U +FDDC |
U + FDDE |
U +FDDF |
U + FDE0 |
U + FDE1 |
U + FDE2 |
U + FDE3 |
U + FDE4 |
U + FDE5 |
U + FDE6 |
U + FDE7 |
U + FDE8 |
U + FDE9 |
U+FDEA |
U + FDEB |
U + FDEC |
U + FDED |
U + FDEE |
U + FDEF |
U + FFF0 |
U + FFF1 |
U + FFF2 |
U + FFF3 |
U + FFF4 |
U + FFF5 |
U + FFF6 |
U + FFF7 |
U + FFF8 |
U + FFF9 |
U+FFFA |
U+FFFB |
U+FFFC |
U+FFFD |
U + FFFE |
U+FFFF |
U+1FFFE |
U+1FFFF |
U+2FFFE |
U+2FFFF |
U+3FFFE |
U+3FFFF |
U+5FFFE |
U+5FFFF |
U+6FFFE |
U+6FFFF |
U+7FFFE |
U+7FFFF |
U+9FFFE |
U+9FFFF |
U+AFFFE |
U+ AFFFF |
U+BFFFE |
U+BFFFF |
U+ DFFFE |
U+DFFFF |
U+EFFFE |
U+EFFFF |
U+FFFFE |
U + FFFFF |