Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Amazon AWS java SDK describeInstances für eu-west-1 Region

Frage Entwicklung Java

Mitglied: Shamaz

Shamaz (Level 1) - Jetzt verbinden

09.09.2012, aktualisiert 13:07 Uhr, 2913 Aufrufe

Ich habe jetzt schon so einige Beiträge gelesen. Alle machen sie auch ungefähr das selbe, aber keiner dieser Beiträge konnte mein Problem lösen.

Bei amazon habe ich in der Region eu-west-1 (Irland) einige Instanzen. Diese sind teils angeschaltet oder auch aus. Beim einschalten über das Webinterface (Amazon AWS Console) kann man leider nicht gleich fest mit geben, welche elastic ip auf der instanze liegen soll. Also wollte ich mir ein Java programm schreiben, was einfach das nach einem start macht.

Dafür holte ich mir die AWS java SDK mit den tools für Eclipse (Juno). Über diese AWS Tools legte ich ein neues Projekt an wodurch gleich das richtige "Credential File" im Projekt mit den richtigen werten angelegt wurde.

Nun dachte ich, lass dir erst mal die Instanz IDs geben, mit denen gehts dann weiter. Nüscht ist. Mein Programm, was das machen soll sieht folgendermaßen aus:
01.
import java.io.IOException; 
02.
import java.util.List; 
03.
 
04.
import com.amazonaws.auth.AWSCredentials; 
05.
import com.amazonaws.auth.PropertiesCredentials; 
06.
import com.amazonaws.services.ec2.AmazonEC2Client; 
07.
import com.amazonaws.services.ec2.model.DescribeInstancesRequest; 
08.
import com.amazonaws.services.ec2.model.DescribeInstancesResult; 
09.
import com.amazonaws.services.ec2.model.Instance; 
10.
import com.amazonaws.services.ec2.model.Reservation; 
11.
 
12.
/** 
13.
 *  
14.
 */ 
15.
 
16.
/** 
17.
 * @author shamaz 
18.
 *  
19.
 */ 
