可以使用可视化编辑器定义存储任务的条件和操作。
操作是对满足任务中所定义条件的每个对象采取的措施。 条件包含一个或多个条件子句。 每个子句都定义属性和值之间的关系。 若要执行存储任务中定义的操作,每个对象必须满足该关系的条款。
定义条件
通过添加子句来定义条件。 子句定义属性和值之间的关系。 若要执行存储任务中定义的操作,每个对象必须满足该关系的条款。
在 Azure 门户中导航到存储帐户,然后在“存储任务管理”下选择“条件”。
此时会显示“条件”窗格的“视觉生成器”选项卡。
添加和删除子句
若要添加子句,请选择“添加新子句”;若要删除子句,请选择子句旁边显示的删除图标 (
)。
指定子句的条款
若要定义子句,请选择一个属性,为该属性指定值,然后选择一个运算符将它们关联在一起。
选择属性
在“Blob 属性”下拉列表中,选择一个属性。 请参阅支持的 Blob 属性。
以下示例选择的是“Blob 名称”属性。
选择值和运算符
在“属性值”框中输入值,然后在“运算符”下拉列表中选择运算符。 请参阅支持的运算符。
以下示例指定 .log
的值以及“结尾为”运算符。 采用此条件,可以仅对具有 .log
文件扩展名的 Blob 执行此存储任务中定义的操作。
使用 JSON 定义 条件 。 一个或多个子句的条件集合。 每个子句都包含一个属性、一个值和一个运算符。 在以下 JSON 中,属性为 Name
,值为 .docx
,运算符为 endsWith
。 此条款仅允许对 Microsoft Word 文档执行操作。
$conditions = "[[endsWith(Name, '.docx')]]"
若要详细了解条件的结构和属性和运算符的完整列表,请参阅 存储任务条件。
使用 JSON 定义 条件 。 一个或多个子句的条件集合。 每个子句都包含一个属性、一个值和一个运算符。 在以下 JSON 中,属性为 Name
,值为 .docx
,运算符为 endsWith。 此条款仅允许对 Microsoft Word 文档执行操作。 若要详细了解条件的结构和属性和运算符的完整列表,请参阅 存储任务条件。
conditionclause="[[endsWith(Name,'/.docx'/)]]"
在字符串值中使用通配符
可以在字符串属性的值中使用 *
和 ?
通配符。 *
字符表示零个或多个字符,而 ?
字符表示恰好一个字符。
例如,如果希望子句仅对作为 Word 文档的 Blob 的计算结果为 true,则使用字符串 *.docx
。 但是,如果只想使用单个字符(如 1.docx
或 2.docx
)命名文档,则可以使用字符串 ?.docx
。
可以在字符串中的任意位置使用 *
或 ?
。 可以通过在字符前面添加 \
来转义这些字符。
包含日期和时间属性的子句可以引用容器元数据或 Blob 索引标记中的值。 执行任务时,这些值是在运行时动态获取的。
在存储帐户中,你可以将键添加到容器的元数据或 Blob 的索引标记。 该键的值必须是 ISO 8601 格式的时间间隔。 例如,你可能会添加名为 retainfor
的键,并添加字符串值 PT5M
来表示五分钟的间隔。
若要引用键,请选择“属性值”列中出现的“编辑”链接。 然后,在“选择值”对话框中,选择“容器元数据”或“Blob 索引标记”。
以下示例添加“创建时间”属性和“早于”运算符,并在计算的每个 Blob 的索引标记中引用名为 的键retainFor
。
$conditions = "[[and(endsWith(Name, '.docx'), equals(utcNow, dateTimeAdd(Creation-Time, Tags.Value[retainFor])))]]"
此条件子句使用速记语法。 Azure CLI 使用简写语法表达 JSON 格式的字符串。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
conditionclause="[[and(endsWith(Name, '/.docx'/),equals(utcNow,dateTimeAdd(Creation-Time,Tags.Value[retainFor])))]]"
此条件测试 Blob 的创建时间是否要比现在(当前日期和时间)早一定的持续时间。 例如,如果从 retainFor
标记检索到的值为五分钟,则此条件将检查 Blob 是否是在 5 分钟之前创建的。
如果计算对象不存在该键,则该条件的计算结果为 false。 如果键值是不符合 ISO 8601 标准的字符串,则会在执行报告中报告错误。
将 And/Or 应用于子句
向子句中添加“And”或“Or”。 如果希望目标对象同时满足条件当前子句和前一个子句中的条件,请指定“And”。 如果希望目标对象满足当前子句或前一个子句中的条件,请指定“Or”。
以下示例显示了使用“And”的子句。 在此示例中,存储任务的目标对象是具有 .log
扩展名且 Archive-Status
标记设置为 Ready
的对象。
$conditions = "[[and(endsWith(Name, '.log'), equals(Tags.Value[Archive-Status], 'Ready'))]]"
有关详细信息,请参阅 条件中的多个子句。
此条件子句使用速记语法。 Azure CLI 使用简写语法表达 JSON 格式的字符串。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
conditionclause="[[and(endsWith(Name,'/.log'/),equals(Tags.Value[Archive-Status],'/Ready'/))]]"
有关详细信息,请参阅 条件中的多个子句。
更改子句的顺序
可以按你认为能够提高任务运行性能的顺序来排列子句。 例如,你可能会提升以特定容器为目标的子句,而不是先根据名称筛选器测试帐户中的所有 Blob。 这种小调整可以防止任务执行不必要的计算。
下面的示例反转上一个示例中所示的子句的顺序。 此条件先评估索引标记子句,然后评估 Blob 名称子句。
首先,选择子句。 然后,选择“上移子句”或“下移子句”以更改其在列表中的位置。
$conditions = "[[and(equals(Tags.Value[Archive-Status], 'Ready'), endsWith(Name, '.log'))]]"
此条件子句使用速记语法。 Azure CLI 使用简写语法表达 JSON 格式的字符串。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
conditionclause="[[and(equals(Tags.Value[Archive-Status],'/Ready'/),endsWith(Name,'/.log'/))]]"
组合和取消组合子句
分组的子句作为独立于子句的其余部分的一个单元来运行。 对子句进行分组类似于在数学等式或逻辑表达式两侧加上括号。 组中第一个子句的“And”或“Or”运算符将应用于整个组。
下列示例显示了组合在一起的两个条件。 在此示例中,如果 Blob 具有 .log
扩展名且名为 Archive-Status
的标记设置为值 Ready
,或者 120 天内未访问该文件,则执行操作。
选中要组合在一起的每个子句旁边的复选框。 然后选择“组合”。
若要取消组合子句,请选择取消组合图标 (
),或选择组中的每个子句,然后选择“取消组合”。
$conditions = "[[and(endsWith(Name,'/.log'/),or(equals(Tags.Value[Archive-Status],'/Ready'/),less(utcNow,dateTimeAdd(LastAccessTime,'/P120D'/))))]]"
有关详细信息,请参阅 条件组。
此条件子句使用速记语法。 Azure CLI 使用简写语法表达 JSON 格式的字符串。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
conditionclause="[[and(endsWith(Name,'/.log'/),or(equals(Tags.Value[Archive-Status],'/Ready'/),less(utcNow,dateTimeAdd(LastAccessTime,'/P120D'/))))]]"
有关详细信息,请参阅 条件组。
预览条件的效果
可以查看受定义的条件影响的 Blob 列表。
在条件编辑器中,选择“预览条件”。
在 预览条件中,可以指定目标订阅、存储帐户和容器。 由于最多只能显示 5,000 个 blob,因此还可以指定一个前缀来缩小列表范围。
定义操作
操作是对满足任务中所定义条件的每个对象采取的措施。
添加和删除操作
若要添加操作,请选择“添加新操作”;若要删除操作,请选择操作旁边显示的删除图标 (
)。
选择操作
在“操作”下拉列表中,选择一个操作。 请参阅支持的操作。
以下示例选择的是“设置 Blob 标记”属性。
选择参数
输入或选择适合操作的参数。
以下示例将 Archive-Status
标记设置为值 Archived
。
使用 New-AzStorageActionTaskOperationObject
命令定义每个操作。
以下操作创建一个设置不可变策略的操作。
$policyoperation = New-AzStorageActionTaskOperationObject `
-Name SetBlobImmutabilityPolicy `
-Parameter @{"untilDate" = (Get-Date).AddDays(1); "mode" = "locked"} `
-OnFailure break `
-OnSuccess continue
以下操作将在 Word 文档的元数据中设置 Blob 索引标签。
$tagoperation = New-AzStorageActionTaskOperationObject -Name SetBlobTags `
-Parameter @{"tagsetImmutabilityUpdatedBy"="StorageTaskQuickstart"} `
-OnFailure break `
-OnSuccess continue
使用逗号分隔符将操作组合在一起
$operation = $policyoperation,$tagoperation
这些操作以简写语法表示。 简写语法是 JSON 字符串的简化表示形式。 若要了解详细信息,请参阅 如何将速记语法与 Azure CLI 配合使用。
定义每个操作。 以下示例定义一个操作,该操作设置不可变性策略,以及一个操作设置 Word 文档元数据中的 Blob 索引标记。
policyoperation="{name:'SetBlobImmutabilityPolicy',parameters:{untilDate:'2024-10-20T22:30:40',mode:'locked'},onSuccess:'continue',onFailure:'break'}"
tagoperation="{name:'SetBlobTags',parameters:{'tagsetImmutabilityUpdatedBy':'StorageTaskQuickstart'},onSuccess:'continue',onFailure:'break'}"
使用逗号分隔符将操作组合在一起。
action="{if:{condition:'"${conditionclause}"',operations:["${policyoperation}","${tagoperation}"]}}"
若要详细了解操作的结构以及找到完整的操作列表,请参阅 存储任务操作。
更改操作的顺序
可以按任意顺序排列操作。
在此示例中,现有顺序比较合理。 先存档 Blob 再设置标记。 更改层之前就设置标签并不合理,以防万一更改 Blob 层的尝试失败。 如果设置 Blob 标记操作首先出现在列表中,则可以考虑将此操作移动到设置 Blob 层操作之下。
若要移动操作,请选中操作旁边显示的复选框。 然后,选择“上移操作”或“下移操作”以更改其在列表中的位置。
要想移动操作,只需更改操作在 JSON 格式的字符串中显示的顺序。
$operation = $tagoperation,$policyoperation,
要移动一个操作,只需更改操作在字符串中出现的顺序。
operations="'${tagoperation}','${policyoperation}'"
另请参阅