AWS Custom CloudWatch指标 - 按Auto-Scaling组聚合

Tin*_*lon 9 java amazon-ec2 amazon-web-services amazon-cloudwatch

我正在尝试使用Java SDK设置一些自定义AWS CloudWatch指标.

我似乎无法在描述如何获取某些数据的文档中找到任何内容,也不需要包含哪些数据.

MetricDatum datum = new MetricDatum()
    .withDimensions(
        new Dimension()
            .withName("InstanceType").withValue(/* 1 */),
        new Dimension()
            .withName("InstanceId").withValue(/* 2 */)
        /* 3 */
    .withMetricName("My metric").withTimestamp(new Date())
    .withUnit("Percent").withValue(new Double(55.0));
Run Code Online (Sandbox Code Playgroud)

所以,问题(对于上面代码中的每个注释数字):

  1. 我在哪里可以使用Java AWS SDK获取数据?
  2. 我在哪里可以使用Java AWS SDK获取数据?
  3. 我需要包含哪些其他数据才能确保我可以通过自动缩放组进行聚合?(按安全组汇总也没问题)

对于#1,我已经看到我可以对http://169.254.169.254/latest/meta-data/instance-id进行常规HTTP调用以获取实例ID,但我希望这样做所有通过AWS SDK,如果有可用的方法.

Tin*_*lon 9

我将问题发布到亚马逊支持团队.

EC2文档给出了可以被调用以抓取一束元数据,包括InstanceType(问题1)的URL的列表,所述INSTANCEID(2问题),和安全组(问题3).

可以使用AWS SDK for Java获取自动扩展组,方法是获取所有自动扩展组的列表,然后遍历该列表,直到找到具有您自己的instanceId的实例(使用列出的URL检索)以上):

String instanceId = "Your-InstanceId";
AmazonAutoScalingClient amazonAutoScalingClient = new AmazonAutoScalingClient(new BasicAWSCredentials(accessKey, secretKey));
DescribeAutoScalingGroupsResult describeAutoScalingGroupsResult = amazonAutoScalingClient.describeAutoScalingGroups();
for(AutoScalingGroup autoScalingGroup : describeAutoScalingGroupsResult.getAutoScalingGroups()) {
    for(Instance instance : autoScalingGroup.getInstances()) {
        if(instance.getInstanceId().equals(instanceId)) {
            return autoScalingGroup.getAutoScalingGroupName();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)