3

クラスターを起動してジョブフローにジョブを追加するための 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'
        )
));

クラスターが起動され、ジョブ フロー ID が表示されます。しかし、起動後すぐにシャットダウンし始めます。を実行するelastic-mapreduce --listと、そのクラスターの状態は Failed になります。

既知の問題またはどこか間違っていますか? AvailabilityZone が問題を引き起こしている可能性はありますか?

AWS コンソールから確認したところ、このエラーが発生していThe given SSH key name was invalid ます。確認したところ、config.inc.php で提供したアクセス キーと秘密キーは正しく、機能しています。

よろしく、 カルティケヤ・シンハ

4

2 に答える 2

3

このAWS スレッドで概説されているように、エラーを引き起こす可能性のある 4 つの異なる落とし穴があるようです。

  1. コンソールから正確なキーペア名を指定します。
  2. エンドポイントのリージョンとは異なるリージョンに存在するキーペアを指定する。
  3. EC2 のキーペアではなく、別の AWS サービスのキーペアを使用する。
  4. 名前を変更したキーペア pem ファイルを使用して、コンソールのキーペアと一致する必要がある場合 (実際には 1 の特殊なケース)。

問題がなければ、キーペアを削除して新しいキーペアを作成してみてください。


PHP SDK docs を読んだことに基づいて、問題はあなたがEC2KeyNameまったく指定していることだと思います(あなたのコメントは、特定のpemファイルをEC2インスタンスに結び付けたくないことを示唆しています;むしろ、シークレットでアクセスしたいだけですキーとアクセスキー)。

Ec2KeyName - 文字列 - オプション - 「hadoop」と呼ばれるユーザーとしてマスター ノードに ssh するために使用できる Amazon EC2 キー ペアの名前を指定します。[制約: 値は 0 ~ 256 文字である必要があり、次の正規表現パターンと一致する必要があります。

[\u0020-\uD7FF\uE000-\uFFFD\uD800\uDC00-\uDBFF\uDFFF\r\n\t]*]

このパラメータは、EC2 インスタンスに関連付けることができる pem キーペア ファイルを参照します。あなたのコメントは、異なる概念である AccessKeys と SecretAccessKeys について具体的に話していることを示唆しています。pem ファイルをssh使用すると、EC2 インスタンスにアクセスできます。後者は、AWS API に対してユーザーを承認します。

sshそのオプションのパラメーターを強制終了して、ジョブを機能させることができるはずですが、pem ファイルがないと関連する EC2 インスタンスに入ることができません。

于 2012-08-30T12:19:54.407 に答える
0

私が間違っていた場所: (これで私の場合は解決しました) AWS SDK の config.ini.php ファイルで指定されているアクセス キーとシークレット キーのキー ペアの名前と、クラスターの起動時に指定する EC2KeyName は同じにする必要があります。 .

于 2012-08-30T14:13:46.887 に答える