我目前正在尝试创建一个可以通过 AWS Java SDK 调用和引用 Amazon AWS API 的 Java 应用程序。我已经能够直接调用 S3 和 EC2 等服务,但是当我尝试从 Cloudwatch 提取数据时,我无法获取任何数据点。
我尝试过调整不同的变量(维度、调整时间变量),并尝试通过 CLI 提取数据。当我通过 CLI 请求数据时,我能够获取数据点,但 Java 应用程序没有获取相同的数据。这是我的 CLI 代码:
aws cloudwatch get-metric-statistics --metric-name BucketSizeBytes --namespace "AWS/S3" --start-time 2019-06-21T00:00:00Z --end-time 2019-06-22T00:00:00Z --period 3600 --statistics Average --unit Bytes --output json --region us-east-1 --dimensions Name=BucketName,Value=XXXXX Name=StorageType,Value=StandardStorage
这是我在 Java 端使用的。变量命名空间等于字符串“AWS/S3”,变量区域设置为 Region.US_EAST_1
设置 CloudWatch 客户端
private CloudWatchClient cwClient = CloudWatchClient.builder().region(region).build();
调用数据
public S3 individualS3BucketSize(S3 s3) {
Instant now = Instant.now();
Dimension dimensions = Dimension.builder().name("BucketName").value("XXXXX").name("StorageType").value("StandardStorage").build();
GetMetricStatisticsRequest request = GetMetricStatisticsRequest.builder().namespace(namespace).metricName("BucketSizeBytes")
.statistics(Statistic.AVERAGE)
.startTime(now.minus(Duration.ofDays(1))).endTime(now).period(3600)
.dimensions(dimensions)
.build();
GetMetricStatisticsResponse response;
response = cwClient.getMetricStatistics(request);
System.out.println(response.toString());
}
当调用该方法并运行 print 方法时,我得到:
GetMetricStatisticsResponse(Label=BucketSizeBytes, Datapoints=[])
关于为什么它在 Java 应用程序中返回空白而不是 CLI 的任何想法?