Amazon AWS PHP SDK — Кластер не запускается — Указанное имя ключа SSH недействительно

Я пытаюсь создать страницу PHP для запуска кластера и добавления заданий в поток заданий.

$response = $emr->run_job_flow($nameOfRun, array(
        'Ec2KeyName' => 'hadoop',
        'HadoopVersion' => '0.20',
        'KeepJobFlowAliveWhenNoSteps' => $clusterAlive,
        'InstanceGroups' => array(
                array( // Group #1
                        'InstanceCount' => $numOfMaster,
                        'InstanceRole' => 'MASTER',
                        'InstanceType' => $masterInstanceType,
                        'Market' => 'ON_DEMAND',
                        'Name' => 'Master',
                ),
                array( // Group #2
                        'InstanceCount' => $numOfSlaves,
                        'InstanceRole' => 'CORE',
                        'InstanceType' => $slaveInstanceType,
                        'Market' => 'ON_DEMAND',
                        'Name' => 'Slaves',
                )
        ),
        'Placement' => array(
                'AvailabilityZone' => 'us-east-1d'
        )
));

Кластер запущен, и я вижу идентификатор потока заданий. Но он начинает выключаться сразу после запуска. Когда я делаю elastic-mapreduce --list, для этого кластера состояние Failed.

Любые известные проблемы или где-то я делаю неправильно? Может ли AvailabilityZone вызывать проблему?

Я проверил из консоли AWS, она выдает эту ошибку - The given SSH key name was invalid Я проверил, ключ доступа и секретный ключ, которые я указал в config.inc.php, верны и работают.

С уважением, Картикея Синха


person Kartikeya Sinha    schedule 30.08.2012    source источник


Ответы (2)


Похоже, что есть четыре разных подводных камня, которые могут вызвать ошибку, как описано в этом AWS. тема:

  1. Указание точного имени пары ключей из консоли.
  2. Указание пары ключей, которая существует в регионе, отличном от региона вашей конечной точки.
  3. Использование пары ключей для другого сервиса AWS вместо одного для EC2.
  4. Использование переименованного pem-файла пары ключей, когда он должен совпадать с парой ключей в консоли (на самом деле это особый случай 1).

Если все выглядит правильно, попробуйте удалить пару ключей и создать новую.


Основываясь на прочтении документов PHP SDK, я думаю, что проблема в том, что вы вообще указываете EC2KeyName (ваши комментарии предполагают, что вы не хотите привязывать конкретный файл pem к экземплярам EC2; вам просто нужен доступ с помощью секретного ключа и ключа доступа).

Ec2KeyName — строка — необязательно — указывает имя пары ключей Amazon EC2, которую можно использовать для подключения по ssh к главному узлу от имени пользователя «hadoop». [Ограничения: значение должно быть от 0 до 256 символов и должно соответствовать следующему шаблону регулярного выражения:

[ -퟿-�������-������\r\n\t]*]

Этот параметр относится к файлам пары ключей pem, которые вы можете связать с инстансами EC2. Ваши комментарии предполагают, что вы говорите конкретно о AccessKeys и SecretAccessKeys, которые являются разными понятиями. Файлы pem дают вам ssh доступ к экземплярам EC2. Последние разрешают вам использовать AWS API.

Вы должны быть в состоянии убить этот необязательный параметр и заставить работу работать, хотя вы не сможете ssh входить в связанные экземпляры EC2 без файла pem.

person Christopher    schedule 30.08.2012
comment
По поводу 3-го пункта: Как узнать, подходит ли пара ключей для EC2 или нет? В консоли AWS нет такой опции для просмотра. - person Kartikeya Sinha; 30.08.2012
comment
@akki Если это указано здесь, это (обратите внимание, что это URL-адрес региона us-east-1): console.aws.amazon.com/ec2/home?region=us-east-1#s=KeyPairs - person Christopher; 30.08.2012
comment
Проверил, первые 3 пункта в норме. 1. Пара ключей точная 2. Она из того же региона - us-east-1 3. Эта пара ключей указана для службы EC2. Что касается 4-го пункта, AWS SDK для PHP для работы требуется только ключ доступа и секретный ключ, я думаю, нет файлов pem. Верно? - person Kartikeya Sinha; 30.08.2012
comment
@akki Попробовал бы создать новый. Если это не сработает, боюсь, у меня закончились идеи. - person Christopher; 30.08.2012
comment
Спасибо за вашу помощь. Попробую создать новый и обновлю на тот же - person Kartikeya Sinha; 30.08.2012
comment
Повторяю, если вы пропустили: о 4-м пункте, AWS SDK для PHP для работы требуется только ключ доступа и секретный ключ, я думаю, нет файлов pem. Верно? - person Kartikeya Sinha; 30.08.2012
comment
@akki Думаю, я понял проблему. Отредактировал мой ответ с некоторыми ссылками на AWS SDK. - person Christopher; 30.08.2012
comment
Большое спасибо Кристофер. Это помогло. На самом деле имя пары ключей, которое я указал здесь, не совпадало с именем пары ключ доступа/секретный ключ. - person Kartikeya Sinha; 30.08.2012

Где я был неправ: (это решило мой случай) Имя пары ключей, ключ доступа и секретный ключ которой указаны в файле config.ini.php AWS SDK, и EC2KeyName, которое будет предоставлено при запуске кластера, должны быть одинаковыми. .

person Kartikeya Sinha    schedule 30.08.2012