CloudPeek 文档

入门

CloudPeek 会将你的 Amazon CloudWatch 指标和警报以小组件的形式显示在 iPhone、iPad 或 Android 手机的主屏幕上,以及 iPhone 和 iPad 的锁定屏幕上。为它创建专用的登录身份,添加第一个小组件,然后将它放到主屏幕上。在 AWS 控制台中完成大约需要十分钟,也可以使用 AWS CLI、CloudFormation 或 Terraform。

更新于 2026年10月20日

开始之前

  • CloudPeek:在装有 iOS 17 或更高版本的 iPhone 或 iPad 上从 App Store 获取,或在装有 Android 8.0 或更高版本的 Android 手机或平板电脑上从 Google Play 获取。
  • 一个 AWS 账户,以及该账户中可以创建 IAM 用户和策略或 IAM Identity Center 权限集的登录身份,例如管理员的登录身份。
  • 资源所在的区域,例如 eu-west-2。你将在第 2 步中选择它。

1. 为 CloudPeek 创建登录身份

为 CloudPeek 创建专用的登录身份,只授予它会用到的权限:五项 CloudWatch 读取权限、用于编写 AI 小组件的 Amazon Bedrock,以及用于在按账户划分的支出中显示账户名称的 AWS Organizations。它绝不会更改你账户中的任何内容。每项权限的用途。

cloudpeek-policy.json下载
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "CloudPeek",
      "Effect": "Allow",
      "Action": [
        "cloudwatch:ListDashboards",
        "cloudwatch:GetDashboard",
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:DescribeAlarms",
        "bedrock:InvokeModel",
        "organizations:ListAccounts"
      ],
      "Resource": "*"
    }
  ]
}

然后选择 CloudPeek 的登录方式:

登录方式适用于
选项 A:使用访问密钥的 IAM 用户个人账户,或希望最快上手。密钥在你停用或轮换之前一直有效。
选项 B:IAM Identity Center通过 AWS 访问门户登录的组织。无需长期密钥:CloudPeek 会持续续订会话,直至达到组织的会话时限。

每个选项都提供 AWS 控制台、AWS CLI、CloudFormation 和 Terraform 的步骤。在标签页中选择一种,所有页面都会随之切换;此设备会记住你的选择。

选项 A:使用访问密钥的 IAM 用户

  1. 在 IAM 控制台中,选择策略 › 创建策略。切换到 JSON 编辑器,粘贴策略,然后选择下一步。将其命名为 CloudPeek,然后选择创建策略。
  2. 选择用户 › 创建用户。将用户命名为 cloudpeek,不要开启控制台访问权限,然后选择下一步。
  3. 选择直接附加策略,选中 CloudPeek,选择下一步,然后选择创建用户。
  4. 打开新用户,转到安全凭证选项卡,然后选择创建访问密钥。选择在 AWS 外部运行的应用程序,然后依次选择下一步和创建访问密钥。
  5. 保持此页面打开,或下载 .csv 文件。秘密访问密钥只显示一次。

下载上面的策略,然后运行:

Shell
aws iam create-policy \
  --policy-name CloudPeek \
  --policy-document file://cloudpeek-policy.json

aws iam create-user --user-name cloudpeek

aws iam attach-user-policy \
  --user-name cloudpeek \
  --policy-arn "arn:aws:iam::$(aws sts get-caller-identity --query Account --output text):policy/CloudPeek"

aws iam create-access-key --user-name cloudpeek

最后一条命令会输出访问密钥 ID 和秘密访问密钥。秘密访问密钥只显示一次。

该模板会创建策略和用户。它不会创建访问密钥,因此秘密访问密钥绝不会出现在 CloudFormation 中。

