

# 控制面板主体结构和语法
<a name="CloudWatch-Dashboard-Body-Structure"></a>

**Topics**
+ [整体结构](#Dashboard-Body-Overall-Structure)
+ [小组件数组结构](#CloudWatch-Dashboard-Properties-Widgets-Structure)
+ [变量数组结构](#CloudWatch-Dashboard-Properties-Variables-Structure)
+ [日志小组件对象的属性](#CloudWatch-Dashboard-Properties-Log-Widget-Object)
+ [指标小组件对象的属性](#CloudWatch-Dashboard-Properties-Metric-Widget-Object)
+ [指标小组件：数组中每个指标的格式](#CloudWatch-Dashboard-Properties-Metrics-Array-Format)
+ [指标资源管理器小组件对象的属性](#CloudWatch-Dashboard-Properties-Metric-Explorer-Object)
+ [警报状态小组件对象的属性](#CloudWatch-Dashboard-Properties-Alarm-Widget-Object)

## 整体结构
<a name="Dashboard-Body-Overall-Structure"></a>

`DashboardBody` 是一个 JSON 格式的字符串。其中可以包含 0 到 500 个小组件对象的数组，以及一些其他参数。控制面板必须包含一个 `widgets` 数组，不过该数组可以为空。

以下是这种结构的示例，其中包含一个指标小组件和一个文本小组件，时间范围从当前时间前六小时开始，并且始终遵循每个图表的周期设置。

```
{
   "start": "-PT6H",
   "periodOverride": "inherit",
   "widgets": [
      {
         "type":"metric",
         "x":0,
         "y":0,
         "width":12,
         "height":6,
         "properties":{
            "metrics":[
               [
                  "AWS/EC2",
                  "CPUUtilization",
                  "InstanceId",
                  "i-012345"
               ]
            ],
            "period":300,
            "stat":"Average",
            "region":"us-east-1",
            "title":"EC2 Instance CPU",
            "liveData": false,
            "legend": {
                "position": "right"
              }
         }
      },
      {
         "type":"text",
         "x":0,
         "y":7,
         "width":3,
         "height":3,
         "properties":{
            "markdown":"Hello world"
         }
      }
   ]
}
```

下一示例显示每个 Lambda 函数的三个指标，并使用一个控制面板变量，确保控制面板用户可以在不同的 Lambda 函数名称之间切换，并查看每个函数的所有三个指标。这有助您创建灵活的控制面板，显示不同资源的关键指标。在此示例中，函数是通过指标搜索查询发现的，因此控制面板会自动发现新创建的 Lambda 函数。

```
{
    "widgets": [{
            "height": 6,
            "width": 6,
            "y": 0,
            "x": 0,
            "type": "metric",
            "properties": {
                "view": "timeSeries",
                "stacked": false,
                "metrics": ["AWS/Lambda", "Invocations", "FunctionName", "my-function-name"],

                "region": "us-east-1",
                "liveData": true
            }
        },
        {
            "height": 12,
            "width": 12,
            "y": 0,
            "x": 6,
            "type": "metric",
            "properties": {
                "view": "timeSeries",
                "stacked": false,
                "metrics": ["AWS/Lambda", "Errors", "FunctionName", "my-function-name"],

                "region": "us-east-1",
                "liveData": true
            }
        },

        {
            "height": 3,
            "width": 6,
            "y": 0,
            "x": 18,
            "type": "metric",
            "properties": {
                "view": "timeSeries",
                "stacked": false,
                "metrics": ["AWS/Lambda", "Duration", "FunctionName", "my-function-name"],

                "region": "us-east-1",
                "liveData": true
            }
        }
    ],
    "variables": [{
        "type": "property",
        "property": "FunctionName",
        "inputType": "select",
        "id": "LambdaFunction_Variable",
        "label": "Function",
        "visible": true,
        "search": "{AWS/Lambda,FunctionName} MetricName=\"Duration\"",
        "populateFrom": "FunctionName"
    }]
}
```

下一示例有两个小组件。第一个小组件包含两个指标和一个用于加总求和的数学表达式。第二个小组件是一个搜索表达式，用于显示该区域所有 EC2 实例的 `CPUUtilization`。

```
{
   "start": "-PT9H",
   "periodOverride": "inherit",
   "widgets": [
      {
         "type":"metric",
         "x":0,
         "y":0,
         "width":12,
         "height":6,
         "properties":{
            "metrics":[
               [ "AWS/EC2", "DiskReadBytes", "InstanceId", "i-123",{ "id": "m1" } ],
               [ ".", ".", ".", "i-abc", { "id": "m2" } ],
               [ { "expression": "SUM(METRICS())", "label": "Sum of DiskReadbytes", "id": "e3" } ]
            ],
            "view": "timeSeries",
            "stacked": false,
            "period":300,
            "stat":"Average",
            "region":"us-east-1",
            "title":"EC2 Instance CPU"
         }
      },
      {
         "type":"metric",
         "x":0,
         "y":0,
         "width":18,
         "height":9,
         "properties":{
            "metrics":[
               [ { "expression": "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average', 300)", "id": "e1" } ]
            ],
            "view": "timeSeries",
            "stacked": false,
            "region":"us-east-1",
            "title":"EC2 Instance CPU"
         }
      }
   ]
}
```

本节的其余部分包含演示 `DashboardBody` 语法各部分的示例。有关显示完整命令语法的更多示例，请参阅《Amazon CloudWatch API 参考》中的 [PutDashboard](https://docs.amazonaws.cn/AmazonCloudWatch/latest/APIReference/API_PutDashboard.html)。

JSON 对象的顶层可以包含以下属性。

**小组件**  
控制面板中的小组件列表。有关更多信息，请参阅 [小组件数组结构](#CloudWatch-Dashboard-Properties-Widgets-Structure)。  
是否必需：是

**变量**  
控制面板中使用的控制面板变量对象数组。要详细了解可在每个控制面板变量对象中使用的字段，请参阅[变量数组结构](#CloudWatch-Dashboard-Properties-Variables-Structure)。  
有关控制面板变量的更多信息，请参阅[使用控制面板变量创建灵活的控制面板](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/cloudwatch_dashboard_variables.html)。  
如果包含一个 `variables` 数组，则可以包含 0 到 25 个变量对象。  
必需：否

**最终**  
控制面板加载时，用于控制面板上每个小组件的时间范围结束时间。如果为 `end` 指定值，则必须为 `start` 指定值。对于其中的每个值，请以 ISO 8601 格式指定绝对时间。例如 `2018-12-17T06:00:00.000Z`。  
类型：字符串  
必需：否

**开启**  
控制面板上用于每个小组件的时间范围起始时间。  
要指定于当前时间结束的相对时间范围，您可以指定 `start`，而不指定 `end`。在这种情况下，如果以分钟或小时为单位指定时间范围，则 `start` 的值必须以 `-PT` 开头；如果指定以天、周或月为单位的时间范围，则该值必须以 `-P` 开头。然后可以使用 M、H、D、W 和 M 缩写，分别代表分钟、小时、天、周和月。例如，`-PT5M` 会显示过去 5 分钟，`-PT8H` 会显示过去 8 个小时，`-P3M` 会显示过去 3 个月。  
此外还可以将 `start` 与 `end` 字段结合使用，来指定绝对时间范围。指定绝对时间范围时，请使用 ISO 8601 格式。例如 `2018-12-17T06:00:00.000Z`。  
如果省略 `start`，则控制面板将在加载时显示默认时间范围。  
类型：字符串  
必需：否

**periodOverride**  
使用此字段指定控制面板加载时图表的周期。指定 `auto` 会使控制面板上所有图表的周期自动适应控制面板的时间范围。指定 `inherit` 可确保始终遵守为每个图表设置的周期。  
有效值：auto \| inherit  
类型：字符串  
必需：否

## 小组件数组结构
<a name="CloudWatch-Dashboard-Properties-Widgets-Structure"></a>

对于任何类型小组件，每个都可以具有以下属性。

**类型**  
小组件的类型。  
有效值：`metric` \| `text` \| `log` \| `alarm` \| `explorer`  
类型：字符串  
是否必需：是

**x**  
小组件在 24 列控制面板网格上的横向位置。默认为下一可用位置。  
有效值：0–23  
类型：整数  
必需：是（如果指定了 `y`）。否则不是必需。

**y**  
小组件在 24 列控制面板网格上的纵向位置。默认为下一可用位置。  
有效值：0 或以上的任意整数。  
类型：整数  
必需：是（如果指定了 `x`）。否则不是必需。

**width**  
小组件的宽度，以网格为单位（在 24 列网格中）。默认值为 6。  
有效值：1–24  
类型：整数  
必需：否

**height**  
小组件的高度（以网格为单位）。默认值为 6。  
有效值：1–1000  
类型：整数  
必需：否

**属性**  
小组件的详细属性，这些属性因小组件类型而异。有关 `properties` 格式的更多信息，请参阅[指标小组件对象的属性](#CloudWatch-Dashboard-Properties-Metric-Widget-Object)或[文本小组件对象的属性](#CloudWatch-Dashboard-Properties-Text-Widget-Object)。  
类型：对象  
是否必需：是

## 变量数组结构
<a name="CloudWatch-Dashboard-Properties-Variables-Structure"></a>

数组中的每个控制面板变量都可以具有以下属性。

**类型**  
控制面板变量的类型。CloudWatch 支持*属性变量*和*模式变量*这两种类型。  
属性变量会更改某个属性时，会更改控制面板的所有小组件中出现该属性之处。属性可以是以下任意一项：  
+ 小组件定义中的任何 JSON 属性，例如 `region`。
+ 任指标的任何维度名称，例如 `InstanceId` 或 `FunctionName`。
模式变量会更改控制面板 JSON 中的正则表达式模式。只需要更改某个 JSON 属性值的一部分，甚至是某个 JSON 属性时，请使用模式变量。  
属性变量适用于大多数应用场景，设置起来也不太复杂。  
有效值：`property` \| `pattern`  
类型：字符串  
是否必需：是

**inputType**  
确定控制面板用户输入变量值的方式。  
+ 指定 `input` 以使用文本框，从而让用户可以在其中输入值。
+ 指定 `select` 以使用您定义的一组下拉值，或者通过指标搜索查询找到的值下拉列表。
+ 指定 `radio` 以使用一组单选按钮，其中包含您定义的值或通过指标搜索查询找到的值。
有效值：`input` \| `select` \| `radio`  
类型：字符串  
是否必需：是

**值**  
如果 `inputType` 为 `select` 或 `radio`，并且您想定义可能的变量值而不使用指标查询搜索，请在此处指定这些值。  
`values` 是一个数组，其中的每个对象都包含一个必填的*值*和一个可选的*标签*。每个*值*可以是字符串、数值或布尔值，并且每个标签必须是字符串。每个值和标签最多可使用 255 个字符。  
如果指定 `values` 数组，则其中必须至少包含一项，但最多可以包含 500 项。  
例如，以下示例创建了一个包含三个可能区域的列表，以用作变量的值。  

```
"values": [
    { "label": "US East (IAD)", "value": "us-east-1" },
    { "label": "US West (SFO)", "value": "us-west-1" },
    { "label": "EU (DUB)", "value": "eu-west-1" }
]
```
类型：数组  
必需：是（如果 `inputType` 为 `select` 或 `radio`，且不使用指标搜索查询来填充值）。

**id**  
此变量的 ID。最多可使用 32 个字符，有效字符为 `0-9A-Za-z-_`  
类型：字符串  
是否必需：是

**label**  
要为输入字段显示的标签。最多可以使用 30 个字符。  
如果在属性变量中省略此字段，则标签将显示属性名称。如果在模式变量中省略此字段，则标签将使用 `{{pattern_1}}, {{pattern_2}}, ...`。  
类型：字符串  
必需：否

**defaultValue**  
控制面板首次打开时该变量的默认值。  
+ 如果 `inputType` 为 `input`，则需要在此处手动指定 `defaultValue`，并且最多可使用 255 个字符
+ 如果 `inputType` 为 `select` 或 `radio`，则必须指定您在 `values` 数组中指定的有效可能值，或通过指标查询搜索检索到的有效可能值。
有效值：此变量的任何有效值  
类型：字符串、数值或布尔值，具体取决于此变量的类型值  
必需：否

**搜索**  
指定此字段，以使用指标搜索表达式来填充 `select` 或 `radio` 输入字段。对于该字段的值，请指定命名空间、维度名称和指标名称。您指定的维度必须为该指标的有效维度。CloudWatch 会查找发布该指标和维度的所有资源，然后用来填充列表。  
例如，指定 `"search": "{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\""` 以搜索账户中的 Amazon EC2 实例，或者指定 `"search": "{AWS/Lambda,FunctionName} MetricName=\"Duration\"",` 以返回账户中的 Lambda 函数  
您指定的 `search` 字符串最多可使用 2048 个字符。  
如果您使用的是搜索表达式，并且还想指定默认值，则只要您在 `defaultValue` 中指定的默认值是一或搜索检索到的资源，就将使用该默认值。使用搜索表达式填充输入字段时，也可以为 `defaultValue` 指定特殊值 `__FIRST`，从而使默认值成为搜索返回的第一个值。（特殊值包括两个下划线，然后是 FIRST）搜索返回的值始终按字母顺序排序。
类型：字符串  
必需：是（如果 `inputType` 为 `select` 或 `radio`，并且您未指定 `values`）。

**populateFrom**  
如果您使用 `search` 字段，以通过搜索表达式填充输入字段，请将此字段指定为搜索将会检索的维度名称。  
例如，假设 `search` 的值为 `"search": "{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\""`，则可以为 `populateFrom` 指定 `InstanceId`。  
类型：字符串  
必需：是（如果 `inputType` 为 `select` 或 `radio`，并且您未指定 `values`）。

**visible**  
指定输入标签和字段是否在控制面板上可见。如果省略该参数，则会使用默认值 `true`。  
使用 `false` 可以节省部分控制面板空间，但需要用户更改控制面板 URL 才能更改变量值。  
类型：布尔值  
必需：否

### 变量示例
<a name="Dashboard-Body-Variable-Examples"></a>

以下示例使用属性变量，以通过文本输入字段更改所有小组件的区域。控制面板首次打开时，该变量将使用 `us-east-1` 的默认值。

```
"variables": [
     {
        "type": "property", 
        "property": "region",
        "inputType": "input",
        "id": "region",
        "label": "Region",
        "defaultValue": "us-east-1",
        "visible": true
    } 
],
```

以下示例使用模式变量，以便有时在字符串（例如 ARN）中间设置区域的情况下更改所有小组件的区域。

```
"variables": [
    {
        "type": "pattern",
        "pattern": "us-east-1",
        "inputType": "input",
        "id": "region",
        "label": "Region",
        "defaultValue": "us-east-1",
        "visible": true
    }
],
```

以下示例会生成一个 Lambda 函数变量，并且每个函数都有一个单选按钮。函数是通过指标查询搜索发现的。

```
"variables": [
    {
        "type": "pattern",
        "pattern": "originalFuncNameInDashboard",
        "inputType": "radio",
        "id": "functionName",
        "label": "Function",
        "visible": true,
        "search": "{AWS/Lambda,FunctionName} MetricName=\"Duration\"",
        "populateFrom": "FunctionName",
        "defaultValue": "__FIRST"
    }
],
```

以下示例显示了如何在控制面板中指定多个变量，并演示了多种变量类型。

```
"variables": [{
        "type": "property",
        "property": "region",
        "inputType": "select",
        "id": "unique_id_1",
        "label": "Region",
        "defaultValue": "us-east-1",
        "visible": true,
        "values": [{
                "label": "IAD",
                "value": "us-east-1"
            },
            {
                "label": "CMH",
                "value": "us-east-2"
            },
            {
                "label": "NRT",
                "value": "ap-northeast-1"
            }
        ]
    },
    {
        "type": "property",
        "property": "FunctionName",
        "inputType": "select",
        "id": "unique_id_2",
        "label": "Function",
        "visible": true,
        "values": [{
                "value": "my-FunctionName-1"
            },
            {
                "value": "my-FunctionName-2"
            },
            {
                "value": "my-FunctionName-3"
            }
        ]
    },
    {
        "type": "property",
        "property": "accountId",
        "inputType": "radio",
        "id": "unique_id_3",
        "defaultValue": "111122223333",
        "visible": true,
        "values": [{
                "label": "IAD Account",
                "value": "111122223333"
            },
            {
                "label": "CMH Account",
                "value": "123456789012"
            },
            {
                "label": "NRT Account",
                "value": "000000000000"
            }
        ]
    }
]
```

### 文本小组件对象的属性
<a name="CloudWatch-Dashboard-Properties-Text-Widget-Object"></a>

`text` 类型小组件的 `properties` 部分可以包含一个或两个参数。`markdown` 字段为必需，`transparent` 字段是可选的。

要详细了解 CloudWatch 文本小组件支持的 markdown 样式，请参阅 [Using Markdown in the Console](https://docs.amazonaws.cn/general/latest/gr/aws-markdown.html)。

**markdown**  
小组件要显示的文本。此参数仅适用于文本小组件。  
类型：字符串  
必需：是（当小组件 `type` 为 `text` 时）。

**background**  
指定文本小组件的背景是纯色还是透明。`transparent` 值将使小组件透明。默认值为 `solid`。  
类型：字符串  
必需：否

```
{
   "widgets":[
      {
         "type":"text",
         "x":0,
         "y":7,
         "width":3,
         "height":3,
         "properties":{
            "markdown":"Hello world",
            "background": "transparent"
         }
      }
   ]
}
```

## 日志小组件对象的属性
<a name="CloudWatch-Dashboard-Properties-Log-Widget-Object"></a>

`log` 类型小组件表示 CloudWatch Logs Insights 查询的结果。有关更多信息，请参阅[使用 CloudWatch Logs Insights 分析日志数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/logs/AnalyzingLogData.html)。

`log` 小组件可以在 `properties` 字段中包含以下字段。

**accountId**  
包含日志的 Amazon 账户ID（如果属于跨账户查询）。  
类型：字符串  
必需：否

**region**  
日志查询的区域。  
类型：字符串  
是否必需：是

**删除实例快照**  
小组件要显示的标题文本。  
类型：字符串  
必需：否

**query**  
包含 CloudWatch Logs Insights 查询函数。  
类型：字符串  
必需：是（当小组件 `type` 为 `log` 时）。  
`query` 字符串以要查询的日志组名称开头。必须在每个日志组名称前面加上 `SOURCE`。使用竖线字符（\|）来分隔多个日志组。  
在日志组列表之后再添加一个竖线字符，然后指定查询语法。使用 `\n|` 分隔查询语法中的每一行  
例如，以下行表示将查询 `service_log1` 和 `service_log2` 这两个日志组。该查询会显示存在故障的金丝雀。  

```
"query": "SOURCE 'service_log1' | SOURCE 'service_log2' |filter Fault > 0\n| fields Fault.Message\n| stats count(*) by Canary.Name, Fault.Message"
```

**查看**  
指定查询结果的显示方式。指定 `table` 以使用表格形式查看结果。指定 `timeSeries` 以将此指标显示为折线图。指定 `bar` 以将结果显示为柱状图。指定 `pie` 以将结果显示为饼图。  
如果省略此参数，则结果将显示为表格。  
类型：字符串  
必需：否（当小组件 `type` 为 `log` 时）。

```
{
    "widgets": [
        {
            "type": "log",
            "x": 12,
            "y": 24,
            "width": 12,
            "height": 6,
            "properties": {
                "region": "us-east-1",
                "title": "Errors (Application Log)",
                "query": "SOURCE 'application1.log' | SOURCE 'application2.log' | filter @message like \"[ERROR]\"\n| parse \"Error for [*] [*] due to: *\" canaryName1, canaryId1, cause1\n| parse \"Executor canary [*] *\" canaryName2, cause2\n| fields coalesce(cause1, cause2) as cause\n| fields coalesce(canaryName1, canaryName2) as canaryName\n| fields ispresent(cause) as isP\n| filter isP\n| stats count() as errCount by canaryName, substr(cause, 0, 130)\n| sort errCount DESC",
                "view": "table"
            }
        }
    ]
}
```

## 指标小组件对象的属性
<a name="CloudWatch-Dashboard-Properties-Metric-Widget-Object"></a>

`metric` 类型小组件可以在 `properties` 中包含以下字段：

**accountId**  
指定此小组件中所有指标的来源 Amazon 账户 ID。这对于包含来自多个账户的小组件的跨账户控制面板十分实用。有关更多信息，请参阅[跨账户跨区域 CloudWatch 控制台](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html)。  
如果省略此参数，则将默认使用当前账户。此参数仅适用于指标小组件。  
您还可以在 `metrics` 数组内的每个指标中使用一个 `accountId` 字段，来创建包含多个账户中指标的单个小组件。  
类型：字符串  
必需：否

**annotations**  
要在小组件中包含警报或注释，请指定一个 `annotations` 数组。有关该格式的更多信息，请参阅[控制面板小组件对象：注释属性](#CloudWatch-Dashboard-Properties-Annotation-Format)。此参数仅适用于指标小组件。  
类型：对象  
必需：仅当小组件 `type` 为 `metric` 并且未指定 `metrics` 时，警报注释才为必需。横向注释或纵向注释并非必需。

**liveData**  
指定 `true` 以在小组件中显示*实时数据*。实时数据是将在最后一分钟内发布的，尚未完全聚合的数据。有关更多信息，请参阅[使用实时数据](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/cloudwatch-live-data.html)。  
类型：布尔值  
必需：否

**legend**  
指定 `legend` 以确定图表上折线图例的显示位置。`legend` 字段包含另一个名为 `position` 的字段。`position` 的可能值为 `right`、`bottom` 和 `hidden`。  
例如，以下示例会使图例显示在图表的右侧。  

```
"legend": {
     "position": "right"
}
```
类型：对象  
必需：否

**metrics**  
指定一个 `metrics` 数组来包含一个或多个指标（不带警报）、Metrics Insights 查询、数学表达式或搜索表达式。一个 `metrics` 数组可以包含 1–500 个指标和表达式。此参数仅适用于指标小组件。有关 `metrics` 格式的更多信息，请参阅[指标小组件：数组中每个指标的格式](#CloudWatch-Dashboard-Properties-Metrics-Array-Format)。  
一个指标数组只能包含一个 Metrics Insights 查询。  
单个 `expression` 字段不能同时包含 Metrics Insights 查询和数学表达式，但可以将来自一个表达式的 Metrics Insights 查询返回结果用作数组中其他表达式的数学表达式输入。  
类型：数组  
必需：是（当小组件 `type` 为 `metric` 且未指定 `annotations` 时。

**时段**  
此小组件中所有指标的默认周期（以秒为单位）。周期是由图表上一个数据点表示的时间长度。可以在每个指标的定义中覆盖此默认值。此参数仅适用于指标小组件。默认值为 300。  
有效值：60 的任意倍数，最小值为 60。  
类型：整数  
必需：否

**region**  
指标的区域。  
类型：字符串  
是否必需：是

**迷你图**  
 指定 `true` 以在数字小组件下方显示迷你图功能。指定 `false` 以单独显示数字小组件。如果 view 不是 `singleValue`，则会忽略此参数。此参数仅适用于指标小组件。  
 类型：布尔值   
 必需：否 

**堆叠图**  
指定 `true` 以将图表显示为堆叠折线图，也可指定 `false` 以将其显示为单独的折线图。如果 `view` 为 `singleValue`，则会忽略此参数。此参数仅适用于指标小组件。  
类型：布尔值  
必需：否

**统计数据**  
要为数组中的每个指标显示的默认统计数据。可以在 `metrics` 数组内的每个单独指标定义中覆盖此默认值。此参数仅适用于指标小组件。  
有效值: `SampleCount` \| `Average` \| `Sum` \| `Minimum` \| `Maximum` \| `p{{??}}`  
类型：属于有效 CloudWatch 统计数据的字符串。  
必需：否

**表**  
在小组件中增加一个 `table` 部分，用于包含数据表相关更改。有关该格式的更多信息，请参阅[控制面板小组件对象：表属性](#CloudWatch-Dashboard-Properties-Table)。  
类型：对象  
必需：否

**timezone**  
用于在图表中显示时间的时区。格式为 \+ 或- 加四位数字。前两位数字表示比 UTC 提前或落后的小时数，最后两位数字表示分钟数。例如，`+0130` 表示比 UTC 提前 1 小时 30 分钟的时间。默认值为 `+0000`。  
类型：字符串  
必需：否

**删除实例快照**  
要显示的图表或数值标题。此参数仅适用于指标小组件。  
类型：字符串  
必需：否

**查看**  
 指定 `timeSeries` 以将此指标显示为折线图或堆叠面积图。指定 `singleValue` 以将此指标显示为数值图。指定 `gauge` 以将此指标显示为仪表图。指定 `bar` 以将此指标显示为柱状图。指定 `pie` 以将此指标显示为饼图。  
 如果指定 `gauge`，则必须在 `yAxis` 左侧设置 `min` 和 `max` 的值。
有效值: `timeSeries` \| `singleValue` \| `gauge` \| `bar` \| `pie` \| `table`  
类型：字符串  
必需：否

**yAxis**  
 图表 Y 轴左侧和右侧的最小值和最大值。此属性适用于所有用于绘制图表的指标，但覆盖此设置的特定指标除外。有关更多信息，请参阅 [控制面板小组件对象：yAxis 属性格式](#CloudWatch-Dashboard-Properties-YAxis-Properties-Format)。  
类型：yAxis 对象  
必需：否

**示例：堆叠面积小组件和仪表小组件**

```
{
    "widgets": [
{
   "type":"metric",
   "x":0,
   "y":0,
   "width":12,
   "height":6,
   "properties":{
      "metrics":[
         [
            "AWS/EC2",
            "CPUUtilization",
            "InstanceId",
            "i-012345"
         ],
         [
            "AWS/EC2",
            "NetworkIn",
            "InstanceId",
            "i-012345",
            {
               "yAxis":"right",
               "label":"NetworkIn",
               "period":3600,
               "stat":"Maximum"
            }
         ]
      ],
      "period":300,
      "stat":"Average",
      "region":"us-east-1",
      "timezone":"+0300",
      "title":"EC2 Instance CPU",
      "stacked":true,
      "view":"timeSeries",
      "liveData":false,
      "yAxis":{
         "left":{
            "min":0,
            "max":100
         },
         "right":{
            "min":50
         }
      },
      "annotations":{
         "horizontal":[
            {
               "visible":true,
               "color":"#9467bd",
               "label":"Critical range",
               "value":20,
               "fill":"above",
               "yAxis":"right"
            }
         ]
      }
   },
{
   "type": metric, 
   "x": 18,
   "y"; 60,
   "width": 6, 
   "height": 6,
   "properties": {
      "metrics": [
         [ 
         "AWSLogsShrinkRay",
         "disk_inodes_used",
         "path", 
         "/dev/shm",
         "InstanceId",
         "i-012345",
         "AutoScalingGroupName",
         "ShrinkRayExecutorResourceStack-Gamma-us-east-1-ASGuseast1ac48xlargeASGB9B53974-VTYXJUZGUAHV",
         "InstanceType",
         "c4.8xlarge",
         "device",
         "tmpfs",
         "fstype",
         "tmpfs" 
         ]
         ],
      "view": "gauge", 
      "title": "Disk Inodes Used"
      "region": "us-east-1",
      "yAxis": {
         "left": {
            "min": 0, 
            "max": 100,
         }        
       }
     }
   }
```

## 指标小组件：数组中每个指标的格式
<a name="CloudWatch-Dashboard-Properties-Metrics-Array-Format"></a>

`metrics` 数组中的每一项要么是单个指标，要么是一个数学表达式或搜索表达式。`metrics` 数组中的每个指标都采用以下格式：

```
[ {{Namespace}}, {{MetricName}}, [{{{DimensionName}},{{DimensionValue}}}...] {{{Rendering Properties Object}}} ]
```

`metrics` 数组中的每个表达式都采用以下格式：

```
[ {"expression" : "{{expression}}", ["label" : "{{label}}"] , ["id" : "{{id}}"] } ]
```

**accountId**  
指定此指标的来源 Amazon 账户 ID。这使您能够在跨账户控制面板上创建包含来自多个账户的指标的小组件。有关更多信息，请参阅[跨账户跨区域 CloudWatch 控制台](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html)。  
如果省略此参数，则将默认使用当前账户。此参数仅适用于指标小组件。  
类型：字符串  
必需：否

**命名空间**  
包含该指标的 Amazon 命名空间。如果 `metrics` 数组中有多个条目，则可以为第一个条目之后的每个条目指定 `"."`，从而使用与该数组中前一个指标相同的命名空间。  
类型：字符串  
是否必需：是

**MetricName**  
CloudWatch 指标的名称。如果 `metrics` 数组中有多个条目，则可以为第一个条目之后的每个条目指定 `"."`，从而使用与该数组中前一个指标相同的名称。  
类型：字符串  
必需：是（对于单个指标）

**expression**  
Metrics Insights 查询、数学表达式或搜索表达式（如果属于表达式而非单个指标）。  
在使用双引号进行精确匹配的搜索表达式中，必须使用反斜杠对每个双引号进行转义。  
有关 Metrics Insights 查询语法的更多信息，请参阅 [Metrics Insights 查询组件和语法](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/cloudwatch-metrics-insights-querylanguage.html)。  
有关数学表达式或搜索表达式的更多信息，请参阅《Amazon CloudWatch 用户指南》中的[使用指标数学](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/using-metric-math.html)或[在图表中使用搜索表达式](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/using-search-expressions.html)。  
类型：字符串  
必填：是（对于表达式）  
Metrics Insights 查询表达式示例：  

```
[ { "expression": "SELECT MAX(CPUUtilization) FROM SCHEMA(\"AWS/EC2\", InstanceId) GROUP BY InstanceId LIMIT 10", "label": "View the 10 max CPU Utilization", "id": "q1" } ]
```

**DimensionName**  
用于进一步细化要显示的数据的维度名称。如果 `metrics` 数组中有多个条目，则可以为第一个条目之后的每个条目指定 `"."`，从而使用与该数组中前一个指标所指定对应维度的相同维度名称。您可以为一个指标指定 0 个维度，也可以在该指标支持的维度数量范围内指定多个维度。  
类型：字符串  
必需：否

**DimensionValue**  
要用于该指标维度的值。如果有相应的维度名称，则为必需。  
类型：字符串  
必需：否

**id**  
该时间序列的 ID。此 ID 可用作数学表达式的一部分。ID 必须以小写字母开头。  
类型：字符串  
必需：否

**label**  
要在图表中显示的标签，用于代表此时间序列。  
类型：字符串  
必需：否

**region**  
指标的区域。此参数仅适用于指标小组件。如果省略此参数，则将默认使用当前区域。  
类型：字符串  
必需：否

**Rendering Properties Object**  
指定用于此特定指标的渲染属性，覆盖为整个小组件指定的值。有关该格式的更多信息，请参阅[控制面板小组件对象：渲染属性对象格式](#CloudWatch-Dashboard-Properties-Rendering-Object-Format)。  
类型：指标渲染属性对象  
必需：否

```
// The simplest example, a metric with no dimensions
        [ "AWS/EC2", "CPUUtilization" ]
        
 // A metric with a single dimension
        [ "AWS/EC2", "CPUUtilization", "InstanceId", "i-012345" ]
        
 // A metric with a single dimension and rendering properties
        [ "AWS/EC2", "DiskReadBytes", "InstanceId", "i-xyz", { "yAxis": "right"} ]
       
 // The following example graphs the DiskReadBytes metric for three instances.
        [ "AWS/EC2", "DiskReadBytes", "InstanceId", "i-xyz" ],
        [ ".", ".", ".", "i-abc" ],
        [ ".", ".", ".", "i-123" ]
       
 // The following example includes two metrics and a math expression to sum them.
        [ "AWS/EC2", "DiskReadBytes", "InstanceId", "i-123",{ "id": "m1" } ],
        [ ".", ".", ".", "i-abc", { "id": "m2" } ],
        [ { "expression": "SUM(METRICS())", "label": "Sum of DiskReadbytes", "id": "e3" } ]
       
  // The following example is a search expression showing the EC2 CPUUtilization for each instance in the Region.
        [ { "expression": "SEARCH('{AWS/EC2,InstanceId} MetricName=\"CPUUtilization\"', 'Average', 300)", "id": "e1" } ],
```

**Topics**
+ [控制面板小组件对象：渲染属性对象格式](#CloudWatch-Dashboard-Properties-Rendering-Object-Format)
+ [控制面板小组件对象：注释属性](#CloudWatch-Dashboard-Properties-Annotation-Format)
+ [控制面板小组件对象：yAxis 属性格式](#CloudWatch-Dashboard-Properties-YAxis-Properties-Format)
+ [控制面板小组件对象：表属性](#CloudWatch-Dashboard-Properties-Table)

### 控制面板小组件对象：渲染属性对象格式
<a name="CloudWatch-Dashboard-Properties-Rendering-Object-Format"></a>

`metrics` 数组中的每个指标都可以选择使用自定义渲染属性，来覆盖 `widget` 对象的 `yAxis` 参数中指定的默认渲染属性。本节介绍每个指标的自定义渲染属性格式。

**color**  
用于此指标的六位数 HTML 十六进制颜色代码。  
类型：字符串  
必需：否

**label**  
要在图表图例中为此指标显示的标签。如果未指定，则会为该指标提供一个自动生成的标签，用于将其与小组件中的其他指标区分开来。  
类型：字符串  
必需：否

**时段**  
此指标的周期（以秒为单位）。周期是由图表上一个数据点表示的时间长度。  
有效值：60 的任意倍数，最小值为 60。  
类型：整数  
必需：否

**统计数据**  
此指标的统计数据（如果与数组中其他指标使用的统计数据不同）。如果您未在数组或指标级别指定统计数据，CloudWatch 将会默认使用*平均值*。  
有效值: `SampleCount` \| `Average` \| `Sum` \| `Minimum` \| `Maximum` \| `p{{??}}`  
类型：属于有效 CloudWatch 统计数据的字符串。  
必需：否

**visible**  
将此设置为 `true` 以在图表中显示该指标，或设置为 `false` 以将其隐藏。默认值为 `true`。  
类型：布尔值  
必需：否

**yAxis**  
在图表上显示该指标的 y 轴位置。默认值为 `left`。  
有效值：`left` \| `right`  
类型：字符串  
必需：否

```
       
 // The third metric has its own rendering properties, overriding those of the rest of the widget.
        [ "AWS/EC2", "DiskReadBytes", "InstanceId", "i-xyz" ],
        [ ".", ".", ".", "i-abc" ],
        [ ".", ".", ".", "i-123", { "label":"Instance i-123", "yAxis": "right"}  ]
```

### 控制面板小组件对象：注释属性
<a name="CloudWatch-Dashboard-Properties-Annotation-Format"></a>

注释包括警报、横向注释和纵向注释。单个指标小组件最多可以包含一个警报，也可以包含一个或多个横向注释或纵向注释。单个小组件不能同时具有警报以及横向注释或纵向注释。

#### 警报注释
<a name="Alarm-Annotations"></a>

如果您指定了某个警报注释，则不能同时在同一小组件中指定 `metrics` 数组。

**警报**  
警报的 Amazon 资源名称（ARN）。  
类型：字符串数组。数组中可以包含 0–1 个字符串。  
必需：仅在未列出任何指标时。

```
                
"annotations": {
   "alarms": [ "{{arn1}}" ]
}
```

#### 横向注释
<a name="Horizontal-Annotations"></a>

**horizontal**  
横向注释数组。横向注释具有多种阴影填充选项，包括注释行上阴影、注释行下阴影，以及在单个带状注释中的两个链接注释行之间显示的阴影“带”。数组中属于单个注释，而不是带状注释的每个横向注释都采用以下格式：  

```
{{{value}}, {{label}}, {{color}}, {{fill}}, {{yAxis}}, {{visible}}}
```
属于带状注释的每个横向注释都采用以下格式：  

```
[ {{{value}}, {{label}}, {{color}}, {{yAxis}}, {{visible}}}, {{{value}}, {{label}}} ]
```

**值**  
图表中要显示横向注释行的指标值。在阴影带注释中，Value 的两个值用于定义阴影带的上边缘和下边缘。  
使用横向注释的图表将会缩放，从而确保所有可见的横向注释都在图表中显示。  
类型：浮点值  
是否必需：是

**label**  
在图表中注释旁显示的字符串。  
类型：字符串  
必需：否

**color**  
用于注释的六位数 HTML 十六进制颜色代码。该颜色既用于注释行，也用于阴影填充。  
类型：字符串  
必需：否

**fill**  
如何在注释中使用阴影填充。有效值为 `above`（注释上阴影）、`below`（注释下阴影）和 `none`（无阴影）。如果省略 `fill`，则为无阴影。  
唯一的例外是有阴影带的注释。此类注释会在这两个值之间始终填充阴影，`fill` 的任何值都将被忽略。  
类型：字符串  
必需：否

**visible**  
将此设置为 `true` 以在图表中显示注释，或设置为 `false` 以隐藏注释。默认值为 `true`。  
类型：布尔值  
必需：否

**yAxis**  
如果图表包含多个指标，则指定 `Value` 中的数字是否表示与左侧 Y 轴或右侧 Y 轴关联的指标。有效值为 `right` 和 `left`。  
类型：字符串  
必需：否

```
// A single horizontal annotation with fill shading above the annotation line, based on the metric associated with the right Y-axis
                
"annotations": {
     "horizontal": [
         {
              "visible":true,
              "color":"#9467bd",
              "label":"Critical range",
              "value":20,
              "fill":"above",
              "yAxis":"right"
         }
    ]
}

// A band annotation. Each value has a label, but other parameters for the band are specified only with the first number

"annotations": {
    "horizontal": [
        [
            {
                "label": "Band top",
                "value": 200,
                "color": "#9467bd",
                "visible": true,
                "yAxis": "right"
            },
            {
                "value": 95.5,
                "label": "Band bottom"
            }
        ]
    ]
}

// Three annotations on a graph. The first one is a band annotation. The final one is hidden.

"annotations": {
    "horizontal": [
        [
            {
                "label": "Band top",
                "value": 200,
                "color": "#9467bd",
                "visible": true,
                "yAxis": "right"
            },
            {
                "value": 95.5,
                "label": "Band bottom"
            }
        ],
        {
            "visible": true,
            "color": "#9467bd",
            "label": "Label for this annotation",
            "value": 20,
            "fill": "below",
            "yAxis": "right"
        },
        {
            "visible": false,
            "color": "#aaa",
            "label": "Hidden annotation",
            "value": 150
        }
    ]
}
```

#### 纵向注释
<a name="Vertical-Annotations"></a>

**vertical**  
纵向注释数组。对于每个纵向注释，您可以选择在注释之前或之后填充阴影，也可以选择在两个链接纵向行之间填充阴影以用作单个带状注释。数组中属于单个注释，而不是带状注释的每个纵向注释都采用以下格式：  

```
{{{value}}, {{label}}, {{color}}, {{fill}}, {{visible}}}
```
属于带状注释的每个纵向注释都采用以下格式：  

```
[ {{{value}}, {{label}}, {{color}}, {{visible}}}, {{{value}}, {{label}}} ]
```

**值**  
图表中要显示纵向注释行的日期和时间。在阴影带注释中，Value 的两个值用于定义阴影带的起始和结束边缘。  
使用纵向注释的图表将会缩放，从而确保所有可见的纵向注释都在图表中显示。  
这是使用 ISO 8601 格式的字符串定义的。有关更多信息，请参阅 [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601)。  
类型：字符串  
是否必需：是

**label**  
在图表中注释旁显示的字符串。  
类型：字符串  
必需：否

**color**  
用于注释的六位数 HTML 十六进制颜色代码。该颜色既用于注释行，也用于阴影填充。  
类型：字符串  
必需：否

**fill**  
如何在注释中使用阴影填充。有效值为 `before`（注释前阴影）、`after`（注释后阴影）和 `none`（无阴影）。如果省略 `fill`，则为无阴影。  
唯一的例外是有阴影带的注释。此类注释会在这两个值之间始终填充阴影，`fill` 的任何值都将被忽略。  
类型：字符串  
必需：否

**visible**  
将此设置为 `true` 以在图表中显示注释，或设置为 `false` 以隐藏注释。默认值为 `true`。  
类型：布尔值  
必需：否

```
// A single vertical annotation with fill shading after the annotation line
                    
"annotations": {
    "vertical": [
        {
            "visible": true,
            "color": "#9467bd",
            "label": "Bug fix deployed",
            "value": "2018-08-28T15:25:26Z",
            "fill": "after"
        }
    ]
}	


// A band vertical annotation. Each annotation line has a label, but other parameters for the band are specified only with the first value

"annotations": {
    "vertical": [
        [
            {
                "label": "Band start",
                "value": "2018-08-27T15:25:26Z",
                "color": "#9467bd",
                "visible": true
            },
            {
                "value": "2018-08-28T15:25:26Z",
                "label": "Band end"
            }
        ]
    ]
}
```

### 控制面板小组件对象：yAxis 属性格式
<a name="CloudWatch-Dashboard-Properties-YAxis-Properties-Format"></a>

定义图表的 Y 轴设置。这包括最大值和最小值、轴标签以及轴是否显示单位等设置。在 `widget` 对象中设置此参数会影响小组件中的所有指标。要为特定指标覆盖小组件设置，请在 `metrics` 数组中为该指标进行设置。

```
{
  left: {
    min: 0,
    max: 100
  },
  right: {
    min: 0
  }
}
```

**左**  
左侧 Y 轴的可选设置。  
类型：YAxis 对象  
必需：否

**右**  
右侧 Y 轴的可选设置。  
类型：YAxis 对象  
必需：否

每个 `left` 和 `right` 对象都可以包含以下参数：

**label**  
此 Y 轴的标签  
类型：字符串  
必需：否

**min**  
此 Y 轴的最小值  
类型：浮点值  
必需：否

**max**  
此 Y 轴的最大值  
类型：浮点值  
必需：否

**showUnits**  
确定是否显示与此轴关联的指标单位。默认值为 true。  
类型：布尔值  
必需：否

### 控制面板小组件对象：表属性
<a name="CloudWatch-Dashboard-Properties-Table"></a>

如果为指标小组件指定了 `table`，则可以包含与摘要列、数据点列和表布局可见性相关的视觉设置。这些属性仅在小组件视图类型为 `table` 时生效，并且不会更改其他视图类型（如果包含）。使用表格小组件时 `table` 属性并非必需。

**layout**  
使用此字段来转换表，使数据点纵向或横向延伸。默认值为 `horizontal`。  
有效值：`vertical` \| `horizontal`  
类型：字符串  
必需：否

**stickySummary**  
将此设置为 `true`，可为表中包含的摘要列启用粘性，从而可以在浏览数据列的同时始终将摘要列放在视口中。默认值为 `false`。  
无论您在此字段中做何选择，小组件标签始终会启用粘性。  
有效值：`true` \| `false`  
类型：布尔值  
必需：否

**showTimeSeriesData**  
如果您只想显示标签和摘要列，同时隐藏其他数据列，请将此设置为 `false`。  
默认值为 `true`。  
有效值：`true` \| `false`  
类型：布尔值  
必需：否

**summaryColumns**  
摘要列是表格小组件中引入的新属性。这些列是当前表格摘要的特定子集。例如，`Sum` 摘要是相应行中所有渲染数据点的总和。摘要列的概念与所有 CloudWatch 指标统计数据均不同。  
默认值为 `[“MIN“, "MAX","SUM", "AVG"]`  
有效值: `"MIN"` \| `"MAX"` \| `"SUM"` \| `"AVG"`  
类型：数组  
必需：否

例如，以下 JSON 创建了一个表，来显示表中每个指标的最小值和最大值。

```
"table": {
    "summaryColumns": ["MIN", "MAX"],
    "layout": "vertical",
    "stickySummary": true,
    "showTimeSeriesData": false,
    },
```

## 指标资源管理器小组件对象的属性
<a name="CloudWatch-Dashboard-Properties-Metric-Explorer-Object"></a>

`explorer` 类型小组件表示指标资源管理器小组件。有关更多信息，请参阅[使用指标资源管理器按标签和属性监控资源](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch-Metrics-Explorer.html) 

此外还可以使用 Amazon CloudFormation 将指标资源管理器小组件添加到控制面板。有关更多信息，请参阅 [AWS::CloudWatch::Dashboard](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-dashboard.html)。

此小组件类型可以在小组件 `properties` 中包含以下字段：

**aggregateBy**  
用来指定如何聚合来自多个资源的指标的对象。此对象中 `key` 字段的有效值是标签键和资源属性键。此对象包含以下字段。  
+ **key**：用于聚合指标的标签或资源属性键。
+ **func**：要使用的聚合函数。有效值为 `AVG` \| `MIN` \| `MAX` \| `STDDEV` \| `SUM`
类型：对象  
必需：否

**labels**  
标签或资源属性数组，用于确定小组件中要显示的指标。  
如果您指定其他键，则将仅显示与所有键/值对匹配的资源。如果您为单个键指定了多个值，则会显示与该键的任意值匹配的资源。  
+ **key**：要用于筛选的标签或资源属性。

  对于 `key`，所有标签键均可有效指定。对于 `key`，以下 EC2 和 Lambda 资源属性也属有效：
  + EC2：

    `Architecture`, `Hypervisor`, `CoreCount`, `ImageId`, `InstanceId`, `InstanceLifecycle`, `InstanceType`, `InstanceFamily`, `InstanceSize`, `Affinity`, `AvailabilityZone`, `Tenancy`, `Platform`, `RootDeviceType SecurityGroups, State, SubnetId, VirtualizationType, and VpcId `
  + Lambda：

     `FunctionName`、`Runtime`、`Language`、`MemorySize`、`Version`、`SecurityGroupIds`、`SubnetIds`、`SubnetIdCount`、`VpcId` 和 `Timeout`
+ **value**：（可选）用于筛选的标签或资源属性值。如果省略参数，则会显示与该标签或资源属性的所有值匹配的指标。
类型：对象  
是否必需：是

**metrics**  
指定包含一个或多个指标的 `metrics` 数组。一个 `metrics` 数组可以包含 1–100 个指标。数组中的每个对象必须包含以下字段。  
+ **metricName**：指标的名称。
+ **resourceType**：发布指标的资源类型，以 Amazon CloudFormation 使用的格式描述。例如，`AWS::EC2::Instance` 或 `AWS::Lambda::Function`。

  小组件中所有指标的 `resourceType` 值必须相同。

  有关有效值的完整列表，请参阅[指标资源管理器小组件对象的有效 resourceType 值](#CloudWatch-Dashboard-Properties-Metric-Explorer-resourceType)。
+ **stat**：此指标的统计数据（如果与数组中其他指标使用的统计数据不同）。如果您未在数组或指标级别指定统计数据，CloudWatch 将会默认使用*平均值*。

  有效值: `SampleCount` \| `Average` \| `Sum` \| `Minimum` \| `Maximum` \| `p{{??}}`
类型： 对象数组  
是否必需：是

**时段**  
此小组件中所有指标的默认周期（以秒为单位）。周期是由图表上一个数据点表示的时间长度。默认值为 300。  
有效值：60 的任意倍数，最小值为 60。  
类型：整数  
必需：否

**splitBy**  
指定如何将来自多个资源的指标分拆为图表上的不同折线或不同的图表。有效值为标签键和资源属性键。  
类型：字符串  
必需：否

**删除实例快照**  
要为小组件显示的标题。默认值为 `Explorer`。  
类型：字符串  
必需：否

**widgetOptions**  
用于指定如何在控制面板上显示该小组件的对象。其中可以包含以下字段。  
+ **legend**：

  确定每个图表的图例显示位置。`legend` 字段包含另一个名为 `position` 的字段。`position` 的可能值为 `right`、`bottom` 和 `hidden`。

  例如，以下示例会使图例显示在图表的右侧。

  ```
  "legend": {
       "position": "right"
  }
  ```
+ **rowsPerPage**：

  指定小组件中每页将显示的图表行数。
+ **stacked**：

  指定 `true` 以将图表显示为堆叠面积图，也可指定 `false` 以将其显示为单独的折线图。
+ **view**：

  指定每个图表的显示方式。指定 `timeSeries` 以将此指标显示为折线图。指定 `bar` 以将结果显示为柱状图。指定 `pie` 以将结果显示为饼图。默认值为 `timeSeries`。
+ **widgetsPerRow**：

  指定指标资源管理器小组件中每行要显示的图表数量。
类型：对象  
必需：否

**示例**

以下示例将为账户中每个正在运行的 EC2 实例显示三个指标，其中小组件中的图表按可用区拆分。在每个图表中，指标按实例类型汇总。

```
{
    "widgets": [
        {
            "type": "explorer",
            "width": 24,
            "height": 15,
            "x": 0,
            "y": 0,
            "properties": {
                "metrics": [
                    {
                        "metricName": "CPUUtilization",
                        "resourceType": "AWS::EC2::Instance",
                        "stat": "Average"
                    },
                    {
                        "metricName": "NetworkIn",
                        "resourceType": "AWS::EC2::Instance",
                        "stat": "Average"
                    },
                    {
                        "metricName": "NetworkOut",
                        "resourceType": "AWS::EC2::Instance",
                        "stat": "Average"
                    }
                ],
                "aggregateBy": {
                    "key": "InstanceType",
                    "func": "MAX"
                },
                "labels": [
                    {
                        "key": "State",
                        "value": "running"
                    }
                ],
                "widgetOptions": {
                    "legend": {
                        "position": "bottom"
                    },
                    "view": "timeSeries",
                    "rowsPerPage": 8,
                    "widgetsPerRow": 2
                },
                "period": 300,
                "splitBy": "AvailabilityZone",
                "title": "Running EC2 Instances by AZ"
            }
        }
    ]
}
```

### 指标资源管理器小组件对象的有效 resourceType 值
<a name="CloudWatch-Dashboard-Properties-Metric-Explorer-resourceType"></a>

指标资源管理器小组件 `metrics` 部分中 `resourceType`字段的有效值如下：
+ `AWS::AmazonMQ::Broker`
+ `AWS::ApiGateway::RestApi`
+ `AWS::AppStream::Fleet`
+ `AWS::AppSync::GraphQLApi`
+ `AWS::CloudFront::Distribution`
+ `AWS::CodeBuild::Project`
+ `AWS::Datasync::Agent`
+ `AWS::Datasync::Task`
+ `AWS::DMS::ReplicationInstance`
+ `AWS::DynamoDB::Table`
+ `AWS::EC2::CapacityReservation`
+ `AWS::EC2::Instance`
+ `AWS::EC2::NatGateway`
+ `AWS::EC2::TransitGateway`
+ `AWS::EC2::Volume`
+ `AWS::EC2::VPNConnection`
+ `AWS::ECS::Cluster`
+ `AWS::EFS::FileSystem`
+ `AWS::ElastiCache::CacheCluster`
+ `AWS::ElastiCache::ReplicationGroup`
+ `AWS::ElasticBeanstalk::Environment`
+ `AWS::ElasticLoadBalancing::LoadBalancer`
+ `AWS::ElasticLoadBalancingV2::LoadBalancer/ApplicationELB`
+ `AWS::ElasticLoadBalancingV2::LoadBalancer/GatewayELB`
+ `AWS::ElasticLoadBalancingV2::LoadBalancer/NetworkELB`
+ `AWS::ElasticLoadBalancingV2::TargetGroup`
+ `AWS::EMR::Cluster`
+ `AWS::Events::Rule`
+ `AWS::FSx::FileSystem`
+ `AWS::GameLift::Fleet`
+ `AWS::GlobalAccelerator::Accelerator`
+ `AWS::IoT::TopicRule`
+ `AWS::IoT1Click::Device`
+ `AWS::IoTAnalytics::Channel`
+ `AWS::IoTAnalytics::Dataset`
+ `AWS::IoTAnalytics::Datastore`
+ `AWS::IoTAnalytics::Pipeline`
+ `AWS::Kafka::Cluster`
+ `AWS::Kinesis::Stream`
+ `AWS::KinesisAnalytics::Application`
+ `AWS::KinesisFirehose::DeliveryStream`
+ `AWS::KinesisVideo::Stream`
+ `AWS::KMS::Key`
+ `AWS::Lambda::Function`
+ `AWS::Logs::LogGroup`
+ `AWS::MediaPackage::Channel`
+ `AWS::MediaStore::Container`
+ `AWS::OpsWorks::Instance`
+ `AWS::OpsWorks::Layer`
+ `AWS::OpsWorks::Stack`
+ `AWS::QLDB::Ledger`
+ `AWS::RDS::DBInstance`
+ `AWS::Redshift::Cluster`
+ `AWS::RoboMaker::SimulationJob`
+ `AWS::Route53::HealthCheck`
+ `AWS::Route53Resolver::ResolverEndpoint`
+ `AWS::S3::Bucket`
+ `AWS::SageMaker::Endpoint`
+ `AWS::ServiceCatalog::CloudFormationProduct`
+ `AWS::SES::ConfigurationSet`
+ `AWS::SNS::Topic`
+ `AWS::SQS::Queue`
+ `AWS::StepFunctions::Activity`
+ `AWS::StepFunctions::StateMachine`
+ `AWS::StorageGateway::Gateway`
+ `AWS::Synthetics::Canary`
+ `AWS::Transfer::Server`
+ `AWS::WorkMail::Organization`
+ `AWS::WorkSpaces::Workspace`

## 警报状态小组件对象的属性
<a name="CloudWatch-Dashboard-Properties-Alarm-Widget-Object"></a>

`alarm` 类型小组件可以在 `properties` 中包含以下字段。

**警报**  
要在小组件中包含的警报 ARN 数组。该数组可以包含 1-100 个 ARN。  
类型：字符串数组  
必需：是（当小组件 `type` 为 `alarm` 时）。

**sortBy**  
指定如何对小组件中的警报进行排序。  
选择 `default` 以按警报名称的字母顺序进行排序。  
选择 `stateUpdatedTimestamp` 以首先按警报状态进行排序，首先为 ALARM 状态的警报，然后为 INSUFFICUNGENT\_DATA 状态的警报，最后是 OK 状态的警报。然后在每个组别中，将警报按最后状态更改时间进行排序，状态更改时间最近的警报列在最前。  
选择 `timestamp` 以按警报最后状态更改时间进行排序，而无论当前警报状态为何。状态更改时间最近的警报列在最前。  
如果省略此字段，则警报将按字母顺序排序。  
类型：字符串  
有效值：default \| stateUpdatedTimestamp \| timestamp  
必需：否

**states**  
使用此字段来筛选小组件中显示的警报列表，从而仅显示当前处于指定状态的警报。您可以在此字段的值中指定一个或多个警报状态。您可以指定的警报状态包括 `ALARM`、`INSUFFICIENT_DATA` 和 `OK`。  
如果省略此字段或指定空数组，则会显示 `alarms` 中指定的所有警报。  
类型：字符串数组  
必需：否

**删除实例快照**  
小组件要显示的标题文本。  
类型：字符串  
必需：否

以下示例警报状态小组件会显示四个按名称指定的警报，无论其当前状态为何：

```
{
    "type": "alarm",
    "x": 0,
    "y": 0,
    "width": 12,
    "height": 6,
    "properties": {
        "alarms": [
            "arn:aws:cloudwatch:us-east-1:012345678901:alarm:EC2FrontendCPU",
            "arn:aws:cloudwatch:us-east-1:012345678901:alarm:EC2BackendCPU",
            "arn:aws:cloudwatch:eu-west-1:987654321098:alarm:EC2FrontendCPU",
            "arn:aws:cloudwatch:eu-west-1:987654321098:alarm:EC2BackendCPU"
        ],
        "sortBy": "stateUpdatedTimestamp",
        "title": "All EC2 CPU alarms"
    }
}
```

以下示例小组件指定了相同的四个警报，但仅显示当前处于 ALARM 或 INSUFFICIENT\_DATA 状态的警报：

```
{
    "type": "alarm",
    "x": 0,
    "y": 0,
    "width": 12,
    "height": 6,
    "properties": {
        "alarms": [
            "arn:aws:cloudwatch:us-east-1:012345678901:alarm:EC2FrontendCPU",
            "arn:aws:cloudwatch:us-east-1:012345678901:alarm:EC2BackendCPU",
            "arn:aws:cloudwatch:eu-west-1:987654321098:alarm:EC2FrontendCPU",
            "arn:aws:cloudwatch:eu-west-1:987654321098:alarm:EC2BackendCPU"
        ],
        "sortBy": "stateUpdatedTimestamp",
        "states": [
            "ALARM",
            "INSUFFICIENT_DATA"
        ],
        "title": "EC2 alarms that are not currently OK"
    }
}
```