コンテナー、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 の予約文字は適切にエスケープしてください。

注意

末尾がドット (.)、スラッシュ (/)、円記号 (\)、または 2 つのシーケンスまたは組み合わせで終わるディレクトリ名は使用しないでください。 パス セグメントはドット (.) で終わる必要はありません。

バックスラッシュが許可されていないスクリーンショット。

BLOB 名

BLOB 名は、次の名前付け規則に準拠している必要があります。 これらの規則は、特に明記されていない限り、階層型名前空間を持つアカウント内の BLOB にも適用されます。

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

  • Azure Storage の BLOB について、BLOB 名は 1 ~ 1,024 文字で指定する必要があります。

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

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

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

  • BLOB 名を構成するパス セグメントの数には制限があります。 パス セグメントは、ディレクトリまたは仮想ディレクトリに対応する連続する区切り文字 (スラッシュ /など) の間の文字列です。 BLOB 名には、次のパス セグメントの制限が適用されます。

    • ストレージ アカウントで階層型名前空間 が有効になっていない 場合、BLOB 名を構成するパス セグメントの数は 254 を超えることはできません。
    • ストレージ アカウントで階層型名前空間が有効になっている場合、BLOB 名を構成するパス セグメントの数は 63 を超えることはできません (アカウント名とコンテナー名のパス セグメントを含む)。

注意

ドット (.)、スラッシュ (/)、円記号 (\)、または 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 文字の一覧を示します。 これらの文字は、この一覧の他の文字と組み合わせて使用すると、UTF-8 または MBCS デコードに失敗し、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

こちらもご覧ください