cloudpeek-access.yaml(资源)下载
Resources:
  # The CloudWatch actions CloudPeek reads with (ListMetrics finds your metrics for presets and AI widgets),
  # bedrock:InvokeModel for writing AI widgets in Amazon Bedrock, billed to the account, and
  # organizations:ListAccounts for the names of the accounts in charges per linked account (only an
  # organisation's management account can list them). The CloudWatch and Organizations actions
  # don't support resource-level permissions for this use, so the resource is "*". To allow only
  # CloudPeek's model in Bedrock, see https://cloudpeek.app/docs/ai-widgets.html#regions
  Policy:
    Type: AWS::IAM::ManagedPolicy
    Properties:
      ManagedPolicyName: !Ref PolicyName
      Description: Access for the CloudPeek app to CloudWatch dashboards, metric data and alarms, and to Amazon Bedrock for AI widgets.
      PolicyDocument:
        Version: "2012-10-17"
        Statement:
          - Sid: CloudPeek
            Effect: Allow
            Action:
              - cloudwatch:ListDashboards
              - cloudwatch:GetDashboard
              - cloudwatch:GetMetricData
              - cloudwatch:ListMetrics
              - cloudwatch:DescribeAlarms
              - bedrock:InvokeModel
              - organizations:ListAccounts
            Resource: "*"

  User:
    Type: AWS::IAM::User
    Condition: ShouldCreateUser
    Properties:
      UserName: !Ref UserName
      ManagedPolicyArns:
        - !Ref Policy

部署该模板,然后为该用户创建访问密钥:

Shell
aws cloudformation deploy \
  --stack-name CloudPeek-Access \
  --template-file cloudpeek-access.yaml \
  --capabilities CAPABILITY_NAMED_IAM

aws iam create-access-key --user-name cloudpeek

或者在 CloudFormation 控制台中上传该模板,选中我确认,AWS CloudFormation 可能创建具有自定义名称的 IAM 资源,然后在该用户的安全凭证选项卡上创建密钥(控制台步骤 4 和 5)。

该配置会创建策略和用户。它不会创建访问密钥,因此秘密访问密钥绝不会进入你的 Terraform 状态。

cloudpeek-access.tf(资源)下载
# The CloudWatch actions CloudPeek reads with (ListMetrics finds your metrics for presets and AI widgets),
# bedrock:InvokeModel for writing AI widgets in Amazon Bedrock, billed to the account, and
# organizations:ListAccounts for the names of the accounts in charges per linked account (only an
# organisation's management account can list them). The CloudWatch and Organizations actions
# don't support resource-level permissions for this use, so the resource is "*". To allow only
# CloudPeek's model in Bedrock, see https://cloudpeek.app/docs/ai-widgets.html#regions
data "aws_iam_policy_document" "cloudpeek" {
  statement {
    sid    = "CloudPeek"
    effect = "Allow"
    actions = [
      "cloudwatch:ListDashboards",
      "cloudwatch:GetDashboard",
      "cloudwatch:GetMetricData",
      "cloudwatch:ListMetrics",
      "cloudwatch:DescribeAlarms",
      "bedrock:InvokeModel",
      "organizations:ListAccounts",
    ]
    resources = ["*"]
  }
}

resource "aws_iam_policy" "cloudpeek" {
  name        = var.policy_name
  description = "Access for the CloudPeek app to CloudWatch dashboards, metric data and alarms, and to Amazon Bedrock for AI widgets."
  policy      = data.aws_iam_policy_document.cloudpeek.json
}

resource "aws_iam_user" "cloudpeek" {
  count = var.create_user ? 1 : 0
  name  = var.user_name
}

resource "aws_iam_user_policy_attachment" "cloudpeek" {
  count      = var.create_user ? 1 : 0
  user       = aws_iam_user.cloudpeek[0].name
  policy_arn = aws_iam_policy.cloudpeek.arn
}

应用该配置,然后为该用户创建访问密钥:

Shell
terraform init
terraform apply

aws iam create-access-key --user-name cloudpeek

Terraform 也可以通过 aws_iam_access_key 创建密钥,但这样秘密访问密钥会以明文形式存储在状态中。使用 CLI 或控制台创建密钥可以避免这种情况。

请像对待密码一样对待秘密访问密钥。CloudPeek 将它保存在你的设备上:保存在 iOS 钥匙串中,或在 Android 上使用 Android Keystore 中的密钥加密保存。不要分享它、通过电子邮件发送它,或将它保存在任何公开的地方。

结果:一个以 AKIA 开头的访问密钥 ID 及其秘密访问密钥。

选项 B:IAM Identity Center

