初めてJavaでaws apiを使用して、ec2インスタンスのクラウドウォッチ統計を取得しています。私はこれについてググって、いくつかのコードスニペットを見つけました。ここにあります
AmazonCloudWatchClient cloudWatch = new AmazonCloudWatchClient(
new BasicAWSCredentials(AccessKey, SecretKey));
cloudWatch.setEndpoint("ec2-<my-static-ip>.compute-1.amazonaws.com");
long offsetInMilliseconds = 1000 * 60 * 60 * 24;
Dimension instanceDimension = new Dimension();
instanceDimension.setName("Instanceid");
instanceDimension.setValue(InstanceId);
GetMetricStatisticsRequest request = new GetMetricStatisticsRequest()
.withStartTime(
new Date(new Date().getTime()
- offsetInMilliseconds))
.withNamespace("AWS/EC2")
.withPeriod(60 * 60)
.withDimensions(
new Dimension().withName("InstanceId").withValue(
InstanceId))
.withMetricName("CPUUtilization")
.withStatistics("Average", "Maximum")
.withEndTime(new Date());
GetMetricStatisticsResult getMetricStatisticsResult = cloudWatch
.getMetricStatistics(request);
double avgCPUUtilization = 0;
List dataPoint = getMetricStatisticsResult.getDatapoints();
for (Object aDataPoint : dataPoint) {
Datapoint dp = (Datapoint) aDataPoint;
avgCPUUtilization = dp.getAverage();
System.out.println(InstanceId
+ " instance's average CPU utilization : "
+ dp.getAverage());
}
} catch (AmazonServiceException ase) {
System.out
.println("Caught an AmazonServiceException, which means the request was made "
+ "to Amazon EC2, but was rejected with an error response for some reason.");
System.out.println("Error Message: " + ase.getMessage());
System.out.println("HTTP Status Code: " + ase.getStatusCode());
System.out.println("AWS Error Code: " + ase.getErrorCode());
System.out.println("Error Type: " + ase.getErrorType());
System.out.println("Request ID: " + ase.getRequestId());
}
したがって、このコードを使用して統計を取得しようとしましたが、初めてエラーがスローされます
com.amazonaws.AmazonClientException: Unable to execute HTTP request:Connection to https://ec2-<my-static-ip>.compute-1.amazonaws.com refused
それから、httpsリクエストを送信していると思いました。インスタンスでsslを有効にして試したところ、例外が発生しました。
com.amazonaws.AmazonClientException: Unable to execute HTTP request: peer not authenticated
インスタンスでOpenJDKを使用していたので、それが問題を引き起こしている可能性があると考えました。次に、openjdk を削除し、Oracle JDK 1.7 をインストールしました。それでも同じ問題。
私の質問は、
1) 統計を取得するために (HTTPS ではなく) HTTP リクエストのみを送信するにはどうすればよいですか?
2) この問題を解決して結果を得るにはどうすればよいですか?
しかし、ネット、ブログ、フォーラム、ドキュメントなどで検索してめちゃくちゃになったので、ドキュメントを読むように頼まないでください。だから、私に解決策を提供するか、どこが間違っているのか教えてください。
誰でもこの問題を手伝ってくれませんか。
前もって感謝します。