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, 2894 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?

Mit freundlichen Grüßen

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.

Mit freundlichen Grüßen Shamaz
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
Webbrowser
Amazon Prime und zwei Bildschirme (7)

Erfahrungsbericht von agowa338 zum Thema Webbrowser ...

Windows Server
Jnlp Endungen mit Java automatisch verknüpfen über GPO (10)

Frage von staybb zum Thema Windows Server ...

Vmware
Backup VMWare - Amazon EC2 (6)

Frage von PharIT zum Thema Vmware ...

Server
gelöst Amazon-IP, Googlebot und wp-login (12)

Frage von NoWoPr zum Thema Server ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...