为 CloudPeek 提供一个权限集,而不是长期访问密钥。

  1. 在 IAM Identity Center 控制台中,选择权限集 › 创建权限集,然后选择自定义权限集。
  2. 在内联策略下,粘贴上面的策略,然后选择下一步。如果该账户中已有 CloudPeek 策略(本网站的 CloudFormation 和 Terraform 文件会创建它),也可以改为将其作为客户管理型策略附加。
  3. 将权限集命名为 CloudPeek,选择下一步,然后选择创建。CloudPeek 会自动续订该角色的凭证,因此使用默认会话持续时间即可。
  4. 选择 AWS 账户,选中包含你的控制面板的账户,然后选择分配用户或组。选择将使用 CloudPeek 的人员,选中 CloudPeek 权限集,然后选择提交。

在组织的管理账户(或 IAM Identity Center 的委托管理员账户)中、于启用了 IAM Identity Center 的区域运行这些命令。将 Engineering 替换为你的组名,将 123456789012 替换为包含你的控制面板的账户。

Shell
INSTANCE_ARN=$(aws sso-admin list-instances --query 'Instances[0].InstanceArn' --output text)
STORE_ID=$(aws sso-admin list-instances --query 'Instances[0].IdentityStoreId' --output text)

PERMISSION_SET_ARN=$(aws sso-admin create-permission-set \
  --instance-arn "$INSTANCE_ARN" \
  --name CloudPeek \
  --description "CloudWatch and Amazon Bedrock access for the CloudPeek app" \
  --query 'PermissionSet.PermissionSetArn' --output text)

aws sso-admin put-inline-policy-to-permission-set \
  --instance-arn "$INSTANCE_ARN" \
  --permission-set-arn "$PERMISSION_SET_ARN" \
  --inline-policy file://cloudpeek-policy.json

GROUP_ID=$(aws identitystore get-group-id \
  --identity-store-id "$STORE_ID" \
  --alternate-identifier '{"UniqueAttribute": {"AttributePath": "displayName", "AttributeValue": "Engineering"}}' \
  --query GroupId --output text)

aws sso-admin create-account-assignment \
  --instance-arn "$INSTANCE_ARN" \
  --permission-set-arn "$PERMISSION_SET_ARN" \
  --principal-type GROUP --principal-id "$GROUP_ID" \
  --target-type AWS_ACCOUNT --target-id 123456789012

将权限集分配给账户后,它会自动在该账户中预置。

在组织的管理账户(或委托管理员账户)中、于启用了 IAM Identity Center 的区域部署此模板。实例 ARN 位于 IAM Identity Center 的设置页面上,组的 ID 位于组下该组的页面上。

CloudFormation
AWSTemplateFormatVersion: "2010-09-09"
Description: A CloudPeek permission set, assigned to one group in one account.

Parameters:
  InstanceArn:
    Type: String
    Description: Your IAM Identity Center instance, such as arn:aws:sso:::instance/ssoins-1234567890abcdef
  GroupId:
    Type: String
    Description: The ID of the group whose members will use CloudPeek
  AccountId:
    Type: String
    Description: The AWS account with your dashboards

Resources:
  PermissionSet:
    Type: AWS::SSO::PermissionSet
    Properties:
      InstanceArn: !Ref InstanceArn
      Name: CloudPeek
      Description: CloudWatch and Amazon Bedrock access for the CloudPeek app
      InlinePolicy:
        Version: "2012-10-17"
        Statement:
          - Sid: CloudPeek
            Effect: Allow
            Action:
              - cloudwatch:ListDashboards
              - cloudwatch:GetDashboard
              - cloudwatch:GetMetricData
              - cloudwatch:ListMetrics
              - cloudwatch:DescribeAlarms
              - bedrock:InvokeModel
              - organizations:ListAccounts
            Resource: "*"

  Assignment:
    Type: AWS::SSO::Assignment
    Properties:
      InstanceArn: !Ref InstanceArn
      PermissionSetArn: !GetAtt PermissionSet.PermissionSetArn
      PrincipalType: GROUP
      PrincipalId: !Ref GroupId
      TargetType: AWS_ACCOUNT
      TargetId: !Ref AccountId

使用组织管理账户(或委托管理员账户)的 provider、在启用了 IAM Identity Center 的区域应用此配置。将 Engineering 替换为你的组名,将账户 ID 替换为包含你的控制面板的账户。

