View a markdown version of this page

自动化规则 - AWS Compute Optimizer

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

自动化规则

自动化规则会根据您定义的条件和时间表自动实施建议的操作。自动化规则是全球资源,用于管理所有可用 Compute Optimizer Automizer 自动化的AWS 区域地方的自动操作。您可以从任何提供 Compute Optimizer 自动化的AWS区域创建、更新和删除自动化规则。

规则类型

有两种类型的规则:

  • 账户规则:仅对您的账户应用建议操作的规则。

  • 组织规则:在成员账户中集中应用建议操作的规则。

注意

只有管理账号或委托管理员才能创建组织规则。您只能选择启用了自动化且允许组织规则的成员帐户才能应用规则。成员账户可以查看适用于其账户的组织规则的详细信息,但不能对其进行编辑。可以将组织规则配置为在成员账户规则之前或之后应用。

规则标准

配置规则时,请选择您希望规则实施的建议操作类型,例如快照和删除未连接的 Amazon EBS 卷以及升级 Amazon EBS 卷类型。使用诸如AWS区域和资源标签之类的标准来优化您的选择。然后预览当前匹配的建议操作以验证您的标准。

重要

如果您未指定规则标准,Compute Optimizer 会将所有选定的建议操作类型应用于您在规则范围内选择的帐户,包括所有AWS 区域可用 Compute Optimizer Automizer 自动化的账户中的推荐操作。

自动化规则支持以下推荐的操作属性和比较运算符:

属性 运算符 字段类型

当前卷大小 (GiB)

NumericEquals | NumericNotEquals | NumericLessThan | NumericLessThanEquals | NumericGreaterThan | NumericGreaterThanEquals | NumericEqualsIfExists | NumericNotEqualsIfExists | NumericLessThanIfExists | NumericLessThanEqualsIfExists | NumericGreaterThanIfExists | NumericGreaterThanEqualsIfExists

整数

当前卷类型

StringEquals | StringNotEquals | StringEqualsIgnoreCase | StringNotEqualsIgnoreCase | StringLike | StringNotLike | StringEqualsIfExists | StringNotEqualsIfExists | StringEqualsIgnoreCaseIfExists | StringNotEqualsIgnoreCaseIfExists | StringLikeIfExists | StringNotLikeIfExists

字符串

预计可节省的费用 ($)

NumericEquals | NumericNotEquals | NumericLessThan | NumericLessThanEquals | NumericGreaterThan | NumericGreaterThanEquals | NumericEqualsIfExists | NumericNotEqualsIfExists | NumericLessThanIfExists | NumericLessThanEqualsIfExists | NumericGreaterThanIfExists | NumericGreaterThanEqualsIfExists

双精度

回顾期(天)

NumericEquals | NumericNotEquals | NumericLessThan | NumericLessThanEquals | NumericGreaterThan | NumericGreaterThanEquals | NumericEqualsIfExists | NumericNotEqualsIfExists | NumericLessThanIfExists | NumericLessThanEqualsIfExists | NumericGreaterThanIfExists | NumericGreaterThanEqualsIfExists

整数

AWS区域

StringEquals | StringNotEquals | StringEqualsIgnoreCase | StringNotEqualsIgnoreCase | StringLike | StringNotLike | StringEqualsIfExists | StringNotEqualsIfExists | StringEqualsIgnoreCaseIfExists | StringNotEqualsIgnoreCaseIfExists | StringLikeIfExists | StringNotLikeIfExists

字符串

资源 ARN

StringEquals | StringNotEquals | StringEqualsIgnoreCase | StringNotEqualsIgnoreCase | StringLike | StringNotLike | StringEqualsIfExists | StringNotEqualsIfExists | StringEqualsIgnoreCaseIfExists | StringNotEqualsIgnoreCaseIfExists | StringLikeIfExists | StringNotLikeIfExists

字符串

资源标签

StringEquals | StringNotEquals | StringEqualsIgnoreCase | StringNotEqualsIgnoreCase | StringLike | StringNotLike | StringEqualsIfExists | StringNotEqualsIfExists | StringEqualsIgnoreCaseIfExists | StringNotEqualsIgnoreCaseIfExists | StringLikeIfExists | StringNotLikeIfExists

资源标签

需要重启

StringEquals | StringNotEquals | StringEqualsIgnoreCase | StringNotEqualsIgnoreCase | StringLike | StringNotLike | StringEqualsIfExists | StringNotEqualsIfExists | StringEqualsIgnoreCaseIfExists | StringNotEqualsIgnoreCaseIfExists | StringLikeIfExists | StringNotLikeIfExists

字符串

每个属性最多可以指定 20 个条件,每个条件最多可以指定 20 个值。有关更多信息,请参阅《AWS Compute Optimizer自动化 API 参考》中的标准

