你当前正在访问 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'))]]"
}
有关运算符和属性名称的完整列表,请参阅本文支持的运算符和支持的属性部分。
条件中的多个子句
条件可以包含用逗号分隔的多个子句以及字符串 and
或 or
。 字符串 and
以满足条件中所有子句中的条件的对象为目标,而 or
以满足条件的任何子句中的条件的对象为目标。 下图显示了 and
和 or
字符串的位置以及两个子句。
以下 JSON 显示包含两个子句的条件。 由于此表达式中使用了 and
字符串,因此这两个子句在对对象执行操作之前必须计算为 true
。
{
"condition": "[[and(endsWith(Name, '.docx'), equals(Tags.Value[readyForLegalHold], 'Yes'))]]"
}
条件组
分组的子句作为独立于子句的其余部分的一个单元来运行。 对子句进行分组类似于在数学等式或逻辑表达式两侧加上括号。 组中第一个子句的 and
或 or
字符串会应用于整个组。
下图显示了两个子句组合在一起。
以下条件仅允许对 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 表达式可能变得庞大、笨拙且难以手动创建。 下图显示了视觉编辑器中的“代码”选项卡。
若要了解有关视觉编辑器的详细信息,请参阅定义存储任务条件和操作。
条件预览
可以查看受定义的条件影响的 Blob 列表。 这样,就可以在将问题应用到生产数据之前找到问题并优化条件。 预览版不会更改目标存储帐户中的对象,因此可以安全地对生产数据进行测试。
虽然条件预览在 PowerShell、Azure CLI 和 SDK 环境中可用,但预览条件效果的最简单方法是在 Azure 门户中使用 “预览条件 ”窗口。 可以在定义条件以及分配存储任务时打开此窗口。
若要预览条件的效果,必须指定目标订阅、存储帐户和容器。 由于最多只能显示 5,000 个 blob,因此还可以指定一个前缀来缩小列表范围。
注释
不能在 Blob 前缀中使用通配符。
下图显示了 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 允许的值为 Hot
、Cool
或 Archive
。
2 允许的值为 BlockBlob
、PageBlob
或 AppendBlob
3 可设置为特定时间,或从对象动态获取的元数据值。 请参阅引用对象元数据中的值。
支持的运算符
下表显示了可以在子句中用来评估每个属性值的运算符。
字符串 | 日期和时间 | 数字 | 布尔 |
---|---|---|---|
包含 | 等于 | 等于 | 等于 |
空 | greater | greater | |
等于 | greaterOrEquals | greaterOrEquals | |
endsWith | less | less | |
length | lessOrEquals | lessOrEquals | |
startsWith | addToTime | ||
匹配 |
not 运算符是一个特殊运算符,可以在此表中出现的任何运算符之前定位,以给出条件子句的相反结果,也称为负结果。