次の方法で共有


ストレージ タスクの条件

ストレージ タスクには、一連の条件と操作が含まれています。 この記事では、条件の JSON 形式について説明します。 Azure portal 以外のツール (Azure PowerShell、Azure CLI など) でストレージ タスクを作成する予定の場合は、その形式を理解することが重要です。 また、この記事では条件の句を作成するのに使用できるプロパティと演算子の一覧も示します。

この記事では、条件に重点を置いて説明します。 操作の詳細については、「ストレージ タスクの操作」を参照してください。

条件の形式

条件とは、1 つまたは複数の "句" のコレクションを指します。 各句には、"プロパティ"、"値"、および "演算子" が含まれています。 ストレージ タスクが実行されると、演算子を使用してプロパティと値を比較し、ターゲット オブジェクトによって句が条件を満たされているかどうかを判断します。 句は常に演算子で始まり、その後にプロパティ、さらにが続きます。 次の図は、式の各要素の配置を示します。

演算子、プロパティ、値で構成される単純な条件の形式を示すダイアグラム。

次の句は、Microsoft Word ドキュメントに対してのみ操作が許可されます。 この句はファイル拡張子 .docx で終わるすべてのドキュメントを対象とします。 そのため、演算子は endsWith、プロパティは Name、値は .docx です。

{
   "condition": "[[[endsWith(Name, '.docx')]]"
}

条件句の演算子の前に not 演算子を適用することもできます。 not 演算子は、演算子の前に配置して句の逆の結果を与えることができる特別な演算子です。 次の句では、Microsoft Word 文書 ではない すべての BLOB に対する操作を許可します。

{
   "condition": "[[not(endsWith(Name, '*.docx'))]]"
}

演算子とプロパティの名前の全一覧については、この記事の「サポートされている演算子」と「サポートされているプロパティ」のセクションを参照してください。

1 つの条件に複数の句

カンマと文字列 and または or のどちらかで区切ることで、1 つの条件に複数の句を指定できます。 文字列 and は条件内のすべての句の条件を満たすオブジェクトを対象とする一方で、or は条件内のいずれかの句の条件を満たすオブジェクトを対象とします。 次の画像は、文字列 andor とともに 2 つの句の位置を示します。

2 つの句が指定された条件の形式を示すダイアグラム。

次の JSON は、2 つの句が指定された条件を示します。 この式では文字列 and が使用されているため、オブジェクトに対して操作が実行されるには、両方の句が true に評価される必要があります。

{
"condition": "[[and(endsWith(Name, '.docx'), equals(Tags.Value[readyForLegalHold], 'Yes'))]]"
}

条件のグループ

グループ化された句は、句の残りの部分とは別の 1 つのユニットとして動作します。 句のグループ化は、数学の方程式や論理式の一部をかっこで囲むのと似ています。 グループ内の最初の句の文字列 and または or は、グループ全体に適用されます。

次の画像は、グループ化された 2 つの句を示しています。

グループ化された 2 つの句が指定された条件の形式を示すダイアグラム。

次の条件は、ドキュメントの readyForLegalHold タグが値 Yes に設定された Microsoft Word ドキュメントに対してのみ操作が許可されます。 また、他の 2 つの条件が当てはまらない場合でも、100 バイトを超えるオブジェクトに対しては操作が実行されます。

{
"condition": "[[or(and(endsWith(Name, '*.docx'), equals(Tags.Value[readyForLegalHold], 'Yes')), greater(Content-Length, '100'))]]"
}

not 演算子をグループに適用して、句のグループの逆の結果をテストできます。 次の条件では、BLOB の タグが readyForLegalHold の値に設定されている Microsoft Word ドキュメントYesの BLOB に対してのみ操作が許可されます。 また、他の 2 つの条件が当てはまらない場合でも、100 バイトを超えるオブジェクトに対しては操作が実行されます。

{
"condition": "[[or(not(and(endsWith(Name, '*.docx'), equals(Tags.Value[readyForLegalHold], 'Yes'))), greater(Content-Length, '100'))]]"
}

Azure portal のコード ビュー

Azure portal で利用できるビジュアル エディターで、条件の JSON を生成できます。 エディターを使って条件を定義し、[コード] タブを開くことで JSON 式を取得できます。JSON 式は大きくて扱いにくく、手動で作成するのが困難になることがあるため、この方法は複雑な条件セットを作成する場合に役立ちます。 次の画像は、ビジュアル エディターの [コード] タブを示します。

ビジュアル デザイナーの [コード] タブに表示される条件の JSON のスクリーンショット。

ビジュアル エディターの詳細については、「ストレージ タスクの条件と操作を定義する」を参照してください。

条件のプレビュー

定義した条件の影響を受ける BLOB のリストを表示できます。 そうすることで、運用環境のデータに適用する前に、問題を見つけて条件を最適化できます。 プレビューではターゲット ストレージ アカウント内のオブジェクトは変更されないため、運用環境のデータに対するテストに適用しても安全です。

条件プレビューは PowerShell、Azure CLI、SDK 環境で利用できます。条件の効果をプレビューする最も簡単な方法は、Azure portal の [プレビュー条件] ウィンドウを使用することです。 このウィンドウは、条件を定義し、ストレージ タスクを割り当てる際に開くことができます。

条件の影響をプレビューするには、ターゲット サブスクリプション、ストレージ アカウント、コンテナーを指定する必要があります。 最大 5,000 個の BLOB しか表示できないため、プレフィックスを指定してリストを絞り込むこともできます。

BLOB プレフィックスにワイルドカード文字を使用することはできません。

次の図は、Azure portal でのプレビュー結果の例を示しています。

Azure portal のストレージ タスク プレビュー ウィンドウのスクリーンショット。

プレビュー結果は、条件を満たすオブジェクトと、条件を満たしていないオブジェクトを示すテーブルに表示されます。 テーブルに表示されるフィールドで並べ替えることができます。

条件がターゲット ストレージ アカウントに存在しないプロパティを参照している場合は、エラーが表示されます。 たとえば、BLOB インデックス タグは、階層型名前空間を持つアカウントでは使用できません。 条件の句が BLOB インデックス タグを参照している場合は、検証エラーが表示されます。

サポートされるプロパティ

次の表に、条件の各句の作成に使用できるプロパティを示します。 句には文字列、ブール値、数値、日付と時間のプロパティが含まれる場合があります。

日付と時刻3 数値 ボーリアン
AccessTier1 AccessTierChangeTime Content-Length (コンテンツの長さ) 削除済み
メタデータ.値 作成時刻 タグ数 IsCurrentVersion
名前 削除時間
BlobType2 最終アクセス時間
Container.Metadata.Value[名前] 更新日時
コンテナー.名前
Container.Metadata.Value[名前]
コンテナー.名前
Tags.Value[名前]
バージョンID

1 使用できる値は HotCool、または Archive です。

2 使用できる値は BlockBlobPageBlob、または AppendBlob です

3 特定の時刻またはオブジェクトから動的に取得されるメタデータ値に設定できます。 「オブジェクト メタデータから値を参照する」を参照してください。

サポートされている演算子

次の表に、プロパティの各型の値を評価するために句で使用できる演算子を示します。

日付と時刻 数値 ボーリアン
含む 等しい 等しい 等しい
等しい greaterOrEquals greaterOrEquals
endsWith レス レス
長さ lessOrEquals lessOrEquals
startsWith (開始します) addToTime
一致

not 演算子は特別な演算子であり、この表に表示される演算子の前に配置して、条件句の逆の結果を与えることができます。これは負の結果とも呼ばれます。

関連項目