20.
public class Main { 
21.
	private static AWSCredentials credentials = null; 
22.
	private static AmazonEC2Client ec2 = null; 
23.
 
24.
	/** 
25.
	 * @param args 
26.
	 */ 
27.
	public static void main(String[] args) { 
28.
 
29.
		init(); 
30.
 
31.
		DescribeInstancesRequest request = new DescribeInstancesRequest(); 
32.
		DescribeInstancesResult result = ec2.describeInstances(request); 
33.
		List<Reservation> reservations = result.getReservations(); 
34.
 
35.
		 
36.
		System.out.println("Die InstanzenIDs sind:"); 
37.
		for (Reservation reservation : reservations) { 
38.
			List<Instance> instances = reservation.getInstances(); 
39.
			for (Instance instance : instances) { 
40.
				System.out.println(instance.getInstanceId()); 
41.
42.
43.
 
44.
45.
 
46.
	public static void init() { 
47.
		try { 
48.
			credentials = new PropertiesCredentials( 
49.
					Main.class.getResourceAsStream("AwsCredentials.properties")); 
50.
			ec2 = new AmazonEC2Client(credentials); 
51.
 
52.
		} catch (IOException e) { 
53.
			e.printStackTrace(); 
54.
55.
 
56.
57.
}
Es kommt einfach nichts in das result.Reservation zurück. Dann habe ich mir gedacht, dass könnte an den Zonen und/oder Regionen liegen. Gib mir diese also mal aus. Das mache ich mit diesem Programm:
01.
import java.io.IOException; 
02.
import java.util.HashSet; 
03.
import java.util.List; 
04.
import java.util.Set; 
05.
 
06.
import com.amazonaws.AmazonServiceException; 
07.
import com.amazonaws.auth.AWSCredentials; 
08.
import com.amazonaws.auth.PropertiesCredentials; 
09.
import com.amazonaws.services.ec2.AmazonEC2Client; 
10.
import com.amazonaws.services.ec2.model.DescribeAvailabilityZonesResult; 
11.
import com.amazonaws.services.ec2.model.DescribeInstancesRequest; 
12.
import com.amazonaws.services.ec2.model.DescribeInstancesResult; 
13.
import com.amazonaws.services.ec2.model.Instance; 
14.
import com.amazonaws.services.ec2.model.Reservation; 
15.
 
16.
/** 
17.
 *  
18.
 */ 
19.
 
20.
/** 
21.
 * @author shamaz 
22.
 *  
23.
 */ 
24.
public class Main { 
25.
	private static AWSCredentials credentials = null; 
26.
	private static AmazonEC2Client ec2 = null; 
27.
 
28.
	/** 
29.
	 * @param args 
30.
	 */ 
31.
	public static void main(String[] args) { 
32.
 
33.
		init(); 
34.
 
35.
		try { 
36.
            DescribeAvailabilityZonesResult availabilityZonesResult = ec2.describeAvailabilityZones(); 
37.
            System.out.println("You have access to " + availabilityZonesResult.getAvailabilityZones().size() + 
38.
                    " Availability Zones."); 
39.
            System.out.println("These are: " + availabilityZonesResult.getAvailabilityZones()); 
40.
 
41.
            DescribeInstancesResult describeInstancesRequest = ec2.describeInstances(); 
42.
            List<Reservation> reservations = describeInstancesRequest.getReservations(); 
43.
            Set<Instance> instances = new HashSet<Instance>(); 
44.
 
45.
            for (Reservation reservation : reservations) { 
46.
                instances.addAll(reservation.getInstances()); 
47.
48.
 
49.
            System.out.println("You have " + instances.size() + " Amazon EC2 instance(s) running."); 
50.
        } catch (AmazonServiceException ase) { 
51.
                System.out.println("Caught Exception: " + ase.getMessage()); 
52.
                System.out.println("Reponse Status Code: " + ase.getStatusCode()); 
53.
                System.out.println("Error Code: " + ase.getErrorCode()); 
54.
                System.out.println("Request ID: " + ase.getRequestId()); 
55.
56.
 
57.
58.
 
59.
	public static void init() { 
60.
		try { 
61.
			credentials = new PropertiesCredentials( 
62.
					Main.class.getResourceAsStream("AwsCredentials.properties")); 
63.
			ec2 = new AmazonEC2Client(credentials); 
64.
 
65.
		} catch (IOException e) { 
66.
			e.printStackTrace(); 
67.
68.
 
69.
70.
}
Heraus kommt:

You have access to 3 Availability Zones.
These are: [{ZoneName: us-east-1b, State: available, RegionName: us-east-1, }, {ZoneName: us-east-1c, State: available, RegionName: us-east-1, }, {ZoneName: us-east-1d, State: available, RegionName: us-east-1, }]
You have 0 Amazon EC2 instance(s) running.

Da fehlt einfach meine Zone und Region. Ich habe die Instanzen in "eu-west-1". Und deshalb denke ich, dass deshalb keine "Reservations" zurück geliefert werden.

Meine Frage also, was muss ich machen um das Problem zu lösen?

mfg

Shamaz


EDIT:

Kaum gibt man das richtige bei Google ein, schon gehts. Dieser Artikel war die Lösung: http://aws.amazon.com/articles/3604
Der Trick war einfach noch beim "init" diese Zeile einzufügen:

ec2.setEndpoint("https://eu-west-1.ec2.amazonaws.com");

Schade, dass es so viel Nerven gekostet hat, was passendes für den Europäischen Raum zu finden. Da finde ich gibt es noch Nachholungsbedarf.

Somit ist die Sache erst mal für mich erledigt.

mfg Shamaz
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Heiß diskutierte Inhalte
Linux Netzwerk
gelöst DHCP vergibt keine Adressen (31)

Frage von Maik82 zum Thema Linux Netzwerk ...

Exchange Server
gelöst Bestehende eMails autoamatisch weiterleiten (22)

Frage von metal-shot zum Thema Exchange Server ...

Apache Server
gelöst Lets Encrypt SSL mit Apache2 (20)

Frage von banane31 zum Thema Apache Server ...

Switche und Hubs
LAG zwischen SG300-Switches macht Probleme. Wer weiß Rat? (20)

Frage von White-Rabbit2 zum Thema Switche und Hubs ...