本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
本教程演示如何 CloudWatch 使用将请求从私有子网中的 EC2 实例发送到 Amazon AWS PrivateLink。
下图提供了此场景的概述。要从您的计算机连接到私有子网中的实例,您需要首先连接到公有子网中的堡垒主机。堡垒主机和实例必须使用相同的密钥对。由于私钥的 .pem
文件位于您的计算机上,而不是在堡垒主机上,您将使用 SSH 密钥转发。然后,您可以从堡垒主机连接到该实例,而无需在 ssh 命令中指定 .pem
文件。在为设置了 VPC 终端节点后 CloudWatch,来自该实例的流量将解析到终端节点网络接口,然后 CloudWatch 使用 VPC 终端节点发送到终端节点网络接口。 CloudWatch

出于测试目的,您可以使用单个可用区。在生产中,建议您使用至少两个可用区,来实现低延迟和高可用性。
任务
步骤 1:创建具有子网的 VPC
使用以下过程创建具有公有和私有子网的 VPC。
创建 VPC
-
打开位于 https://console.aws.amazon.com/vpc/
的 Amazon VPC 控制台。 -
选择创建 VPC。
-
对于 Resources to create(要创建的资源),选择 VPC and more(VPC 等)。
-
对于 Name tag auto-generation(名称标签自动生成),为 VPC 输入名称。
-
若要配置子网,请执行以下操作:
-
对于 Number of Availability Zones(可用区域数量),根据您的需求选择 1 或 2。
-
对于 Number of public subnets(公有子网数量),确保每个可用区有一个公有子网。
-
对于 Number of private subnets(私有子网数量),确保每个可用区有一个私有子网。
-
-
选择创建 VPC。
步骤 2:启动实例
使用您在上一步中创建的 VPC,在公有子网中启动堡垒主机,并在私有子网中启动实例。
先决条件
使用 .pem 格式创建密钥对。启动堡垒主机和实例时,必须选择此密钥对。
为堡垒主机创建一个安全组,以允许来自计算机的 CIDR 块的入站 SSH 流量。
为实例创建一个安全组,以允许来自堡垒主机安全组的入站 SSH 流量。
创建 IAM 实例配置文件并附加CloudWatchReadOnlyAccess策略。
启动堡垒主机
-
打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
选择启动实例。
-
对于 Name(名称),输入您的堡垒主机的名称。
-
保留默认图像和实例类型。
-
对于 Key pair(密钥对),选择您的密钥对。
-
对于 Network settings(网络设置),执行以下操作:
-
对于 VPC,选择您的 VPC。
-
对于 Subnet(子网),选择公有子网。
-
对于 Auto-assign public IP(自动分配公有 IP),选择 Enable(启用)。
-
对于 Firewall(防火墙),选择 Select existing security group(选择现有安全组),然后为堡垒主机选择安全组。
-
-
选择启动实例。
启动实例
-
打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
选择启动实例。
-
对于 Name(名称),输入您的实例的名称。
-
保留默认图像和实例类型。
-
对于 Key pair(密钥对),选择您的密钥对。
-
对于 Network settings(网络设置),执行以下操作:
-
对于 VPC,选择您的 VPC。
-
对于 Subnet(子网),选择私有子网。
-
对于 Auto-assign public IP(自动分配公有 IP),选择 Disable(禁用)。
-
对于 Firewall(防火墙),选择 Select existing security group(选择现有安全组),然后为实例选择安全组。
-
-
展开 Advanced details(高级详细信息)。对于 IAM instance profile(IAM 实例配置文件),选择您的 IAM 实例配置文件。
-
选择启动实例。
步骤 3:测试 CloudWatch 访问权限
使用以下步骤确认该实例无法访问 CloudWatch。您将使用只读 AWS CLI 命令执行此操作 CloudWatch。
测试访问 CloudWatch 权限
-
在您的计算机上,使用以下命令将密钥对添加到 SSH 代理,其中
key.pem
是您的.pem 文件的名称。ssh-add ./
key.pem
如果您收到一条错误消息,提示您的密钥对的权限过于开放,请运行以下命令,然后重试上一个命令。
chmod 400 ./
key.pem
-
从您的计算机连接到堡垒主机。您必须指定
-A
选项、实例用户名(例如ec2-user
)和堡垒主机的公有 IP 地址。ssh -A
ec2-user
@bastion-public-ip-address
-
从堡垒主机连接到实例。您必须指定实例用户名(例如
ec2-user
)和实例的私有 IP 地址。ssh
ec2-user
@instance-private-ip-address
-
按如下方式在实例上运行 CloudWatch list-Metric
s 命令。对于 --region
选项,指定您在其中创建 VPC 的区域。aws cloudwatch list-metrics --namespace AWS/EC2 --region
us-east-1
-
几分钟后,命令会超时。这表明您无法 CloudWatch 从具有当前 VPC 配置的实例进行访问。
Connect timeout on endpoint URL: https://monitoring.
us-east-1
.amazonaws.com/ -
保持与您的实例的连接。创建 VPC 端点后,您将再次尝试此 list-metrics 命令。
步骤 4:创建要访问的 VPC 终端节点 CloudWatch
使用以下步骤创建连接到的 VPC 终端节点 CloudWatch。
先决条件
为允许流量进入的 VPC 终端节点创建安全组 CloudWatch。例如,添加允许来自 VPC CIDR 块的 HTTPS 流量的规则。
为创建 VPC 终端节点 CloudWatch
打开位于 https://console.aws.amazon.com/vpc/
的 Amazon VPC 控制台。 -
在导航窗格中,选择端点。
-
选择 创建端点。
-
对于 Name tag(名称标签),输入端点的名称。
-
对于 Service category(服务类别),选择 AWS 服务。
-
对于服务,请选择 com.amazonaws。
region
. 监控。 -
对于 VPC,选择您的 VPC。
-
对于 Subnets(子网),选择可用区,然后选择私有子网。
-
对于 Security group(安全组),选择 VPC 端点的安全组。
-
对于 Policy(策略),选择 Full access(完全访问权限)以允许所有主体通过 VPC 端点对所有资源执行所有操作。
-
(可选)若要添加标签,请选择 Add new tag(添加新标签),然后输入该标签的键和值。
-
选择创建端点。初始状态为 Pending(待处理)。在转到下一步之前,请等到状态变为 Available(可用)。这可能需要几分钟的时间。
步骤 5:测试 VPC 端点
验证 VPC 终端节点是否正在将请求从您的实例发送到 CloudWatch。
测试 VPC 端点
在您的实例上运行以下 命令。对于 --region
选项,指定您在其中创建 VPC 端点的区域。
aws cloudwatch list-metrics --namespace AWS/EC2 --region
us-east-1
如果您收到响应,甚至是结果为空的响应,则表示您已连接到 CloudWatch 使用 AWS PrivateLink。
如果您遇到UnauthorizedOperation
错误,请确保该实例具有允许访问的 IAM 角色 CloudWatch。
如果请求超时,请验证以下内容:
终端节点的安全组允许流量进入 CloudWatch。
--region
选项指定了您在其中创建 VPC 端点的区域。
步骤 6:清除
如果不再需要您为本教程创建的堡垒主机和实例,则可以将其删除。
终止实例
-
打开亚马逊 EC2 控制台,网址为https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择两个测试实例,然后依次选择 Instance state(实例状态)、Terminate instance(终止实例)。
-
当系统提示您确认时,选择终止。
如果您不再需要 VPC 端点,则可以将其删除。
删除 VPC 端点
打开位于 https://console.aws.amazon.com/vpc/
的 Amazon VPC 控制台。 -
在导航窗格中,选择端点。
-
选择 VPC 端点。
-
选择 Actions(操作)、Delete VPC Endpoint(删除 VPC 端点)。
-
提示进行确认时,输入
delete
,然后选择 Delete(删除)。