跳至内容

如何解决 Amazon CloudWatch Synthetics 金丝雀中的常见问题?

2 分钟阅读
0

我想解决 Amazon CloudWatch Synthetics 金丝雀中的常见问题。

简短描述

您在 CloudWatch Synthetics 金丝雀中可能会遇到的常见问题如下:

  • 角色和权限问题
  • Amazon Simple Storage Service (Amazon S3) 问题
  • AWS Lambda 问题
  • Amazon Virtual Private Cloud (Amazon VPC) 问题

CloudWatch Synthetics 金丝雀问题故障排除的最佳做法如下:

  • 查看 Availability(可用性)选项卡,以确定特定运行失败或成功的问题。
  • 查看 Details(详细信息)页面上的错误消息,以了解金丝雀失败的原因。
  • 查看屏幕截图以验证最新的金丝雀调用。
  • 检查日志文件以确定权限问题或节流异常。
  • 检查 Monitoring(监控)选项卡中的金丝雀指标和 Lambda 指标。
  • 检查名为 /aws/lambda/cwsyn-MyCanaryName-randomId 的 CloudWatch Logs 日志组中最新的金丝雀操作日志。
  • 检查名为 cw-syn-results-accountID-region 的 Amazon S3 存储桶中是否有构件上传项,例如屏幕截图或 HAR 文件。
  • 查看金丝雀发布的 CloudWatch 指标

解决方法

要解决 CloudWatch Synthetics 金丝雀中的常见问题,请执行以下操作:

角色和权限问题

如果您创建并管理金丝雀,则必须具有特定权限。此外,创建的金丝雀必须具有特定权限。有关详细信息,请参阅管理 CloudWatch 金丝雀的用户所需的角色和权限以及金丝雀所需的角色和权限。如果要限制用户的权限,请参阅限制用户查看特定的金丝雀

Amazon S3 存储桶问题

您在 CloudWatch Synthetics 金丝雀中可能会遇到与 Amazon S3 存储桶问题相关的常见错误如下:

  • 指定的存储桶不存在。
  • 无法将构件上传到 S3,异常: 无法获取 S3 存储桶位置: 访问被拒绝。
  • 此金丝雀当前处于错误状态。错误消息: 检测到 1 个验证错误: “content.s3Bucket”处的值“XXXXX”未能满足约束条件: 成员必须满足正则表达式模式:^[0-9A-Za-z\.\-_]*(?<!\.)$

指定的存储桶不存在

此错误表明 Amazon S3 存储桶已删除,而 CloudWatch Synthetics 金丝雀找不到它。为了防止将来出现此错误,请在 Amazon S3 存储桶上创建生命周期来存储您的 CloudWatch Synthetics 金丝雀构件。有关详细信息,请参阅管理存储生命周期

无法将构件上传到 S3,异常: 无法获取 S3 存储桶位置: 访问被拒绝

如需排查此错误,请检查以下内容:

  • 检查金丝雀的 AWS Identity and Access Management (IAM) 角色是否具有正确的 Amazon S3 存储桶权限。确保您的组织不限制与 Amazon S3 存储桶相关的任何权限。有关详细信息,请参阅服务控制策略 (SCP)
  • 检查金丝雀是否使用标准的 AWS 托管式密钥而非 AWS Key Management Service (AWS KMS) 客户自主管理型密钥进行加密。如果金丝雀使用 AWS KMS 客户自主管理型密钥,则金丝雀的 IAM 角色可能没有加密或解密的权限。有关详细信息,请参阅加密金丝雀构件
  • 检查您的金丝雀和存储桶策略加密模式是否相同。如果它们不相同,则您的存储桶策略不允许金丝雀使用的加密机制。
  • 检查金丝雀是否进行视觉监控。有关详细信息,请参阅使用视觉监控时更新构件位置和加密

此金丝雀当前处于错误状态。错误消息: 检测到 1 个验证错误: “content.s3Bucket”处的值“XXXXX”未能满足约束条件: 成员必须满足正则表达式模式:^[0-9A-Za-z\.\-_]*(?<!\.)$

要解决此错误,请检查您的金丝雀脚本是否位于 Amazon S3 中。如果脚本位于 Amazon S3 中,请在脚本代码中指定存储桶名称。确保在存储桶名称的开头不包含 s3://

AWS Lambda 问题

您可能在 CloudWatch Synthetics 金丝雀中遇到与 AWS Lambda 相关的常见错误如下:

  • 金丝雀无法检测到最新的 Lambda 层。
  • 附加到金丝雀的 IAM 角色与 Lambda 服务没有信任关系。

金丝雀无法检测到最新的 Lambda 层

如果进行了手动更改或删除了 Lambda 函数,Canary 可能会检测到最新的 Lambda 层。要解决此问题,请创建一个新的金丝雀

附加到金丝雀的 IAM 角色与 Lambda 服务没有信任关系

如果您的金丝雀 IAM 角色与 Lambda 服务没有信任关系,请确保 IAM 角色包含以下语句:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "lambda.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}

亚马逊 VPC 问题

要对亚马逊 VPC 问题进行故障排除,请参阅如何解决我在 VPC 中创建的 CloudWatch 金丝雀失败时收到的错误?

相关信息

为什么我的 CloudWatch 金丝雀已停止运行?

如何使用 CloudWatch Synthetics 来监控我的网站的性能?