

# 创建金丝雀
<a name="CloudWatch_Synthetics_Canaries_Create"></a>

**重要**  
确保使用 Synthetics 金丝雀来仅监控您拥有所有权或权限的终端节点和 API。根据金丝雀运行频率设置，这些端点可能会面临流量增加的情况。

当您使用 CloudWatch 控制台创建金丝雀时，您可以使用 CloudWatch 提供的蓝图创建您的金丝雀，也可以编写您自己的脚本。有关更多信息，请参阅 [使用金丝雀蓝图](CloudWatch_Synthetics_Canaries_Blueprints.md)。

如果使用的是您自己的金丝雀脚本，您还可以使用 Amazon CloudFormation 创建金丝雀。有关更多信息，请参阅《Amazon CloudFormation 用户指南》**中的 [AWS::Synthetics::Canary](https://docs.amazonaws.cn/AWSCloudFormation/latest/UserGuide/aws-resource-synthetics-canary.html)。

如果您正在编写自己的脚本，则可以使用 CloudWatch Synthetics 已内置在库中的多个函数。有关更多信息，请参阅 [Synthetics 运行时版本](CloudWatch_Synthetics_Canaries_Library.md)。

**注意**  
当您创建金丝雀时，所创建的其中一个层是前面加上 ` Synthetics` 的 Synthetics 层。该层归 Synthetics 服务账户所有，且包含运行时系统代码。

**创建金丝雀**

1. 通过 [https://console.aws.amazon.com/cloudwatch/](https://console.amazonaws.cn/cloudwatch/) 打开 CloudWatch 控制台。

1. 在导航窗格中，选择 **Application Signals**、**Synthetics 金丝雀**。

   

1. 选择 **Create Canary (创建金丝雀)**。

1. 选择下列选项之一：
   + 要将某个蓝图脚本作为金丝雀的基础，请选择 **Use a blueprint (使用蓝图)**，然后选择要创建的金丝雀的类型。有关每种类型的蓝图执行的操作的更多信息，请参阅[使用金丝雀蓝图](CloudWatch_Synthetics_Canaries_Blueprints.md)。
   + 要上传您自己的 node.js 脚本以创建自定义金丝雀，请选择 **Upload a script (上传脚本)**。

     然后，您可以将脚本拖入 **Script (脚本)** 区域，或者选择 **Browse files (浏览文件)**，在文件系统中浏览找到该脚本。
   + 要从 S3 存储桶导入脚本，请选择 **Import from S3 (从 S3 导入)**。然后，在 **Source location (源位置)** 下，输入金丝雀的完整路径或选择 **Browse S3 (浏览 S3)**。

     您必须对您使用的 S3 存储桶具有 `s3:GetObject` 和 `s3:GetObjectVersion` 权限。存储桶必须位于您在其中创建金丝雀的同一 Amazon 区域内。

1. 在 **Name (名称)** 下，输入金丝雀的名称。此名称将用于许多页面，因此，我们建议您为该金丝雀提供一个描述性名称，以将它与其他金丝雀区分开来。

1. 在 **Application or endpoint URL (应用程序或终端节点 URL)** 下，输入您希望金丝雀测试的 URL。此 URL 必须包含协议（例如 https://）。

   如果您希望金丝雀测试 VPC 上的终端节点，还必须在此过程随后的步骤中输入有关 VPC 的信息。

1. 如果您将自己的脚本用于金丝雀，请在 **Lambda handler (Lambda 处理程序)** 下，输入您希望金丝雀开始的入口点。有关 Lambda 处理程序格式的信息，请参阅 [Synthetics 运行时版本](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html)。

1. 在**脚本编辑器**的**运行时版本**下，选择要执行金丝雀的 Synthetics 运行时版本。有关 Synthetics 运行时版本的信息，请参阅 [Synthetics 运行时版本](https://docs.amazonaws.cn/AmazonCloudWatch/latest/monitoring/CloudWatch_Synthetics_Canaries_Library.html)。

   在**浏览器配置**下，您可以启用浏览器来测试金丝雀。必须至少选择一个浏览器。

1. 如果在脚本中使用环境变量，请选择 **Environment variables（环境变量）**，然后为脚本中定义的每个环境变量指定值。有关更多信息，请参阅 [环境变量](CloudWatch_Synthetics_Canaries_WritingCanary_Nodejs_Pup.md#CloudWatch_Synthetics_Environment_Variables)。

1. 在 **Schedule（计划）**下，选择是运行此金丝雀一次、使用 rate 表达式连续运行，还是使用 cron 表达式对其进行计划。
   + 当您使用 CloudWatch 控制台创建连续运行的金丝雀时，您可以在每分钟一次到每小时一次之间的范围内选择一个运行速率。
   + 有关为金丝雀调度编写 cron 表达式的更多信息，请参阅 [使用 cron 安排金丝雀运行](CloudWatch_Synthetics_Canaries_cron.md)。

1. （可选）要为金丝雀设置超时值，请选择 **Additional configuration**（其它配置），然后指定该超时值。此值不要短于 15 秒钟，以预留 Lambda 冷启动以及启动金丝雀工具的时间。

1. 在 **Data retention (数据保留)** 下，指定保留有关失败和成功的金丝雀运行的信息的时间。范围为 1 - 455 天。

   此设置会影响 [GetCanaryRuns](https://docs.amazonaws.cn/AmazonSynthetics/latest/APIReference/API_GetCanaryRuns.html) 操作返回的信息范围以及 Synthetics 控制台中显示的信息范围。

   它不会影响 Amazon S3 存储桶中存储的数据，也不会影响 Canary 发布的日志或指标。

   无论金丝雀的数据留存期长短，控制台中显示的信息范围都有一定限制。在 Synthetics 控制台主视图中，相对和绝对时间范围限制为七天。在特定金丝雀的 Synthetics 控制台视图中，相对时间范围限制为七天，绝对时间范围限制为 30 天。

1. 在**数据存储**下，选择要用于存储来自金丝雀运行的数据的 Amazon S3 存储桶。存储桶名称不能包含句点 (.)。如果将此选项保留空白，将使用或创建默认 Amazon S3 存储桶。

1. （可选）默认情况下，金丝雀将自己的构件存储在 Amazon S3 上，并使用 Amazon 托管式 Amazon KMS 密钥将构件静态加密。您可以通过选择 **Data Storage**（数据存储）部分的 **Additional configuration**（其他配置）来使用不同的加密选项。然后，您可以选择用于加密的密钥类型。有关更多信息，请参阅 [加密金丝雀构件](CloudWatch_Synthetics_artifact_encryption.md)。

1. 在 **Access permissions（访问权限）**下，选择是创建 IAM 角色来运行金丝雀，还是使用现有角色。

   如果您使用 CloudWatch Synthetics 创建角色，则其会自动包含所有必要的权限。如果您要自己创建角色，请参阅 [金丝雀的必需角色和权限](CloudWatch_Synthetics_Canaries_CanaryPermissions.md) 获取有关必要权限的信息。

   如果您在创建金丝雀时使用 CloudWatch 控制台为金丝雀创建角色，则无法将该角色重新用于其他金丝雀，因为这些角色仅特定于一个金丝雀。如果您已手动创建了适用于多个金丝雀的角色，则可以使用现有角色。

   若要使用现有角色，您必须具有 `iam:PassRole` 权限，以将角色传递到 Synthetics 和 Lambda。您还必须拥有 `iam:GetRole` 权限。

1. （可选）在 **Alarms（告警）**下，选择是否要为此金丝雀创建默认 CloudWatch 告警。如果选择创建告警，则会按照以下命名约定创建告警：`Synthetics-Alarm-canaryName -index `

   `index` 是一个数字，代表为此金丝雀创建的各个不同的告警。第一个告警的索引为 1，第二个告警的索引为 2，依此类推。

1. （可选）要让此金丝雀测试 VPC 上的终端节点，请选择 **VPC settings (VPC 设置)**，并执行以下操作：

   1. 选择托管终端节点的 VPC。

   1. 选择 VPC 上的一个或多个子网。您必须选择私有子网，因为在执行过程中无法为 Lambda 实例分配 IP 地址时，无法将 Lambda 实例配置为在公有子网中运行。有关更多信息，请参阅[配置 Lambda 函数以访问 VPC 中的资源](https://docs.amazonaws.cn/lambda/latest/dg/configuration-vpc.html)。

   1. 在 VPC 上选择一个或多个安全组。

   1. 要允许此金丝雀的出站 IPv6 流量，请选择**允许双堆栈子网的 IPv6 流量**。这样能让金丝雀通过 IPv6 监测仅限 IPv6 和启用了双堆栈的端点。

      您可以通过授予金丝雀互联网访问权限并适当配置 VPC 子网来监测 VPC 外部的端点。有关更多信息，请参阅 [在 VPC 上运行金丝雀](CloudWatch_Synthetics_Canaries_VPC.md)。

   如果端点位于 VPC 上，则必须启用您的金丝雀才能向 CloudWatch 和 Amazon S3 发送信息。有关更多信息，请参阅 [在 VPC 上运行金丝雀](CloudWatch_Synthetics_Canaries_VPC.md)。

1. （可选）在 **Tags (标签)** 下，添加一个或多个键/值对作为此金丝雀的标签。标签可帮助您识别和组织 Amazon 资源并跟踪 Amazon 成本。有关更多信息，请参阅 [标记 Amazon CloudWatch 资源](CloudWatch-Tagging.md)。

   如果您希望应用于金丝雀的标签也应用于金丝雀使用的 Lambda 函数，请在**标签复制**下选择 **Lambda 函数**。如果您选择此选项，CloudWatch Synthetics 将使金丝雀上的标签和 Lambda 函数保持同步：
   + Synthetics 会将您在此处指定的相同标签同时应用于您的金丝雀和 Lambda 函数。
   + 如果您稍后更新金丝雀的标签并保持选中此选项，Synthetics 会修改 Lambda 函数上的标签以与金丝雀保持同步。

1. （可选）在 **Active tracing（活动跟踪）**下，选择是否启用此金丝雀的活动 X-Ray 跟踪。主动跟踪仅适用于 Puppeteer 和 Java 运行时。有关更多信息，请参阅 [金丝雀和 X-Ray 跟踪](CloudWatch_Synthetics_Canaries_tracing.md)。

## 为金丝雀创建的资源
<a name="CloudWatch_Synthetics_Canaries_Resources_Created"></a>

创建金丝雀时，将创建以下资源：
+ 一个名为 `CloudWatchSyntheticsRole-canary-name -uuid` 的 IAM 角色（如果您使用 CloudWatch 控制台创建金丝雀并指定为金丝雀创建新角色）
+ 一个名为 `CloudWatchSyntheticsPolicy- canary-name-uuid` 的 IAM 策略。
+ 一个名为 `cw-syn-results-accountID -region` 的 S3 存储桶。
+ 名为 `Synthetics-Alarm-MyCanaryName` 的警报（如果您为要为金丝雀创建警报）。
+ Lambda 函数和层（如果您使用蓝图创建金丝雀）。这些资源具有前缀 `cwsyn-MyCanaryName`。
+ 名为 `/aws/lambda/cwsyn-MyCanaryName -randomId` 的 CloudWatch Logs 日志组。