我想要使用跨帳戶儀表板共用以與另一個 AWS 帳戶共用 Amazon CloudWatch 儀表板。
簡短描述
您可以建立跨帳戶或跨區域儀表板,與多個 AWS 帳戶和多個 AWS 區域共用 CloudWatch 資料。當您使用帳戶或組織 ID 與另一個帳戶共用來自某個 AWS 帳戶的儀表板時,可能會遇到以下幾個問題:
- 監控帳戶使用者無法檢視或選取共用帳戶中的帳戶 ID 以檢視儀表板。
- 存取儀表板時,因為共用帳戶中的權限問題,監控使用者會收到錯誤訊息。這些錯誤訊息包括下列範例:
無法擷取警示錯誤
無法擷取資源群組錯誤
未經授權的使用者錯誤
解決方法
在這些範例中,一個帳戶使用帳戶 ID 或組織 ID 與另一個帳戶共用儀表板。共用帳戶 ID 為 111111111111。監控帳戶 ID 為 999999999999。
查看帳號 ID 以查看監控儀表板時發生的問題
若要檢視和選取共用儀表板,請為監控帳戶中的每個 AWS 身份和存取管理 (IAM) 使用者開啟帳戶選擇器。只有在 CloudWatch 設定中開啟帳戶選擇器的 IAM 使用者才能看到帳戶 ID 選擇器。如需詳細資訊,請參閱在 CloudWatch中啟用跨帳戶功能。
從監控帳戶存取自訂儀表板時收到錯誤
當您嘗試從監控帳戶存取自訂儀表板時,可能會遇到下列錯誤:
-
在 CloudWatch 主控臺中存取概述頁面時:
「無法擷取警示;您沒有執行下列作業的權限: CloudWatch:DescribeAlarms。如果您需要協助,請聯絡您的管理員。如果您是管理員,則可以透過建立 IAM 政策為使用者或群組提供權限。」
-
從共用帳戶存取跨服務儀表板時:
「無法在「依資源群組篩選」下拉式清單中選取任何資源群組。出錯: 「無法擷取資源群組」
-
從共享帳戶打開自訂儀表板時:
「User: "arn:aws:sts::999999999999:assumed-role/AWSServiceRoleForCloudWatchCrossAccount/CloudWatchConsole 未授權執行: sts:AssumeRole on resource: arn:aws:iam::111111111111:role/CloudWatch-CrossAccountSharingRole」
-或-
「User: arn:aws:sts::999999999999:assumed-role/CloudWatch-CrossAccountSharingRole/CloudWatchConsole 未授權執行: cloudwatch:ListDashboards on resource: arn:aws:cloudwatch::111111111111:dashboard/* because no identity-based policy allows the cloudwatch:ListDashboards action」
之所以發生這些錯誤,是因為共用帳戶角色存在權限問題。請確定共用帳戶符合下列條件:
- CloudWatch-CrossAccountSharingRole 已存在。
- 共用帳戶具有正確的信任政策。
- CloudWatch-CrossAccountSharing角色已附加下列政策: CloudWatchReadOnlyAccess CloudWatchAutomaticDashboardsAccess:如果您在儀表板共用期間清除包含 CloudWatch 自動儀表板選項,則會遺失此政策。AWSXrayReadOnlyAccess: 如果您在儀表板共用期間清除包含 ServiceLens 的 X-Ray 只讀存取選項,則會遺失此政策。
限制 CloudWatch-CrossAccountSharingRole 僅與所有監控帳戶共用特定儀表板
若要列出跨帳戶儀表板中的所有儀表板,請使用ListDashboards API 呼叫。ListDashboards 不支援資源特有的權限,但** GetDashboard API 呼叫會支援。因此,若要限制跨帳戶描述或開啟的儀表板,請在來源共用帳戶中編輯 IAM 角色 CloudWatch-CrossAccountSharingRole**:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": "cloudwatch:GetDashboard",
"Resource": "arn:aws:cloudwatch::111111111111:dashboard/dashboard-name"
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"autoscaling:Describe*",
"cloudwatch:Describe*",
"cloudwatch:GetMetricData",
"cloudwatch:GetMetricStatistics",
"cloudwatch:GetInsightRuleReport",
"cloudwatch:GetMetricWidgetImage",
"cloudwatch:ListMetrics",
"cloudwatch:ListTagsForResource",
"cloudwatch:ListDashboards",
"logs:Get*",
"logs:List*",
"logs:StartQuery",
"logs:StopQuery",
"logs:Describe*",
"logs:TestMetricFilter",
"logs:FilterLogEvents",
"sns:Get*",
"sns:List*"
],
"Resource": "*"
}
]
}
執行此命令後,您可以列出所有儀表板。不過,如果您嘗試開啟此政策中未提及的儀表板,您會看到錯誤訊息:
User: arn:aws:sts::111111111111:assumed-role/CloudWatch-CrossAccountSharingRole/CloudWatchConsole is not authorized to perform: cloudwatch:GetDashboard on resource: arn:aws:cloudwatch::111111111111:dashboard/test
啟動 CloudFormationStack 以在共用帳戶建立所需要的 CloudWatch-CrossAccountSharingRole 時發生的問題
使用跨帳戶儀表板共用時,請確定您的這些政策與共用帳戶中的 IAM 角色相關聯:
- AWSCloudFormationFullAccess
- IAMFullAccess
這些權限可讓您啟動所需的 CloudFormationStack API,以建立跨帳戶儀表板共用所需的 IAM 角色。
使用 Terraform/CloudFormation/AWS CLI 建立跨帳戶儀表板共用設定
當您設定共用帳戶以使用跨帳戶功能時,CloudWatch 會部署 AWS CloudFormation 範本。將此 CloudFormation 範本轉換為對應的 Terraform 範本。這使您可以激活跨帳戶資料共享。
若要允許您的監控帳戶在 CloudWatch 中檢視跨帳戶資料,請使用主控臺啟用帳戶選擇器。這是個別使用者的設定,不會在帳戶層級管理。如需有關設定的詳細資訊,請參閱在 CloudWatch ](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Cross-Account-Cross-Region.html#enable-cross-account-cross-Region)中[啟用跨帳戶功能。
相關資訊
跨帳戶跨區域 CloudWatch 主控臺