2017-05-26 3 views
0

Ich versuche, die richtigen AvailabilityZones aus dem Amazon Web Services AWS SDK zu erhalten. Ich kenne Region und Endpunkt. Jede Kombination, die ich versuche, gibt us-east-1-Werte statt us-west-2-Werte zurück.Wie bekomme ich die richtigen AWS AvailabilityZones?

ich initialisieren die AWS wie folgt aus:

[default] 
aws_access_key_id = my_aws_access_key_id_here 
aws_secret_access_key = my_aws_secret_access_key_here 
:

AWSCredentials credentials = null; 
try { 
    credentials = new ProfileCredentialsProvider().getCredentials(); 
} catch (Exception e) { 
    throw new AmazonClientException(
      "Cannot load the credentials from the credential profiles file. " + 
      "Please make sure that your credentials file is at the correct " + 
      "location (~/.aws/credentials), and is in valid format.", 
      e); 
} 

EndpointConfiguration endpointConfiguration = new EndpointConfiguration("ec2.us-west-2.amazonaws.com","us-west-2"); 
ec2 = AmazonEC2ClientBuilder.standard() 
     .withEndpointConfiguration(endpointConfiguration) 
     .build(); 

ich meine Config-Datei einrichten auch wie so haben: wie diese Datei auf

[default] 
region = us-west-2 

Und mein Beglaubigungsschreiben gesetzt

Aber wenn ich das tue:

AWSCredentials awsCredentials = new BasicAWSCredentials("my_aws_access_key_id_here", "my_aws_secret_access_key_here"); 
AmazonEC2AsyncClient amazonEC2AsyncClient = new AmazonEC2AsyncClient(awsCredentials); 
DescribeAvailabilityZonesRequest describeAvailabilityZonesRequest = new DescribeAvailabilityZonesRequest(); 
Future<DescribeAvailabilityZonesResult> describeAvailabilityZonesResultFuture = amazonEC2AsyncClient.describeAvailabilityZonesAsync(describeAvailabilityZonesRequest); 
try { 
    DescribeAvailabilityZonesResult describeAvailabilityZonesResult = describeAvailabilityZonesResultFuture.get(); 
    System.out.println(describeAvailabilityZonesResult); 
} catch (Exception e) { 
    e.printStackTrace(); 
} 

bekomme ich folgende Ausgabe:

{AvailabilityZones: [{ZoneName: us-east-1a,State: available,RegionName: us-east-1,Messages: []}, {ZoneName: us-east-1b,State: available,RegionName: us-east-1,Messages: []}, {ZoneName: us-east-1c,State: available,RegionName: us-east-1,Messages: []}, {ZoneName: us-east-1d,State: available,RegionName: us-east-1,Messages: []}, {ZoneName: us-east-1e,State: available,RegionName: us-east-1,Messages: []}]} 

Wie bekomme ich es, die richtigen us-west-2-Werte zu zeigen? Wir haben 6 Instanzen auf us-west-2a, 2b und 2c.

Antwort

1

Haben Sie versucht, die Region während des Aufbaus auf dem Client festzulegen?

private AmazonEC2 provideAmazonEC2() throws Exception { 
    AmazonEC2 amazonEC2 = AmazonEC2ClientBuilder.standard() 
     .withCredentials(new AWSStaticCredentialsProvider(basicAWSCredentials)) 
     .withRegion(Regions.AP_SOUTHEAST_2) 
     .build(); 

    DescribeAvailabilityZonesRequest describeAvailabilityZonesRequest = new DescribeAvailabilityZonesRequest(); 
    DescribeAvailabilityZonesResult describeAvailabilityZonesResultFuture = amazonEC2.describeAvailabilityZones(describeAvailabilityZonesRequest); 

    try { 
     List<AvailabilityZone> describeAvailabilityZonesResult = describeAvailabilityZonesResultFuture.getAvailabilityZones(); 
     System.out.println(describeAvailabilityZonesResult); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return amazonEC2; 
} 

Ausgänge

[{ZoneName: ap-southeast-2a,State: available,RegionName: ap-southeast-2,Messages: []}, {ZoneName: ap-southeast-2b,State: available,RegionName: ap-southeast-2,Messages: []}, {ZoneName: ap-southeast-2c,State: available,RegionName: ap-southeast-2,Messages: []}] 

das ist, was ich erwarten würde das Ergebnis zu sein.

+0

Vielen Dank, das hat funktioniert! Ich hatte etwas sehr ähnliches versucht, was nicht so war. Viel zu viele Möglichkeiten, Dinge zu tun. – user3217883

Verwandte Themen