使用 Amazon CLI 创建控制面板 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon CLI 创建控制面板

本节介绍了如何使用 create-dashboard 命令创建自定义控制面板或“要点”控制面板。

当使用 Amazon CLI 时,请记住您的命令在为您的配置文件配置的 Amazon Web Services 区域中运行。如果您想要在不同的区域中运行命令,可以为配置文件更改默认区域,或者与命令一起使用 --region 参数。

CloudTrail 会在手动或计划刷新期间运行查询来填充控制面板的小组件。必须向 CloudTrail 授予权限,才能对与控制面板小组件关联的每个事件数据存储运行 StartQuery 操作。要提供权限,请运行 put-resource-policy 命令来将基于资源的策略附加到每个事件数据存储,或者在 CloudTrail 控制台上编辑事件数据存储的策略。有关策略示例,请参阅 示例:允许 CloudTrail 运行查询以刷新控制面板

要设置刷新计划,CloudTrail 必须获得相应权限才能运行 StartDashboardRefresh 操作来代表您刷新控制面板。要提供权限,请运行 put-resource-policy 操作来将基于资源的策略附加到控制面板,或者在 CloudTrail 控制台上编辑控制面板的策略。有关策略示例,请参阅 控制面板的基于资源的策略示例

使用 Amazon CLI 创建自定义控制面板

以下过程介绍了如何创建自定义控制面板、如何将所需的基于资源的策略附加到事件数据存储和控制面板,以及如何更新控制面板以设置和启用刷新计划。

  1. 运行 create-dashboard 来创建控制面板。

    创建自定义控制面板时,您可以传入一个最多包含 10 个小组件的数组。小组件以图形方式呈现查询的结果。每个小组件都包含 ViewPropertiesQueryStatementQueryParameters

    • ViewProperties – 指定视图类型的属性。有关更多信息,请参阅 查看小组件的属性

    • QueryStatement – 当控制面板刷新时 CloudTrail 运行的查询。只要您的账户中存在事件数据存储,您就可以跨多个事件数据存储进行查询。

    • QueryParameters – 自定义控制面板支持以下 QueryParameters 值:$Period$$StartTime$$EndTime$。要使用 QueryParameters,请在要替换参数的 QueryStatement 放置 ?。CloudTrail 会在查询运行时自动填充参数。

    以下示例创建了一个包含四个小组件(每种视图类型一个)的控制面板。

    注意

    在此示例中,? 用单引号括起来,因为它与 eventTime 一起使用。根据您运行的操作系统,您可能需要用转义引号将单引号括起来。有关更多信息,请参阅在 Amazon CLI 中将引号和文本与字符串结合使用

    aws cloudtrail create-dashboard --name AccountActivityDashboard \ --widgets '[ { "ViewProperties": { "Height": "2", "Width": "4", "Title": "TopErrors", "View": "Table" }, "QueryStatement": "SELECT errorCode, COUNT(*) AS eventCount FROM eds WHERE eventTime > '?' AND eventTime < '?' AND (errorCode is not null) GROUP BY errorCode ORDER BY eventCount DESC LIMIT 100", "QueryParameters": ["$StartTime$", "$EndTime$"] }, { "ViewProperties": { "Height": "2", "Width": "4", "Title": "MostActiveRegions", "View": "PieChart", "LabelColumn": "awsRegion", "ValueColumn": "eventCount", "FilterColumn": "awsRegion" }, "QueryStatement": "SELECT awsRegion, COUNT(*) AS eventCount FROM eds where eventTime > '?' and eventTime < '?' GROUP BY awsRegion ORDER BY eventCount LIMIT 100", "QueryParameters": ["$StartTime$", "$EndTime$"] }, { "ViewProperties": { "Height": "2", "Width": "4", "Title": "AccountActivity", "View": "LineChart", "YAxisColumn": "eventCount", "XAxisColumn": "eventDate", "FilterColumn": "readOnly" }, "QueryStatement": "SELECT DATE_TRUNC('?', eventTime) AS eventDate, IF(readOnly, 'read', 'write') AS readOnly, COUNT(*) as eventCount FROM eds WHERE eventTime > '?' AND eventTime < '?' GROUP BY DATE_TRUNC('?', eventTime), readOnly ORDER BY DATE_TRUNC('?', eventTime), readOnly", "QueryParameters": ["$Period$", "$StartTime$", "$EndTime$", "$Period$", "$Period$"] }, { "ViewProperties": { "Height": "2", "Width": "4", "Title": "TopServices", "View": "BarChart", "LabelColumn": "service", "ValueColumn": "eventCount", "FilterColumn": "service", "Orientation": "Horizontal" }, "QueryStatement": "SELECT REPLACE(eventSource, '.amazonaws.com') AS service, COUNT(*) AS eventCount FROM eds WHERE eventTime > '?' AND eventTime < '?' GROUP BY eventSource ORDER BY eventCount DESC LIMIT 100", "QueryParameters": ["$StartTime$", "$EndTime$"] } ]'
  2. 创建一个单独的文件,其中包含小组件的 QueryStatement 中包含的每个事件数据存储所需的资源策略。使用以下示例策略语句将文件命名为 policy.json

    123456789012 替换为您的账户 ID,并将 arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDashboard 替换为控制面板的 ARN。

    有关控制面板的基于资源的策略的更多信息,请参阅示例:允许 CloudTrail 运行查询以刷新控制面板

  3. 运行 put-resource-policy 命令来附加策略。您还可以在 CloudTrail 控制台上更新事件数据存储的基于资源的策略。

    以下示例会将基于资源的策略附加到事件数据存储。

    aws cloudtrail put-resource-policy \ --resource-arn eds-arn \ --resource-policy file://policy.json
  4. 运行 put-resource-policy 命令将基于资源的策略附加到控制面板。有关策略示例,请参阅 控制面板的基于资源的策略示例

    以下示例会将基于资源的策略附加到控制面板。将 account-id 替换为您的账户 ID,并将 dashboard-arn 替换为控制面板的 ARN。

    aws cloudtrail put-resource-policy \ --resource-arn dashboard-arn \ --resource-policy '{"Version": "2012-10-17", "Statement": [{"Sid": "DashboardPolicy", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "cloudtrail:StartDashboardRefresh", "Condition": { "StringEquals": { "AWS:SourceArn": "dashboard-arn", "AWS:SourceAccount": "account-id"}}}]}'
  5. 运行 update-dashboard 命令通过配置 --refresh-schedule 参数来设置和启用刷新计划。

    --refresh-schedule 由以下可选参数组成:

    • Frequency – 计划的 UnitValue

      对于自定义控制面板,单位可以是 HOURSDAYS

      对于自定义控制面板,当单位为 HOURS 时,以下值有效:161224

      对于自定义控制面板,当单位为 DAYS 时,唯一有效值为 1

    • Status – 指定是否启用刷新计划。请将值设置为 ENABLED 以启用刷新计划,或将值设置为 DISABLED 以关闭刷新计划。

    • TimeOfDay – 一天中运行计划的时间 (UTC);对于仅每小时,则指分钟;默认值为 00:00。

    以下示例设置了每六个小时刷新计划并启用该计划。

    aws cloudtrail update-dashboard --dashboard-id AccountActivityDashboard \ --refresh-schedule '{"Frequency": {"Unit": "HOURS", "Value": 6}, "Status": "ENABLED"}'

