使用AWS CLI/Boto3获取VPC端点CloudWatch数据返回空结果求助
解决VPC端点BytesProcessed指标查询返回空数据点的问题
核心问题分析
- 命名空间错误:你使用的
AWS/PrivateLinkEndpoints不是VPC端点指标的正确命名空间,正确命名空间为AWS/PrivateLink。 - 缺少维度指定:CloudWatch控制台默认会自动选中具体的VPC端点维度,但CLI或boto3调用时必须显式指定维度(如
VpcEndpointId),否则查询范围覆盖所有可能的资源,无法匹配到具体数据。 - CloudWatch对不存在的命名空间/指标名不会返回错误,只会返回空数据点,这就是你测试
AWS/BlaBla也得到空响应的原因。
修正后的CLI命令
先通过以下命令获取你的VPC端点ID:
aws ec2 describe-vpc-endpoints --query 'VpcEndpoints[*].VpcEndpointId'
替换下面的your-vpc-endpoint-id后执行查询:
aws cloudwatch get-metric-statistics \ --namespace AWS/PrivateLink \ --metric-name BytesProcessed \ --start-time 2023-04-30T09:00:00Z \ --end-time 2023-04-30T09:30:00Z \ --period 300 \ --statistics Average \ --dimensions Name=VpcEndpointId,Value=your-vpc-endpoint-id
修正后的boto3代码
补充datetime导入并指定VPC端点ID维度:
import boto3 from datetime import datetime client = boto3.client("cloudwatch") response = client.get_metric_statistics( Namespace='AWS/PrivateLink', MetricName='BytesProcessed', StartTime=datetime(2023, 4, 30, 9, 0), EndTime=datetime(2023, 4, 30, 9, 30), Period=300, Statistics=['Average'], Dimensions=[ { 'Name': 'VpcEndpointId', 'Value': 'your-vpc-endpoint-id' } ] ) print(response)
额外说明
如果需要按服务名称查询,可将维度替换为Name=ServiceName,Value=com.amazonaws.region.s3(替换为你实际使用的私有链路服务名称)。
内容的提问来源于stack exchange,提问作者Tom Ron
相关产品推荐
相关产品推荐

