2012-01-23 22 views
6

Próbuję uruchomić maszynę chmurową Amazon EC2 przy użyciu metody [startInstance][2] za pomocą aws-sdk w Javie. Mój kod jest następujący.Komunikat o błędzie AWS: InvalidInstanceID.NotFound

public String startInstance(String instanceId) throws Exception { 
    List<String> instanceIds = new ArrayList<String>(); 
    instanceIds.add(instanceId); 

    StartInstancesRequest startRequest = new StartInstancesRequest(
      instanceIds); 
    startRequest.setRequestCredentials(getCredentials()); 

    StartInstancesResult startResult = ec2.startInstances(startRequest); 
    List<InstanceStateChange> stateChangeList = startResult 
      .getStartingInstances(); 
    log.trace("Starting instance '{}':", instanceId); 

    // Wait for the instance to be started 
    return waitForTransitionCompletion(stateChangeList, "running", 
      instanceId); 
} 

Kiedy uruchomić powyższy kod, otrzymuję następujący błąd AWS:

Status Code: 400, AWS Request ID: e1bd4795-a609-44d1-9e80-43611e80006b, AWS Erro 
r Code: InvalidInstanceID.NotFound, AWS Error Message: The instance ID 'i-2b97ac 
2f' does not exist 
     at com.amazonaws.http.AmazonHttpClient.handleErrorResponse(AmazonHttpCli 
ent.java:538) 
     at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.ja 
va:283) 
     at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:168 
) 
     at com.amazonaws.services.ec2.AmazonEC2Client.invoke(AmazonEC2Client.jav 
a:5208) 
     at com.amazonaws.services.ec2.AmazonEC2Client.startInstances(AmazonEC2Cl 
ient.java:2426) 

Odpowiedz

13

AWS Error Message: The instance ID 'i-2b97ac2f' does not exist

musisz mieć odpowiedź udzielona tutaj dla AWS, czyli instancja robi nie istnieje;)

Ale poważnie: Prawdopodobnie już zweryfikowałeś, że faktycznie uruchamiasz instancję z tym identyfikatorem na swoim koncie? Najprawdopodobniej jest to spowodowane celowaniem w niewłaściwy punkt końcowy interfejsu API, o ile identyfikator instancji jest ważny tylko w określonym regionie (jeśli nie jest określony, region domyślnie przyjmuje wartość "nas-wschód-1", patrz poniżej).

W tym przypadku trzeba określić rzeczywisty obszar instancji metodą obiektu AmazonEC2Client w pozornie globalnej ec2 zmiennej setEndpoint() przed wywołaniem startInstances().

Istnieją pewne przykłady dotyczące Using Regions with the AWS SDKs i wszystkie aktualnie dostępne AWS adresy końcowych regionalne są wymienione w Regions and Endpoints, a konkretnie Amazon Elastic Compute Cloud (EC2) domyślnie 'us-wschód-1':

If you just specify the general endpoint (ec2.amazonaws.com), Amazon EC2 directs your request to the us-east-1 endpoint.

+0

Absolutnie w prawo. Dzięki za szybką odpowiedź. – diya

10

Prowadzimy usługi (Qubole) to często spawns, a następnie tagów (i w niektórych przypadkach kończy) AWS instancji natychmiast.

Zauważyliśmy, że Amazon będzie od czasu do czasu twierdzić, że instanceid jest nieprawidłowy - mimo że właśnie go utworzył. Ponowna próba kilku razy z pewnym czasem uśpienia zwykle rozwiązuje problem. Nawet całkowity interwał ponowienia próby 15 lat okazał się niewystarczający w rzadkich przypadkach.

To doświadczenie pochodzi z regionu Useast. Nie wykonujemy api api do różnych regionów - więc to nie jest wytłumaczenie. Bardziej prawdopodobne - jest to osławiona ostateczna konsekwencja w pracy - gdzie AWS nie jest w stanie zapewnić spójności odczytu i zapisu dla tych wywołań api.

+0

Dwa razy spotkałem się z tym samym problemem w eu-west-1. – Martijn

0

Używam ruby ​​api AWS i zauważyłem ten sam problem podczas tworzenia obrazu AMI, a jego status jest w toku, gdy patrzę w konsoli AWS, ale po chwili obraz jest dostępny do użytku.

Oto mój skrypt

image = ec2.images.create(:name => image_name, :instance_id => ami_id, :description => desc) 

sleep 5 while image.state != :available 

Śpię przez około 5 sekund na zdjęcie, aby być dostępne, ale pojawia się błąd mówiąc, że „Komunikat o błędzie AWS: InvalidInstanceID.NotFound”. Podczas moich testów jest to w porządku, ale przez większość czasu wydaje się, że to się nie udaje podczas kompilacji ciągłej integracji.

Powiązane problemy