使用 Amazon CLI 启用“要点”控制面板

以下过程介绍了如何创建“要点”控制面板、如何将所需的基于资源的策略附加到事件数据存储和控制面板,以及如何更新控制面板以设置和启用刷新计划。

  1. 运行 create-dashboard 命令来创建“要点”控制面板。要创建此控制面板,--name 必须是 AWSCloudTrail-Highlights

    aws cloudtrail create-dashboard --name AWSCloudTrail-Highlights
  2. 对于您账户中的每个事件数据存储,请运行 put-resource-policy 命令来将基于资源的策略附加到事件数据存储。您还可以在 CloudTrail 控制台上更新事件数据存储的基于资源的策略。有关策略示例,请参阅 示例:允许 CloudTrail 运行查询以刷新控制面板

    以下示例会将基于资源的策略附加到事件数据存储。请将 account-id 替换为您的账户 ID,将 eds-arn 替换为事件数据存储的 ARN,并将 dashboard-arn 替换为控制面板的 ARN。

    aws cloudtrail put-resource-policy \ --resource-arn eds-arn \ --resource-policy '{"Version": "2012-10-17", "Statement": [{"Sid": "EDSPolicy", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "cloudtrail:StartQuery", "Condition": { "StringEquals": { "AWS:SourceArn": "dashboard-arn", "AWS:SourceAccount": "account-id"}}} ]}'
  3. 运行 put-resource-policy 命令将基于资源的策略附加到控制面板。有关策略示例,请参阅 控制面板的基于资源的策略示例

    以下示例会将基于资源的策略附加到控制面板。将 account-id 替换为您的账户 ID,并将 dashboard-arn 替换为控制面板的 ARN。

    aws cloudtrail put-resource-policy \ --resource-arn dashboard-arn \ --resource-policy '{"Version": "2012-10-17", "Statement": [{"Sid": "DashboardPolicy", "Effect": "Allow", "Principal": { "Service": "cloudtrail.amazonaws.com" }, "Action": "cloudtrail:StartDashboardRefresh", "Condition": { "StringEquals": { "AWS:SourceArn": "dashboard-arn", "AWS:SourceAccount": "account-id"}}}]}'
  4. 运行 update-dashboard 命令通过配置 --refresh-schedule 参数来设置和启用刷新计划。对于“要点”控制面板,唯一有效的 UNITHOURS,唯一有效的 Value6

    aws cloudtrail update-dashboard --dashboard-id AWSCloudTrail-Highlights \ --refresh-schedule '{"Frequency": {"Unit": "HOURS", "Value": 6}, "Status": "ENABLED"}'