你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

存储任务条件

存储任务包含一组条件和操作。 本文介绍条件的 JSON 格式。 如果计划使用 Azure 门户以外的工具(例如:Azure PowerShell 或 Azure CLI)创建存储任务,则了解该格式非常重要。 本文还列出了可用于组合条件子句的属性和运算符。

本文的重点在于连接。 若要详细了解操作,请参阅存储任务操作

条件格式

一个或多个子句的条件集合。 每个子句都包含一个属性、一个值和一个运算符。 存储任务运行时,它使用运算符将属性与值进行比较,以确定目标对象是否满足子句。 在子句中,运算符始终先出现在属性前面,然后是值。 下图显示了如何在表达式中定位每个元素。

显示具有运算符、属性和值的简单条件的格式的图。

以下子句仅允许对 Microsoft Word 文档执行操作。 此子句面向以文件扩展名 .docx 结尾的所有文档。 因此,运算符为 endsWith,属性为 Name,值为 .docx

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

还可以在条件子句中的运算符之前应用 运算符。 not 运算符是一个特殊运算符,可以在任何运算符之前定位以给出子句的相反结果。 以下子句允许对 不是 Microsoft Word 文档的任何 Blob 执行操作。

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

有关运算符和属性名称的完整列表,请参阅本文支持的运算符支持的属性部分。

条件中的多个子句

条件可以包含用逗号分隔的多个子句以及字符串 andor。 字符串 and 以满足条件中所有子句中的条件的对象为目标,而 or 以满足条件的任何子句中的条件的对象为目标。 下图显示了 andor 字符串的位置以及两个子句。

显示包含两个子句的条件的格式的图。

以下 JSON 显示包含两个子句的条件。 由于此表达式中使用了 and 字符串,因此这两个子句在对对象执行操作之前必须计算为 true

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

条件组

分组的子句作为独立于子句的其余部分的一个单元来运行。 对子句进行分组类似于在数学等式或逻辑表达式两侧加上括号。 组中第一个子句的 andor 字符串会应用于整个组。

下图显示了两个子句组合在一起。

显示包含两个组合在一起的子句的条件的格式的图。

以下条件仅允许对 Microsoft Word 文档执行操作,其中文档的 readyForLegalHold 标记设置为 Yes 值。 即使其他两个条件不为 true,也会对大于 100 字节的对象执行操作。

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

可以将 not 运算符应用于群组,以测试子句群组的相反结果。 以下条件仅允许对非 Microsoft Word 文档(其中 Blob 的 readyForLegalHold 标记设置为值 Yes)的 Blob 进行操作。 即使其他两个条件不为 true,也会对大于 100 字节的对象执行操作。

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

Azure 门户中的代码视图

Azure 门户中提供的可视化编辑器,可以为你生成条件的 JSON。 可以使用编辑器定义条件,然后通过打开“代码”选项卡来获取 JSON 表达式。当创建复杂的条件集时,此方法非常有用,因为 JSON 表达式可能变得庞大、笨拙且难以手动创建。 下图显示了视觉编辑器中的“代码”选项卡。

视觉设计器的“代码”选项卡中显示的条件 JSON 的屏幕截图。

若要了解有关视觉编辑器的详细信息,请参阅定义存储任务条件和操作

条件预览

可以查看受定义的条件影响的 Blob 列表。 这样,就可以在将问题应用到生产数据之前找到问题并优化条件。 预览版不会更改目标存储帐户中的对象,因此可以安全地对生产数据进行测试。

虽然条件预览在 PowerShell、Azure CLI 和 SDK 环境中可用,但预览条件效果的最简单方法是在 Azure 门户中使用 “预览条件 ”窗口。 可以在定义条件以及分配存储任务时打开此窗口。

若要预览条件的效果,必须指定目标订阅、存储帐户和容器。 由于最多只能显示 5,000 个 blob,因此还可以指定一个前缀来缩小列表范围。

注释

不能在 Blob 前缀中使用通配符。

下图显示了 Azure 门户中预览结果的示例。

Azure 门户中存储任务预览窗口的屏幕截图。

预览结果显示在表中,其中显示了满足条件的对象以及不符合条件的对象。 可以按表中显示的字段进行排序。

如果条件引用目标存储帐户中不存在的属性,则会出现错误。 例如,Blob 索引标记不适用于具有分层命名空间的帐户。 如果条件中的子句引用 Blob 索引标记,则会显示验证错误。

支持的属性

下表显示了可用于构成条件的每个子句的属性。 子句可以包含字符串、布尔值、数字以及日期和时间属性。

字符串 日期和时间 3 数字 布尔
AccessTier1 AccessTierChangeTime 内容长度 已删除
Metadata.Value Creation-Time TagCount IsCurrentVersion
名称 DeletedTime
BlobType2 最后访问时间
Container.Metadata.Value[Name] Last-Modified
Container.Name
Container.Metadata.Value[Name]
容器.名称
Tags.Value[Name]
VersionId

1 允许的值为 HotCoolArchive

2 允许的值为 BlockBlobPageBlobAppendBlob

3 可设置为特定时间,或从对象动态获取的元数据值。 请参阅引用对象元数据中的值

支持的运算符

下表显示了可以在子句中用来评估每个属性值的运算符。

字符串 日期和时间 数字 布尔
包含 等于 等于 等于
greater greater
等于 greaterOrEquals greaterOrEquals
endsWith less less
length lessOrEquals lessOrEquals
startsWith addToTime
匹配

not 运算符是一个特殊运算符,可以在此表中出现的任何运算符之前定位,以给出条件子句的相反结果,也称为负结果。

另请参阅