Terraform
data "aws_ssoadmin_instances" "this" {}

locals {
  sso_instance_arn  = tolist(data.aws_ssoadmin_instances.this.arns)[0]
  identity_store_id = tolist(data.aws_ssoadmin_instances.this.identity_store_ids)[0]
}

resource "aws_ssoadmin_permission_set" "cloudpeek" {
  name         = "CloudPeek"
  description  = "CloudWatch and Amazon Bedrock access for the CloudPeek app"
  instance_arn = local.sso_instance_arn
}

resource "aws_ssoadmin_permission_set_inline_policy" "cloudpeek" {
  instance_arn       = local.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.cloudpeek.arn
  inline_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [{
      Sid    = "CloudPeek"
      Effect = "Allow"
      Action = [
        "cloudwatch:ListDashboards",
        "cloudwatch:GetDashboard",
        "cloudwatch:GetMetricData",
        "cloudwatch:ListMetrics",
        "cloudwatch:DescribeAlarms",
        "bedrock:InvokeModel",
        "organizations:ListAccounts",
      ]
      Resource = "*"
    }]
  })
}

# The group whose members will use CloudPeek.
data "aws_identitystore_group" "engineering" {
  identity_store_id = local.identity_store_id

  alternate_identifier {
    unique_attribute {
      attribute_path  = "DisplayName"
      attribute_value = "Engineering"
    }
  }
}

resource "aws_ssoadmin_account_assignment" "cloudpeek" {
  instance_arn       = local.sso_instance_arn
  permission_set_arn = aws_ssoadmin_permission_set.cloudpeek.arn
  principal_type     = "GROUP"
  principal_id       = data.aws_identitystore_group.engineering.group_id
  target_type        = "AWS_ACCOUNT"
  target_id          = "123456789012" # the account with your dashboards
}

