##AWS Lambda で Javaを使う 目次
・Eclipse準備編
・登録実行編(いつか)
・実装編 - EC2を止める/立ち上げる
・実装編 - CloudWatchの引数を確認する
・実装編Tips - ReagionとInstanceIDからInstance名を取得する
ReagionとInstanceIDからInstance名を取得する
引数にReagionコードとInstanceIDを渡すと、Instance名を返してあげる。
また、二回目以降、同じReagionコードを渡した場合、Mapに格納している値を返却する。
// <reagion id <<incetance id, incetance key name>>
Map<String, Map<String, String>> resolveInstance = new HashMap<>();
private String getEC2InstanceKeyName(String targetReagion, String targetInstanceId) {
if (!resolveInstance.containsKey(targetReagion)) {
// <incetance id, incetance key name>
Map<String, String> incetanceMap = new HashMap<>();
// Instance Id と Instance名を取得 (こんな大層なことしなくても取れそうな気もする。。でも、純正のEC2MetadataUtilsでは取れなさそうだった。)
AmazonEC2 ec2 = AmazonEC2ClientBuilder.standard().withRegion(targetReagion).build();
DescribeInstancesResult ec2Info = ec2.describeInstances();
for(Reservation res : ec2Info.getReservations()) {
for(Instance ins : res.getInstances()) {
incetanceMap.put(ins.getInstanceId(), ins.getKeyName());
}
}
resolveInstance.put(targetReagion, incetanceMap);
}
return resolveInstance.get(targetReagion).get(targetInstanceId);
}