Сообщение об ошибке AWS: InvalidInstanceID.NotFound - PullRequest
8 голосов
/ 23 января 2012

Я пытаюсь запустить облачную машину Amazon EC2 методом [startInstance][2], используя aws-sdk в Java.Мой код выглядит следующим образом.

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);
}

Когда я запускаю приведенный выше код, я получаю следующую ошибку 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)

Ответы [ 4 ]

15 голосов
/ 23 января 2012

Сообщение об ошибке AWS: идентификатор экземпляра 'i-2b97ac2f' не существует

Здесь вам придется принять ответ AWS как должное, то есть экземпляр не существует;)

А если серьезно: возможно, вы уже убедились, что на самом деле запускаете экземпляр с этим идентификатором в своей учетной записи? Тогда это, скорее всего, вызвано нацеливанием на неверную конечную точку API, поскольку идентификатор экземпляра действителен только в пределах определенного региона (если он не указан, по умолчанию используется значение «us-east-1», см. Ниже).

В этом случае вам нужно указать фактическую область экземпляра с помощью метода setEndpoint () объекта AmazonEC2Client в явно глобальной переменной ec2 перед вызовом startInstances () .

Есть несколько примеров, касающихся использования регионов с AWS SDK и всех доступных в настоящее время региональных URL-адресов конечных точек AWS, перечислены в регионах и конечных точках , в частности, Amazon Elastic Compute Cloud (EC2) по умолчанию «us-east-1»:

Если вы просто укажете общую конечную точку (ec2.amazonaws.com), Amazon EC2 направляет ваш запрос в конечную точку us-east-1.

11 голосов
/ 10 февраля 2013

Мы запускаем сервис (Qubole), который часто порождает, а затем тегирует (а в некоторых случаях завершает работу) экземпляры AWS немедленно.

Мы обнаружили, что Amazon время от времени объявляет instanceid недействительным - даже если он только что его создал. Повторная попытка несколько раз с добавленным временем сна обычно решает проблему. Даже общий интервал повторения в 15 с оказался недостаточным в редких случаях.

Этот опыт исходит из региона Юза. Мы не делаем API-звонки в разные регионы, так что это не объяснение. Скорее всего - это печально известная возможная согласованность на работе - когда AWS не может обеспечить согласованность чтения после записи для этих вызовов API.

0 голосов
/ 05 июня 2019

InvalidInstanceID.NotFound означает, что указанный экземпляр не существует.

  • Убедитесь, что вы указали регион, в котором находится экземпляр, если он не находится в регионе по умолчанию.
  • Эта ошибка может возникать из-за того, что идентификатор недавно созданного экземпляра не распространяется по системе. Для получения дополнительной информации см. Окончательная согласованность .
0 голосов
/ 27 сентября 2013

Я использую AWS ruby ​​api, и я заметил ту же проблему при создании образа AMI, и его состояние находится в состоянии ожидания, когда я смотрю в консоль AWS, но через некоторое время изображение становится доступным для использования.

Вот мой сценарий

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

sleep 5 while image.state != :available

Я сплю около 5 секунд, чтобы изображение было доступно, но я получаю сообщение об ошибке «Сообщение об ошибке AWS: InvalidInstanceID.NotFound».Во время моего тестирования это нормально, но в большинстве случаев это, похоже, дает сбой при непрерывной интеграции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...