结果:你的 AWS 访问门户 URL(例如 https://my-company.awsapps.com/start,显示在 IAM Identity Center 控制面板上),以及在该账户中分配给你的 CloudPeek 权限集。

AI 小组件

无需其他设置。上面的策略允许模型查找你的指标(cloudwatch:ListMetrics)并在 Amazon Bedrock 中运行(bedrock:InvokeModel),费用计入该账户。要改用 Anthropic API,或只允许 CloudPeek 使用的模型,请参阅 AI 小组件。

想了解 Bedrock 区域,或如何只允许 CloudPeek 使用的模型?请参阅 AI 小组件 › 区域和权限。

2. 在 CloudPeek 中添加账户

  1. 打开 CloudPeek。首次打开时,三个简短的页面会介绍它的工作原理:可轻点继续逐页阅读,或轻点跳过。
  2. 在这些页面的最后一页或账户标签页上,轻点添加账户。
  3. 在你如何登录 AWS?下,选择访问密钥(选项 A)或 IAM Identity Center(选项 B)。如果两者都还没有,轻点两者都还没有?可打开本页的第 1 步。
  4. 访问密钥:可以为账户设置标签,例如 prod-platform。输入访问密钥 ID 和秘密访问密钥。选择默认区域,然后轻点验证并保存。
  5. IAM Identity Center:在起始 URL 中输入访问门户的名称:对于 https://my-company.awsapps.com/start,只需输入 my-company。如果不知道区域,保持原样即可,CloudPeek 会自动找到它。轻点在浏览器中继续,确认浏览器中的验证码与 CloudPeek 中的一致,然后批准。回到 CloudPeek 后,选择 AWS 账户,然后选择 CloudPeek 角色和默认区域,再轻点验证并保存。要从同一门户添加更多账户,请轻点添加另一个账户:无需再次在浏览器中批准。
“添加账户”的第一步“你如何登录 AWS?”,提供“访问密钥”和 IAM Identity Center 两个选项及各自所需的内容,以及指向设置指南的“两者都还没有?”。
第 1 步:登录方式
“访问密钥”表单:指向设置指南的链接,然后是“标签”和“默认区域”、“访问密钥 ID”、“秘密访问密钥”和“会话令牌”,以及“验证并保存”。
第 2 步:“访问密钥”表单

选择资源所在的默认区域。它最初为美国东部(弗吉尼亚北部),即 us-east-1。新小组件会在该区域中查找指标(添加小组件时,也可以在创建小组件中选择其他区域),并且每个小组件都会保留添加时所在的区域,因此在错误区域中添加的小组件不会显示数据。无论你选择哪个区域,支出小组件始终读取 us-east-1 中的数据。

结果:CloudPeek 会向 AWS 验证该登录身份,并检查它能否读取 CloudWatch,然后显示已登录及账户号码,接着为该账户打开创建小组件,停在哪种小组件?这一步。你不需要控制面板:预设和 AI 小组件无需控制面板即可使用。

如果验证并保存显示了错误,请参阅故障排除 › 登录。要添加更多账户,或以后更改此账户的区域,请参阅账户。

3. 添加第一个小组件

  1. 在添加账户时打开的创建小组件中,查看哪种小组件?下方的推荐的预设:这些预设能在该账户中显示数据。如果你已将其关闭,请在小组件标签页上轻点创建小组件;如果有多个账户,请先选择账户。
  2. 选择其中一个。如果没有列出任何预设,或都不是你想要的,请改为选择预设,然后选择你所用服务的预设,例如 Lambda 调用次数或 SQS 等待中的消息。搜索预设可按名称查找预设;找不到数据的预设会说明原因。
  3. 查看它在各种尺寸下的样子,然后轻点添加小组件。它会显示在“小组件”标签页上。
“创建小组件”的第二步“哪种小组件?”,提供“预设”、“AI 生成”和“来自控制面板”三个选项。
第 2 步:选择小组件类型(iPhone)
“创建小组件”中“按函数的 Lambda 错误”预设的预览步骤,包含“时间范围”、“区域”和“标题”字段以及“添加小组件”按钮。
第 3 步:预览,然后轻点“添加小组件”(iPhone)

支出预设需要账单指标。七个“成本”预设读取 AWS 的预估费用,而 AWS 只有在你开启接收 CloudWatch 账单警报后才会将其发送到 CloudWatch,首批数据需要几个小时才会出现。请参阅开启账单指标。

结果:小组件出现在“小组件”标签页上,下方显示账户和预设。首次添加时,CloudPeek 还会介绍如何将它添加到主屏幕。

另外两种的用法相同。AI 生成根据描述编写小组件(请参阅 AI 小组件),来自控制面板则从该账户的某个 CloudWatch 控制面板中添加任意图表、数字或警报列表(请参阅设计控制面板)。创建小组件介绍了全部三种方式。

4. 将它放到主屏幕上

  1. 按住主屏幕上的空白区域,直到 App 开始晃动。
  2. 轻点编辑,然后轻点添加小组件。
  3. 找到 CloudPeek(显示你的某个小组件的那一个名为 CloudWatch 小组件),选择尺寸,然后轻点添加小组件。
  4. 在 iOS 18 及更高版本中,iOS 会询问它显示哪个小组件。轻点外部区域即可保留你刚添加的小组件。

主屏幕小组件会显示你在 CloudPeek 中最后添加的小组件,或你通过添加到主屏幕选择的小组件。要显示其他小组件,请按住主屏幕小组件,轻点编辑小组件,然后在小组件下选择。

锁定屏幕小组件的用法相同:请参阅主屏幕和锁定屏幕。

CloudPeek 可以帮你把它放到主屏幕上:

  1. 点按添加到主屏幕。CloudPeek 添加小组件时会在屏幕底部提供此选项(首次添加时,它显示的步骤顶部也有此选项)。
  2. 启动器会显示该小组件,并询问是否添加。请确认添加。

主屏幕小组件现在会显示你刚添加的小组件。如果想以后再添加,请在小组件标签页上点按该小组件下方的更多选项(⋮),然后点按添加到主屏幕。

如果你的启动器无法为应用添加小组件,CloudPeek 会改为提供怎么做?,其中包含以下适用于任何启动器的步骤:

  1. 按住主屏幕上的空白区域,然后点按小组件。
  2. 找到 CloudPeek,然后按住 CloudWatch 小组件。
  3. 将它拖到主屏幕上你想放置的位置,然后松开手指。
  4. 在 Android 12 之前的版本中,CloudPeek 会询问它显示哪个小组件。请选择你刚添加的小组件。

主屏幕小组件会显示你在 CloudPeek 中最后添加的小组件,或你通过添加到主屏幕选择的小组件。要显示其他小组件,请按住它,然后点按设置或编辑按钮(因启动器而异),再选择要显示的小组件。调整大小及其他操作,请参阅主屏幕和锁定屏幕。

5. 检查它是否正常工作

  • 主屏幕小组件会显示一个数值或一张图表。中号及更大的小组件底部会注明涵盖的时间段和更新时间,例如过去 3 小时 · 更新于 14:05。
  • 主屏幕小组件显示过该小组件后,CloudPeek 的小组件标签页上该小组件下方会显示在主屏幕上。

如果出现问题

你看到的情况解决方法
“此时间范围内无数据。”或说明原因的消息,例如“你的 SQS 队列位于 us-west-2。”预设会在你添加它们时账户所用的默认区域中查找数据。如果你的资源位于其他区域,小组件会指明位置:在它的屏幕上轻点在 … 中显示即可在该区域中显示。或者:重新添加该预设,预设列表会指明资源所在的位置;在预览中的区域下选择资源所在的区域;或者更改账户的区域(方法)。对于支出预设,请检查是否已开启账单指标,并等待几个小时(请参阅开启 CloudWatch 账单警报)。
轻点验证并保存时出错请参阅登录。
小组件上显示“访问被拒绝”该登录身份缺少某项权限:请参阅访问被拒绝。
主屏幕小组件显示的是其他小组件在 iPhone 和 iPad 上,按住它,轻点编辑小组件,然后在小组件下选择其他小组件。在 Android 上,按住它,然后点按设置或编辑按钮。
其他问题请参阅故障排除,或发送电子邮件至 support@cloudpeek.app。

后续步骤

我想要…

本文档使用的术语

术语含义
小组件你在 CloudPeek 中添加的图表、数字、表格或警报列表。它们列在 App 的小组件标签页上。
主屏幕小组件、锁定屏幕小组件你添加到手机主屏幕(包括 Android 主屏幕)或 iPhone 和 iPad 锁定屏幕上的 CloudPeek 小组件。每个都显示你的一个 CloudPeek 小组件。
控制面板小组件CloudWatch 控制面板上的小组件,可以添加到 CloudPeek 中。
预设CloudPeek 的现成小组件之一。无需控制面板。
AI 小组件AI 模型根据你的描述编写的小组件(在 App 中为 AI 生成)。
固定在浏览控制面板时将控制面板小组件添加到 CloudPeek。
账户你添加到 CloudPeek 的 AWS 账户,各有自己的登录身份。
登录身份CloudPeek 登录账户的方式:IAM 用户的访问密钥,或 IAM Identity Center。账户标签页会为每个账户标注密钥或 SSO。
默认区域你为账户选择的区域。除非新小组件指定了其他区域,否则会在该区域中查找指标。
iPhone 和 iPad、Android两个 CloudPeek App,用法相同。当步骤或标签有所不同时,本文档会显示其中一种:在每页顶部选择,所有页面都会随之切换。Android 的部分标签措辞略有不同,例如 iOS 上的共享在 Android 上为分享。

下载

文件说明
cloudpeek-policy.jsonCloudPeek 所需的权限:五项 CloudWatch 读取权限,以及用于编写 AI 小组件的 Amazon Bedrock。每项权限的用途
cloudpeek-access.yaml, cloudpeek-access.tf上述策略,以及一个可选的、用于登录的 IAM 用户。指南
cloudpeek-setup.yaml, cloudpeek-setup.tf一次性创建按服务划分的支出控制面板、上述策略和一个可选的 IAM 用户。指南
spend-by-service.json按服务划分的支出控制面板的 JSON。指南
cloudpeek-alarms.yaml, cloudpeek-alarms.tf根据你提供的警报 ARN 创建的警报控制面板。指南
production-alarms.json警报控制面板的 JSON,含示例 ARN。指南
api-health.jsonAPI 健康状况示例控制面板的 JSON。指南

获取帮助

在故障排除中查找你看到的消息,或查看常见问题。仍未解决?请发送电子邮件至 support@cloudpeek.app,并附上 App 或小组件显示的内容。切勿向我们发送你的秘密访问密钥。