使用管理仪表板 AWS CLI - AWS CloudTrail

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

使用管理仪表板 AWS CLI

本节介绍了可运行来管理控制面板的几个其他命令,包括获取控制面板、列出控制面板、刷新控制面板和更新控制面板。

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

使用以下命令获取仪表板 AWS CLI

运行 get-dashboard 命令可返回控制面板。通过提供控制面板 ARN 或控制面板名称来指定 --dashboard-id

aws cloudtrail get-dashboard --dashboard-id arn:aws:cloudtrail:us-east-1:123456789012:dashboard/exampleDash

使用列出仪表板 AWS CLI

运行 list-dashboards 命令可列出您的账户的控制面板。

  • 添加 --type 参数以仅查看 CUSTOMMANAGED 控制面板。

  • 包括 --max-results 参数以限制结果数量。有效值为 1-100。

  • 包括 --name-prefix 以返回与指定前缀匹配的控制面板。

以下示例列出了所有控制面板。

aws cloudtrail list-dashboards

此示例仅列出 CUSTOM 控制面板。

aws cloudtrail list-dashboards --type CUSTOM

下一个示例仅列出 MANAGED 控制面板。

aws cloudtrail list-dashboards --type MANAGED

最后一个示例列出了与指定的前缀匹配的控制面板。

aws cloudtrail list-dashboards --name-prefix ExamplePrefix

将基于资源的策略附加到事件数据存储或控制面板 AWS CLI

运行 put-resource-policy 命令可将基于资源的策略应用于事件数据存储或控制面板。

将基于资源的策略附加到事件数据存储

要在手动或计划刷新期间对控制面板运行查询,您需要将基于资源的策略附加到与控制面板上的小组件关联的每个事件数据存储。这允许 CloudTrail Lake 代表您运行查询。有关基于资源的策略的更多信息,请参阅 示例:允许 CloudTrail 运行查询以刷新仪表板

以下示例会将基于资源的策略附加到事件数据存储。account-id替换为您的账户 ID、eds-arn CloudTrail 将运行查询的事件数据存储的 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"}}} ]}'

将基于资源的策略附加到控制面板

要为仪表板设置刷新计划,您需要将基于资源的策略附加到仪表板,以允许 CloudTrail Lake 代表您刷新仪表板。有关基于资源的策略的更多信息,请参阅 控制面板的基于资源的策略示例

以下示例会将基于资源的策略附加到控制面板。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"}}}]}'

使用手动刷新仪表板 AWS CLI

运行 start-dashboard-refresh 命令可手动刷新控制面板。在运行此命令之前,必须将基于资源的策略附加到与控制面板小组件关联的每个事件数据存储。

以下示例展示了如何手动刷新自定义控制面板。

aws cloudtrail start-dashboard-refresh \ --dashboard-id dashboard-id \ --query-parameter-values '{"$StartTime$": "2024-11-05T10:45:24.00Z"}'

下一个示例展示了如何手动刷新托管的控制面板。由于托管仪表板是由配置的 CloudTrail,因此刷新请求需要包含将在其上运行查询的事件数据存储的 ID。

aws cloudtrail start-dashboard-refresh \ --dashboard-id dashboard-id \ --query-parameter-values '{"$StartTime$": "2024-11-05T10:45:24.00Z", "$EventDataStoreId$": "eds-id"}'

使用更新仪表板 AWS CLI

运行 update-dashboard 命令可更新控制面板。您可以更新控制面板,以设置刷新计划、启用或禁用刷新计划、修改小组件以及启用或禁用终止保护。

使用更新刷新计划 AWS CLI

以下示例更新了名为 AccountActivityDashboard 的自定义控制面板的刷新计划。

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

使用自定义仪表板禁用终止保护和刷新计划 AWS CLI

以下示例禁用了名为 AccountActivityDashboard 的自定义控制面板的终止保护,以允许删除该控制面板。它还会关闭刷新计划。

aws cloudtrail update-dashboard --dashboard-id AccountActivityDashboard \ --refresh-schedule '{ "Status": "DISABLED"}' \ --no-termination-protection-enabled

向自定义控制面板添加小组件

以下示例向名为 AccountActivityDashboard 的自定义控制面板添加了一个名为 TopServices 的新小组件。小组件数组包括已为控制面板创建的两个小组件和新的小组件。

注意

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

aws cloudtrail update-dashboard --dashboard-id 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": "TopServices", "View": "BarChart", "LabelColumn": "service", "ValueColumn": "eventCount", "FilterColumn": "service", "Orientation": "Vertical" }, "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$"] } ]'