コンテナー、BLOB、メタデータの名前付けと参照

このトピックでは、コンテナー、BLOB、メタデータ、およびスナップショットの名前付けと参照について説明します。 1 つのストレージ アカウントは、0 個以上のコンテナーを格納できます。 コンテナーは、プロパティ、メタデータ、および 0 個以上の BLOB を格納します。 BLOB は、バイナリ データ、プロパティ、およびメタデータで構成される単一のエンティティです。

リソース名

コンテナーまたは BLOB を参照する URI は一意であることが必要です。 すべてのアカウント名は一意なので、2 つのアカウントが同名のコンテナーを持つことができます。 ただし、ストレージ アカウント内では、すべてのコンテナー名は一意である必要があります。 また、コンテナー内のすべての BLOB 名は一意である必要があります。

コンテナーまたは BLOB を名前付け規則に違反する名前で作成しようとすると、要求はステータス コード 400 (Bad Request) で失敗します。

重要

BLOB 名とコンテナー名は、URL 内の BLOB サービスに渡されます。 一部の文字は、URL に表示するために UTF-8 (推奨) または MBCS でパーセント エンコードする必要があります。 このエンコードは、Azure Storage クライアントライブラリを使用するときに自動的に実行されます。 ただし、エンコードしても URL パスでは無効な文字もあります。 BLOB 名またはコンテナー名でこれらの文字を使用することはできません。 \uE000 のようなコード ポイントは NTFS ファイル名では有効ですが、無効な Unicode 文字であるため、使用することはできません。 また、制御文字 (0x00 ~ 0x1F、\u0081 など) など、一部の ASCII 文字または Unicode 文字も使用できません。 HTTP/1.1 で Unicode 文字列を管理する規則については、 rfc 2616 のセクション 2.2: 基本規則rfc 3987を参照してください。

コンテナー名

コンテナー名は有効な DNS 名で、次の名前規則に準拠している必要があります。

  • コンテナー名の先頭または末尾には文字または数字を使用する必要があります。また、文字、数字、ダッシュ (-) 文字のみを含めることができます。

  • すべてのダッシュ (-) 文字は、その直前または直後に文字または数字が使用されている必要があります。連続するダッシュ文字は、コンテナー名では使用できません。

  • コンテナー名の文字はすべて小文字である必要があります。

  • コンテナー名の長さは、3 ~ 63 文字にする必要があります。

BLOB 名

BLOB 名は、次の名前付け規則に従う必要があります。

  • BLOB 名には、任意の文字の組み合わせを含めることができます。

  • Blob 名は、Azure Storage の blob について、少なくとも1文字で、長さが1024文字以下でなければなりません。

    Azure Storage emulator は、最大256文字の blob 名をサポートしています。 詳細については、「 開発とテストのための Azure ストレージエミュレーターの使用」を参照してください。

  • BLOB 名では大文字と小文字が区別されます。

  • URL の予約文字は適切にエスケープしてください。

  • BLOB 名を構成するパスのセグメントの数が 254 個を超えないようにしてください。 パス セグメントは、仮想ディレクトリの名前に対応する、連続するいくつかの区切り記号 (スラッシュ '/' など) で囲まれた文字列です。

注意

ドット (.)、スラッシュ (/)、またはこの 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>

関連項目