本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
开始使用 Amazon PrivateLink
本教程演示如何使用 Amazon PrivateLink 将请求从私有子网中的 EC2 实例发送到 Amazon CloudWatch。
下图提供了此场景的概述。要从您的计算机连接到私有子网中的实例,您需要首先连接到公有子网中的堡垒主机。堡垒主机和实例必须使用相同的密钥对。由于私钥的 .pem
文件位于您的计算机上,而不是在堡垒主机上,您将使用 SSH 密钥转发。然后,您可以从堡垒主机连接到该实例,而无需在 ssh 命令中指定 .pem
文件。在您为 CloudWatch 设置 VPC 端点后,来自发往 CloudWatch 的实例的流量将解析到端点网络接口,然后使用 VPC 端点发送到 CloudWatch。
出于测试目的,您可以使用单个可用区。在生产中,建议您使用至少两个可用区,来实现低延迟和高可用性。
步骤 1:创建具有子网的 VPC
使用以下过程创建具有公有和私有子网的 VPC。
创建 VPC
-
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/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 策略。
启动堡垒主机
-
通过以下网址打开 Amazon 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(选择现有安全组),然后为堡垒主机选择安全组。
-
-
选择启动实例。
启动实例
-
通过以下网址打开 Amazon 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。您将使用适用于 CloudWatch 的只读 Amazon CLI 命令来执行此操作。
测试 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-metrics 命令。对于
--region
选项,指定您在其中创建 VPC 的区域。aws cloudwatch list-metrics --namespace AWS/EC2 --region
us-east-1
-
几分钟后,命令会超时。这表明您无法从具有当前 VPC 配置的实例访问 CloudWatch。
Connect timeout on endpoint URL: https://monitoring.
us-east-1
.amazonaws.com/ -
保持与您的实例的连接。创建 VPC 端点后,您将再次尝试此 list-metrics 命令。
步骤 4:创建 VPC 端点以访问 CloudWatch
使用以下过程创建连接到 CloudWatch 的 VPC 端点。
先决条件
为 VPC 端点创建安全组,以允许流量流向 CloudWatch。例如,添加允许来自 VPC CIDR 块的 HTTPS 流量的规则。
为 CloudWatch 创建 VPC 端点
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择 Endpoints(端点)。
-
选择 创建端点。
-
对于 Name tag(名称标签),输入端点的名称。
-
对于 Service category(服务类别),选择 Amazon Web Services 服务。
-
对于 Service(服务),选择 com.amazonaws.
region
.monitoring。 -
对于 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
如果您收到响应(即使是结果为空的响应),则说明您已使用 Amazon PrivateLink 连接至 CloudWatch。
如果遇到 UnauthorizedOperation
错误,请确保该实例具有允许访问 CloudWatch 的 IAM 角色。
如果请求超时,请验证以下内容:
端点的安全组允许流量流向 CloudWatch。
--region
选项指定了您在其中创建 VPC 端点的区域。
步骤 6:清理
如果不再需要您为本教程创建的堡垒主机和实例,则可以将其删除。
终止实例
-
通过以下网址打开 Amazon EC2 控制台:https://console.aws.amazon.com/ec2/
。 -
在导航窗格中,选择实例。
-
选择两个测试实例,然后依次选择 Instance state(实例状态)、Terminate instance(终止实例)。
-
当系统提示您确认时,选择终止。
如果您不再需要 VPC 端点,则可以将其删除。
删除 VPC 端点
通过以下网址打开 Amazon VPC 控制台:https://console.aws.amazon.com/vpc/
。 -
在导航窗格中,选择 Endpoints(端点)。
-
选择 VPC 端点。
-
选择 Actions(操作)、Delete VPC Endpoint(删除 VPC 端点)。
-
提示进行确认时,输入
delete
,然后选择 Delete(删除)。