控制面板

示例:按服务划分的支出

开启账单指标,然后添加 CloudPeek 的支出预设,或者构建一个显示你本月最大几项费用的 CloudWatch 控制面板。该控制面板可以在 AWS 控制台中创建,也可以使用 CloudFormation 或 Terraform 一次部署完成。

更新于 2026年10月19日

不想设置?使用支出预设

如果你只想在主屏幕上查看 AWS 账单,就不需要控制面板。开启账单指标(第 1 步),然后通过创建小组件 › 预设添加 CloudPeek 的支出预设。这些预设合起来可以显示下面的控制面板所显示的全部内容:

控制面板小组件预设区别
支出最高的 5 项服务按服务支出显示所有服务,支出最高的在前,显示不下的合计为“其他”。其总计是各项服务之和,而不是你的全部账单。
本月至今支出本月至今支出相同。
过去 7 天的支出按账户每日支出相同;在 AWS Organizations 管理账户中,每个账户会堆叠在当天的柱中,并且还可以显示 2 周、30 天或本月至今。
前 5 项服务的支出占比支出占比显示所有服务,而不只是五项。

预设还提供月末预测、支出和预测、按服务每日支出、每日支出表和支出趋势:请参阅预设。如果你想要固定的前五项、以全部账单作为总计、在 CloudWatch 控制台中看到相同的小组件,或者想用 CloudFormation 或 Terraform 管理控制面板,请改为创建控制面板。

你将创建的内容

你将创建一个名为 CloudPeek-Spend 的 CloudWatch 控制面板,其中包含四个小组件。第一个是条形图,显示本月至今你支出最多的五项服务(自动找出)以及账户的总计。第二个显示该本月至今总计,并附有过去一周的迷你图。第三个显示过去 7 天中每天的支出,每天一列;第四个是饼图,显示支出最高的五项服务各自所占的份额。它们在 CloudPeek 中的样子如下:

在条形图中,显示不下的服务会合计为“其他”。

在 AWS 控制台中大约需要 15 分钟,使用 CloudFormation 或 Terraform 则只需一次部署。请在每一步的标签页中选择你使用的工具。

开始之前

  • 一个 AWS 账户,以及可以更改账单首选项并创建 CloudWatch 控制面板、IAM 用户和策略的登录身份,例如管理员。如果你的账户在 AWS Organizations 中,请使用管理账户,以查看整个组织的支出。
  • 安装在 iPhone、iPad 或 Android 手机上的 CloudPeek。

费用。账单指标免费。CloudWatch 免费套餐包含三个控制面板;超出部分每个控制面板每月 3 美元。CloudPeek 刷新时会调用 GetMetricData,AWS 对其按每 1,000 个指标 0.01 美元计费。AWS 每天只更新几次账单指标,因此这些小组件最多每 3 小时刷新一次:固定全部四个小组件时,每次刷新约 15 个指标,每月约 4 美分。设置中的刷新下会估算你自己的小组件的费用。请参阅 CloudWatch 定价。

1. 开启账单指标

只有在你选择加入后,AWS 才会将你的预估费用发送到 CloudWatch。每个账户只需在控制台中操作一次:CloudFormation、Terraform 和 AWS CLI 都无法更改此设置。

  1. 登录 AWS 控制台,然后打开账单和成本管理 › 账单首选项。
  2. 在提醒首选项下,选择编辑。
  3. 选中接收 CloudWatch 账单警报,然后保存更改。

预估费用每天会多次发布到美国东部(弗吉尼亚北部)区域,即 us-east-1。它们从月初开始累计,因此每月都会归零。首批数据可能需要几个小时才会出现。如果你不是以根用户身份登录,该账户还必须允许 IAM 访问账单信息(在账户 › IAM 用户和角色访问账单信息的权限下)。