比较运算符

在规则条件中使用比较运算符将建议的操作属性与您指定的值进行匹配。

重要

如果您在规则标准中指定的属性未出现在建议的操作中,则这些值不匹配,条件为 false,并且建议的操作将从规则中排除。此逻辑适用于除运算符之外的所有比较运算...IfExists符,当属性不存在时,运算符的计算结果为 true。...IfExists操作员测试该属性是否存在于建议的操作中(存在)。

字符串条件运算符

字符串条件运算符允许您定义规则标准,将推荐的操作属性与您指定的字符串进行比较。

条件运算符 说明

StringEquals

精确匹配,区分大小写。

StringNotEquals

否定精确匹配,区分大小写。

StringEqualsIgnoreCase

精确匹配,忽略大小写。

StringNotEqualsIgnoreCase

否定匹配,忽略大小写。

StringLike

Case-sensitive 匹配。这些值可以包含字符串中任意位置的多字符匹配通配符 (*)。您必须指定通配符才能实现部分字符串匹配。

StringNotLike

不区分大小写的无效匹配。这些值可以包含字符串中任意位置的多字符匹配通配符 (*)。

注意

*单独使用作为值与任何存在的值StringLike相匹配。与组合使用时StringNotLike,值为 “与任何内容都不匹配”,实际上排除了存在该属性的所有建议操作。*例如,在Application带值的标签键StringNotLike上使用会*排除任何带有该Application标签的推荐操作,无论标签的值如何。

数字条件运算符

数字条件运算符允许您定义规则标准,将推荐的操作属性与整数或十进制数进行比较。

条件运算符 说明

NumericEquals

精确的数字匹配。

NumericNotEquals

否定数字匹配。

NumericLessThan

“小于” 匹配。

NumericLessThanEquals

“小于或等于” 匹配。

NumericGreaterThan

“大于” 匹配。

NumericGreaterThanEquals

“大于或等于” 匹配。

例如,您可以NumericGreaterThanEqualsLookback period 属性一起使用来创建一条规则,该规则仅在用于生成建议的回顾期至少为 32 天的情况下自动执行建议的操作。

IfExists 运营商

追加IfExists到任何比较运算符(例如StringLikeIfExists),以更改推荐操作中缺少您指定的属性时对条件的评估方式:

  • 使用基本运算符时,缺失属性的计算结果为 false,并且建议的操作将从规则中排除

  • 对于...IfExists变体,缺失的属性评估为 true,并包括建议的操作。

IfExists当你想从规则中排除一组特定的资源,但仍要包含不带有你正在筛选的标签的资源时,这很有用。例如,您可能想包括除一个团队拥有的资源之外的所有内容。基StringNotEqualsteam = TeamA 排除 TeaMa 的资源,但它也排除所有根本不带有该team标签的资源,省略了你打算包含的资源。添加IfExists以将这些未标记的资源保持在范围内:

  • StringNotEquals仅匹配team标签设置为非的值的资源TeamA。不包括未标记的资源。

  • StringNotEqualsIfExists匹配不带team标签的资源设置为除之外的任何值的资源TeamA。仅排除标记为 team = TeamA 的资源。

IfExists当你想让资源所有者将自己的资源排除在自动化之外时,这也很有用。您可以指定一个专用的选择退出标签,例如automation-opt-out,所有者将其应用于他们想要省略的任何资源。在这种情况下,标签的存在很重要,而不是其值,因此请StringNotLikeIfExistsautomation-opt-out标签键*上的值一起使用。*通配符匹配任何值,因此 Compute Optimizer 会排除所有带有该标签的资源。该IfExists变体将不带标签的资源保留在范围内;没有它,所有未标记的资源也将被排除在外。

规则标准示例

示例:仅包括特定区域的建议操作

以下规则标准在 “AWS区域” 属性StringEquals上使用来匹配us-east-1或中资源的建议操作us-west-2。当您为一个条件指定多个值时,这些值将具有 OR 关系,如果该条件的属性值与其中任何一个值匹配,则建议的操作与条件匹配。

标准配置:

属性 运算符

AWS区域

StringEquals

us-east-1, us-west-2

评估:

属性值 结果

us-east-1

匹配

us-west-2

匹配

eu-west-1

不匹配

示例:仅包含在最短回顾期内生成的推荐操作

以下规则标准使用NumericGreaterThanEquals回顾周期(天)属性,仅自动执行用于生成建议的回顾期至少为 32 天的建议操作。这样,在自动执行建议的操作之前,您需要更长的观察窗口。

标准配置:

属性 运算符

回顾期(天)

NumericGreaterThanEquals

32

评估:

属性值 结果

32

匹配

