2017-02-12 8 views
0

インスタンスをプログラムで作成できるようにするJavaプログラムを作った。
インスタンスのパブリックIPアドレスを出力するために返されるオブジェクトを解析する必要があります。Amazon aws Public IPがJavaを使用してインスタンスを実行していない

しかし、アマゾンのEC2クライアントのdescribeInstances()機能の結果を出力すると、出力はリストとハッシュマップの迷路であり、パースする方法はわかりません。

これを達成するためにより簡単なアプローチを教えてもらえますか?

私はEc2.describeInstances().getReservations()の結果を文字列に変換し、その文字列を操作してパブリックIPアドレスを出力しようとしました。

これを行うための簡単な方法はありますか?

コード:

DescribeAddressesRequest add =new DescribeAddressesRequest(); 
String Desc= client.describeInstances().getReservations().get(1).toString(); 
+0

ところで、 'vagrant-aws'はすでにプログラムのEc2インスタンスを許可しています –

+0

' getReservations()。get(1) 'が何を返すのか分かりません。 Ec2のためのJava APIは何ですか?ハッシュマップの反復処理で何が問題になっていますか? –

+0

'runInstances()' API呼び出しは、インスタンス情報を取得するために使用できる 'RunInstancesResult'を返します。起動されたインスタンスのリストを取得するには、 'getReservation()。getInstances()'を使用してください。 –

答えて

1

あなたは

Instanceクラスが必要getPublicIpAddress()
インスタンスに割り当てられたパブリックIPv4アドレス、該当

Iドン場合APIを知っているのではなく、予約からあなたはインスタンスに行きます。 SDKは、それが実際のJavaクラスを返すハッシュマップを返さない

getInstances()
1つの以上のインスタンス

for (Reservation r : client.describeInstances().getReservations()) { 
    for (Instance i : r.getInstances()) { 
     String ipv4 = i.getPublicIpAddress(); 
    } 
} 
1

。どのようにしてHashMapsを取り除いているのか分かりません。返されたオブジェクトをStringに変換して操作することは、推奨されるアプローチではありません。あなたはAPIドキュメントを見れば

あなたはdescribeInstances()は、それぞれがInstanceオブジェクトのリストが含まれているReservationオブジェクトのリストが含まれDescribeInstancesResultを返すことがわかります。 InstanceオブジェクトにはgetPublicIpAddress()メソッドがあります。だから、次のような何かができる:

DescribeInstancesRequest request = new DescribeInstancesRequest(); 
String ipAddress = client.describeInstances(request) // You pass the request here 
    .getReservations().get(0) // Get the first reservation 
    .getInstances().get(0) // Get the first instance in the reservation 
    .getPublicIpAddress(); // Get the public IP address of the instance 

私は1つのインスタンスのみが応答であることを期待できるように、DescribeInstancesRequest対象に、予約IDと同様に、いくつかの条件を追加していると仮定します。

パブリックIPアドレスがすぐに割り当てられないことがあります。 IPアドレスがまだ割り当てられていないかどうかを確認しながら、ループでこれを行う必要があります。

関連する問題