在首批数据到达之前,你接下来创建的控制面板会显示没有可用数据,CloudPeek 的支出小组件会显示“请在账单控制台中开启 CloudWatch 账单警报。支出会在一天内显示。”(小号小组件上显示“请开启 CloudWatch 账单警报。”)。要检查账单指标是否已开始发送,请在 us-east-1 中打开 CloudWatch,然后选择指标 › 所有指标:开始发送后,会出现 Billing 命名空间。Metrics Explorer 不会列出账单指标,因此请在“所有指标”下查找。

在 AWS Organizations 中,账单指标只存在于管理账户中,其中包含每个账户的费用,并按账户细分(按账户划分的支出)。其他账户中没有账单指标,因此请在管理账户中开启账单警报,并将管理账户添加到 CloudPeek 以使用支出小组件。在通过 IAM Identity Center 登录的非管理账户中,CloudPeek 的支出小组件会显示“此账户的支出位于你所在组织的管理账户中。”(小号小组件上显示“支出位于你的管理账户中。”)。CloudPeek 根据能否列出组织的账户(organizations:ListAccounts,包含在 CloudPeek 的策略中)来识别管理账户,因此请为管理账户的登录身份授予该权限。

2. 创建控制面板

  1. 打开 us-east-1 中的 CloudWatch 控制台,然后选择创建控制面板。
  2. 将其命名为 CloudPeek-Spend,然后选择创建控制面板。如果打开了添加小部件窗口,请将其关闭。
  3. 选择操作 › 查看/编辑源,将源替换为控制面板 JSON,然后选择更新。
  4. 选择保存。

下载 spend-by-service.json(下文有完整内容),然后运行:

Shell
aws cloudwatch put-dashboard \
  --region us-east-1 \
  --dashboard-name CloudPeek-Spend \
  --dashboard-body file://spend-by-service.json

一个模板即可创建该控制面板,以及第 3 步中的 CloudPeek 策略和 IAM 用户。以下是控制面板资源:

cloudpeek-setup.yaml(控制面板)下载
  Dashboard:
    Type: AWS::CloudWatch::Dashboard
    Properties:
      DashboardName: !Ref DashboardName
      DashboardBody: !Sub |
          {
            "start": "-P7D",
            "widgets": [
              {
                "type": "metric",
                "x": 0,
                "y": 0,
                "width": 12,
                "height": 8,
                "properties": {
                  "title": "Top ${TopServices} services by spend",
                  "view": "bar",
                  "region": "us-east-1",
                  "start": "-P1D",
                  "stat": "Maximum",
                  "period": 21600,
                  "metrics": [
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ],
                    [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "top" } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 12,
                "y": 0,
                "width": 6,
                "height": 8,
                "properties": {
                  "title": "Month-to-date spend",
                  "view": "singleValue",
                  "region": "us-east-1",
                  "stat": "Maximum",
                  "period": 21600,
                  "sparkline": true,
                  "metrics": [
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "label": "Total" } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 18,
                "y": 0,
                "width": 6,
                "height": 8,
                "properties": {
                  "title": "Last 7 days' spend",
                  "view": "timeSeries",
                  "region": "us-east-1",
                  "start": "-P7D",
                  "stat": "Maximum",
                  "period": 86400,
                  "yAxis": { "left": { "min": 0 } },
                  "metrics": [
                    [ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
                    [ "AWS/Billing", "EstimatedCharges", "Currency", "${Currency}", { "id": "m1", "visible": false } ]
                  ]
                }
              },
              {
                "type": "metric",
                "x": 0,
                "y": 8,
                "width": 12,
                "height": 8,
                "properties": {
                  "title": "Top ${TopServices} services' share of spend",
                  "view": "pie",
                  "region": "us-east-1",
                  "start": "-P1D",
                  "stat": "Maximum",
                  "period": 21600,
                  "metrics": [
                    [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${Currency}\"', 'Maximum', 21600), MAX, DESC, ${TopServices})", "label": "${!PROP('Dim.ServiceName')}", "id": "share" } ]
                  ]
                }
              }
            ]
          }

其主体就是下面的控制面板 JSON,其中的 ${TopServices} 和 ${Currency} 由堆栈的参数填入。${!PROP(…)} 可防止 CloudFormation 将动态标签当作它自己的变量。

Shell
aws cloudformation deploy \
  --region us-east-1 \
  --stack-name CloudPeek \
  --template-file cloudpeek-setup.yaml \
  --capabilities CAPABILITY_NAMED_IAM

或者,在 us-east-1 中的 CloudFormation 控制台中,选择上传模板文件,将堆栈命名为 CloudPeek,检查参数,并在提交前选中我确认,AWS CloudFormation 可能创建具有自定义名称的 IAM 资源。当堆栈状态变为 CREATE_COMPLETE 时,其输出选项卡中会有指向该控制面板的链接。

参数默认值用途
DashboardNameCloudPeek-Spend控制面板的名称。
TopServices5在图表中显示支出最高的多少项服务,取值为 1 到 20。
CurrencyUSD账单所用的货币。
PolicyNameCloudPeek策略的名称。
CreateUsertrue如果你将使用 IAM Identity Center 登录,请设置为 false。
UserNamecloudpeekIAM 用户的名称。

要更改这些参数,请添加 --parameter-overrides,例如 --parameter-overrides TopServices=10 CreateUser=false。

一个配置即可创建该控制面板,以及第 3 步中的 CloudPeek 策略和 IAM 用户。以下是控制面板资源:

cloudpeek-setup.tf(控制面板)下载
resource "aws_cloudwatch_dashboard" "spend" {
  dashboard_name = var.dashboard_name
  dashboard_body = jsonencode({
    start = "-P7D"
    widgets = [
      {
        type   = "metric"
        x      = 0
        y      = 0
        width  = 12
        height = 8
        properties = {
          title  = "Top ${var.top_services} services by spend"
          view   = "bar"
          region = "us-east-1"
          start  = "-P1D"
          stat   = "Maximum"
          period = 21600
          metrics = [
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
            [{
              expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
              label      = "$${PROP('Dim.ServiceName')}"
              id         = "top"
            }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 12
        y      = 0
        width  = 6
        height = 8
        properties = {
          title     = "Month-to-date spend"
          view      = "singleValue"
          region    = "us-east-1"
          stat      = "Maximum"
          period    = 21600
          sparkline = true
          metrics = [
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { label = "Total" }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 18
        y      = 0
        width  = 6
        height = 8
        properties = {
          title  = "Last 7 days' spend"
          view   = "timeSeries"
          region = "us-east-1"
          start  = "-P7D"
          stat   = "Maximum"
          period = 86400
          yAxis  = { left = { min = 0 } }
          metrics = [
            [{ expression = "IF(DIFF(m1) < 0, m1, DIFF(m1))", label = "Spend", id = "daily" }],
            ["AWS/Billing", "EstimatedCharges", "Currency", var.currency, { id = "m1", visible = false }],
          ]
        }
      },
      {
        type   = "metric"
        x      = 0
        y      = 8
        width  = 12
        height = 8
        properties = {
          title  = "Top ${var.top_services} services' share of spend"
          view   = "pie"
          region = "us-east-1"
          start  = "-P1D"
          stat   = "Maximum"
          period = 21600
          metrics = [
            [{
              expression = "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"${var.currency}\"', 'Maximum', 21600), MAX, DESC, ${var.top_services})"
              label      = "$${PROP('Dim.ServiceName')}"
              id         = "share"
            }],
          ]
        }
      },
    ]
  })
}

它使用 jsonencode 构建出与下面的控制面板 JSON 完全相同的内容。$${PROP(…)} 可防止 Terraform 将动态标签当作插值。将该文件保存到一个空目录中,然后运行:

Shell
terraform init
terraform apply
变量默认值用途
dashboard_nameCloudPeek-Spend控制面板的名称。
top_services5在图表中显示支出最高的多少项服务,取值为 1 到 20。
currencyUSD账单所用的货币。
policy_nameCloudPeek策略的名称。
create_usertrue如果你将使用 IAM Identity Center 登录,请设置为 false。
user_namecloudpeekIAM 用户的名称。

要更改这些变量,请传入 -var,例如 terraform apply -var top_services=10 -var create_user=false。要将该控制面板添加到现有配置中,请复制其中的资源,并省略 terraform 和 provider 块。

3. 为 CloudPeek 创建登录身份

按照“入门”中的为 CloudPeek 创建登录身份操作。它会创建 CloudPeek 策略,以及一个使用访问密钥的 IAM 用户或一个 IAM Identity Center 权限集。

按照“入门”中的为 CloudPeek 创建登录身份操作,其中提供了用于创建 IAM 用户或 IAM Identity Center 权限集的 AWS CLI 命令。

第 2 步中的堆栈已经创建了 CloudPeek 策略,并且(除非你将 CreateUser 设置为 false)还创建了 cloudpeek 用户。请为该用户创建访问密钥。秘密访问密钥只显示一次:

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

对于 IAM Identity Center,请将 CloudPeek 作为客户管理型策略附加到权限集(请参阅选项 B)。

第 2 步中的配置已经创建了 CloudPeek 策略,并且(除非你将 create_user 设置为 false)还创建了 cloudpeek 用户。请在 Terraform 之外创建该用户的访问密钥,这样秘密访问密钥就不会进入你的状态。它只显示一次:

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

对于 IAM Identity Center,请将 CloudPeek 作为客户管理型策略附加到权限集(请参阅选项 B)。

4. 添加账户并固定小组件

  1. 在 CloudPeek 中,在账户标签页上使用该访问密钥或 IAM Identity Center 添加账户(请参阅入门的第 2 步)。任何默认区域都可以:支出小组件始终读取 us-east-1。
  2. 在账户标签页上,打开该账户,再打开 CloudPeek-Spend 控制面板,然后在你想要的小组件上轻点固定:支出最高的 5 项服务、本月至今支出、过去 7 天的支出和前 5 项服务的支出占比。
  3. 为每个小组件分别将 CloudPeek 添加到主屏幕一次,并选择各自显示哪个小组件(请参阅选择它显示哪个小组件)。中号适合条形图和饼图;小号适合本月至今总计和过去 7 天的支出。

结果:账单指标到达后,条形图会列出你本月支出最高的几项服务,总计显示在它们上方。在此之前,小组件会显示此时间范围内无数据。

在 iPhone 和 iPad 上,总计也很适合放在锁定屏幕上,锁定屏幕小组件会显示最新值。

控制面板的工作原理

无论使用哪种工具,最终得到的控制面板都如下所示:

spend-by-service.json下载
{
  "start": "-P7D",
  "widgets": [
    {
      "type": "metric",
      "x": 0,
      "y": 0,
      "width": 12,
      "height": 8,
      "properties": {
        "title": "Top 5 services by spend",
        "view": "bar",
        "region": "us-east-1",
        "start": "-P1D",
        "stat": "Maximum",
        "period": 21600,
        "metrics": [
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ],
          [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "top" } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 12,
      "y": 0,
      "width": 6,
      "height": 8,
      "properties": {
        "title": "Month-to-date spend",
        "view": "singleValue",
        "region": "us-east-1",
        "stat": "Maximum",
        "period": 21600,
        "sparkline": true,
        "metrics": [
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "label": "Total" } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 18,
      "y": 0,
      "width": 6,
      "height": 8,
      "properties": {
        "title": "Last 7 days' spend",
        "view": "timeSeries",
        "region": "us-east-1",
        "start": "-P7D",
        "stat": "Maximum",
        "period": 86400,
        "yAxis": { "left": { "min": 0 } },
        "metrics": [
          [ { "expression": "IF(DIFF(m1) < 0, m1, DIFF(m1))", "label": "Spend", "id": "daily" } ],
          [ "AWS/Billing", "EstimatedCharges", "Currency", "USD", { "id": "m1", "visible": false } ]
        ]
      }
    },
    {
      "type": "metric",
      "x": 0,
      "y": 8,
      "width": 12,
      "height": 8,
      "properties": {
        "title": "Top 5 services' share of spend",
        "view": "pie",
        "region": "us-east-1",
        "start": "-P1D",
        "stat": "Maximum",
        "period": 21600,
        "metrics": [
          [ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,ServiceName} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "label": "${PROP('Dim.ServiceName')}", "id": "share" } ]
        ]
      }
    }
  ]
}
  • 表达式行会为你找出支出最高的服务。SEARCH 会找到每项服务的预估费用,SORT(…, MAX, DESC, 5) 则保留最大的五项。你新开始使用的服务会自动出现。要显示更多或更少的服务,请更改条形图和饼图表达式末尾的 5(或 TopServices 参数,或 top_services 变量)。
  • 标签 ${PROP('Dim.ServiceName')} 用服务名称为每个条形命名,例如 AmazonEC2 或 AWSLambda。CloudPeek 会显示简称(EC2、Lambda),按从大到小排列,并将显示不下的合计为其他。
  • 只有 Currency 维度的那一行是整个账户本月至今的费用。CloudPeek 将其显示为小组件的总计,而不是一个条形,因此前五项之外的服务也会计算在内。在 CloudWatch 控制台中,它会显示为多出的一个条形。
  • 费用从月初开始累计,因此条形图和饼图只看最近一天("start": "-P1D")。这样,排名就会依据本月的费用,而不是上个月的费用。本月至今总计的迷你图使用控制面板的一周时间范围。
  • 过去 7 天的数据来自同一个本月至今费用,从隐藏的 m1 行中每天读取一次("period": 86400)。DIFF(m1) 是它每天增加的金额;在月初费用归零的那一天,IF(… < 0, m1, …) 会改为取新月份的费用。
  • CloudPeek 将其中每一天绘制为一根柱,从你所在时区的午夜开始计算,今天截至目前的数据位于最右侧。CloudWatch 控制台没有这样的图表,因此会将这些天绘制为一条折线。
  • 如果你的账单不是以美元计价,请将各行和表达式中的每个 USD 改为你的货币代码。
  • 饼图使用与条形图相同的表达式,但不含总计行,因此各个扇区是前五项服务在它们合计费用中所占的份额。CloudPeek 会将该合计显示在中间。
  • 如果要将其余所有费用作为其他扇区包含在饼图中,并在中间显示整个账户的费用,请将条形图的总计行复制到饼图中。之后 CloudWatch 控制台会将总计绘制为多出的一个扇区。

要查看每项服务的费用,请在 us-east-1 中打开 CloudWatch,然后选择所有指标 › Billing › 按服务。

要查看每项服务每天的支出(每天一列堆叠显示),请添加按服务每日支出预设(请参阅支出预设),或在 AI 小组件中描述它,例如“过去 7 天按服务的每日支出,堆叠显示”。每项服务的费用同样从月初开始累计,因此它们会计算出每项服务每天增加了多少,就像 DIFF(m1) 对总计所做的那样。

要在表格中列出过去 7 天的支出(每天一行,最新的在前),请添加每日支出表预设,或在 AI 小组件中描述它,例如“过去 7 天支出的表格,每天一行”。在控制面板上,这就是将上面的 DIFF(m1) 各行放在一个设置了 "view": "table" 和 "table": {"layout": "vertical"} 的小组件中。

按账户划分的支出

如果你的账户在 AWS Organizations 中,管理账户的账单指标还会通过 LinkedAccount 维度按账户细分费用。要在图表中显示本月支出最高的五个账户(而不是支出最高的服务),请在条形图或饼图中使用以下表达式行来代替服务的表达式行:

表达式行
[ { "expression": "SORT(SEARCH('{AWS/Billing,Currency,LinkedAccount} MetricName=\"EstimatedCharges\" Currency=\"USD\"', 'Maximum', 21600), MAX, DESC, 5)", "id": "accounts" } ]

或者在 AI 小组件中描述你想要的内容,例如“本月按账户划分的支出”,或者针对单项服务:“过去 7 天每个账户 SQS 支出的堆叠条形图”。按账户每日支出预设已经会将每个账户的支出堆叠在每天一列中:请参阅支出预设。

CloudWatch 只通过 12 位 ID 识别每个账户。CloudPeek 会改为显示账户的名称,名称取自以下来源中第一个能提供名称的来源:

  • AWS Organizations,它会提供组织中每个账户的名称。这需要 organizations:ListAccounts(包含在 CloudPeek 的策略中),并且它只响应管理账户(或委托管理员账户)。CloudPeek 每天查询一次。
  • IAM Identity Center(如果你使用它登录):它允许你登录的账户的名称。
  • 你的“账户”标签页:你为已添加的账户设置的名称。

如果以上来源都无法提供名称,账户会继续显示其 ID。如果 AWS Organizations 拒绝请求,CloudPeek 会在六小时后再次查询,或在你刷新小组件时立即查询。

将其移除

在 us-east-1 的 CloudWatch 控制台中,打开控制面板,选择 CloudPeek-Spend,然后选择删除。如果还要移除 CloudPeek 的访问权限,请在 IAM 控制台中删除 cloudpeek 用户和 CloudPeek 策略。

Shell
aws cloudwatch delete-dashboards --region us-east-1 --dashboard-names CloudPeek-Spend

CloudFormation 无法删除仍有访问密钥的用户,也无法删除仍被堆栈之外的资源使用的策略。请先删除该用户的访问密钥,并从所有权限集中分离该策略,然后删除堆栈:

Shell
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
aws cloudformation delete-stack --region us-east-1 --stack-name CloudPeek

IAM 不会删除仍有访问密钥的用户,也不会删除仍附加在其他地方的策略。请先删除该用户的访问密钥,并从所有权限集中分离该策略,然后销毁资源:

Shell
aws iam list-access-keys --user-name cloudpeek
aws iam delete-access-key --user-name cloudpeek --access-key-id <access-key-id>
terraform destroy

故障排除

小组件为空,或控制面板显示“没有可用数据”

账单指标尚未到达 CloudWatch,CloudPeek 的小组件会显示“请在账单控制台中开启 CloudWatch 账单警报。支出会在一天内显示。”请检查是否已开启账单指标(第 1 步),并等待几个小时。然后在 us-east-1 的所有指标下查找 Billing 命名空间(Metrics Explorer 不会列出账单指标)。在 AWS Organizations 中,请在能看到整个组织费用的管理账户中进行设置:在组织的其他账户中,小组件会显示“此账户的支出位于你所在组织的管理账户中。”

账户显示为数字

CloudPeek 找不到这些账户的名称。在管理账户中,为 CloudPeek 的登录身份添加 organizations:ListAccounts,或部署入门中更新后的模板,然后刷新小组件。请参阅按账户划分的支出。

缺少某项服务

它不在你本月支出最高的五项服务之中。要在图表中显示更多服务,请增大 SORT 表达式末尾的数字(了解其工作原理)。它的费用已经包含在总计中。

总计大于各条形之和

这是正常的。总计是你本月至今的全部账单,包括前五项之外的服务。

其他问题

请参阅故障排除,或发送电子邮件至 support@cloudpeek.app。切勿向我们发送你的秘密访问密钥。