14

不匹配

示例:包括建议的操作,除非资源属于特定团队

假设一个平台团队,该团队在多个账户中启用 Compute Optimizer 自动化,但希望将一个团队的资源排除在规则之外。该团队已经为资源team添加了标签以用于其他目的,但并非每个资源都带有标签。他们希望广泛应用自动化,同时排除任何标记为 team = 的资源TeamA

以下规则标准在资源标签属性StringNotEqualsIfExists上使用,标签键team和值TeamA。如果资源根本没有标签,或者将team标签设置为除以外的任何值,则会包含建议的操作TeamA。因为许多资源不会带有标签,所以它们IfExists才会保持在范围内,没有标签,所有未标记的资源都将被排除在外。

标准配置:

属性 运算符 标签键

资源标签

StringNotEqualsIfExists

team

TeamA

评估:

建议的操作状态 结果 说明

该资源没有team标签

匹配

该属性不存在,并且将缺失的属性IfExists评估为真。

该资源的标签为 team = web

匹配

标签存在,但值不匹配TeamA

该资源的标签为 team = TeamA

不匹配

标签存在且值匹配TeamA,因此不包括推荐的操作。

示例:包括建议的操作,除非资源有选择退出标签

您可以通过应用专用的选择退出标签,让资源所有者将单个资源排除在自动化之外。在此示例中,所有者将automation-opt-out标签添加到他们想要省略的任何资源中。

以下规则标准在资源标签属性StringNotLikeIfExists上使用,标签键automation-opt-out和值**通配符匹配任何值,因此任何带有该标签的资源都将被排除在外。如果资源没有automation-opt-out标签,则会包含建议的操作。

标准配置:

属性 运算符 标签键

资源标签

StringNotLikeIfExists

automation-opt-out

*

评估:

建议的操作状态 结果 说明

该资源没有automation-opt-out标签

匹配

该属性不存在,并且将缺失的属性IfExists评估为真。

该资源的标签为 automation-opt-out = true

不匹配

标签存在且与任何值*匹配,因此不包括推荐的操作。

该资源的标签为 automation-opt-out = temporary

不匹配

标签存在且与任何值*匹配,因此不包括推荐的操作。

示例:合并多个标准

您可以组合多个条件来缩小规则的范围。要将建议的操作包含在规则中(AND 逻辑),所有条件都必须匹配。

以下配置可自动执行 EBS 卷建议的操作:

  1. 在 us-east-1 和 us-west-2

  2. 是在回溯期至少为 32 天的情况下生成的;以及

  3. 未选择退出自动化(无automation-opt-out标签)。

只有同时满足所有三个条件时,该规则才包括建议的操作。

标准配置:

属性 运算符

AWS区域

StringEquals

us-east-1, us-west-2

回顾期(天)

NumericGreaterThanEquals

32

资源标签(密钥:automation-opt-out

StringNotLikeIfExists

*

Schedule

通过指定频率(每天、每周或每月)、开始时间、结束时间和时区,为规则的运行时间设置时间表。在此窗口中,Compute Optimizer 将开始实施符合您指定标准的推荐操作。启动的操作数量取决于计划时间窗口的持续时间、Compute Optimizer Automizer Automatizer 的并发限制以及完成每个操作所需的时间。在自动化工作流程中的所有步骤完全完成之前,自动操作将显示为 In-Progress “”。每个区域每个账户最多可以同时进行 100 个操作。AWS

规则顺序

默认情况下,规则是在规则组中按规则顺序 1(最高优先级)创建的。例如,当管理账户创建配置为在成员账户规则之后应用的组织规则时,它收到的规则顺序为 1,这是该组中所有规则中优先级最高的。当账户中的建议操作与多条规则匹配时,规则组和规则顺序决定了哪条规则适用。Compute Optimizer 会将操作分配给规则顺序值最低(优先级最高)的活动规则,无论该规则计划何时运行。

例如,如果建议的操作符合下表中的所有规则,则 Compute Optimizer 会将其分配给 Rule-C 并根据的计划进行 Rule-C实施。

规则组 规则顺序 规则名称 Status Schedule

在成员账户规则之前评估组织规则

1

Rule-A

非活动

每周星期一,时间为世界标准时间 12:00 至 13:00

2

Rule-B

非活动

世界标准时间每天 12:00 至 13:00

成员账户规则

1

Rule-C

活动

每月 15 日,世界标准时间 12:00 至 13:00

2

Rule-D

非活动

每月 15 日,世界标准时间 12:00 至 13:00

之前的成员账户规则之后的组织规则

1

Rule-E

非活动

每周星期一,时间为世界标准时间 12:00 至 13:00

2

Rule-F

活动

世界标准时间每天 12:00 至 13:00