Amazon EMR クラスターが起動に失敗し、「bootstrap action returned a non-zero return code」(ブートストラップアクションがゼロ以外のリターンコードを返しました) というエラーを返すのはなぜですか?

所要時間1分
0

Amazon EMR クラスター用にカスタムブートストラップアクションを作成しました。クラスターが起動に失敗し、ブーストラップアクションが「bootstrap action 1 returned a non-zero return code」(ブートストラップアクション 1 がゼロ以外のリターンコードを返しました) のようなエラーを返します。

簡単な説明

ブートストラップアクションは、Amazon EMR がクラスターで Amazon Elastic Compute Cloud (Amazon EC2) インスタンスをプロビジョニングした後で実行されます。ブートストラップアクションが失敗すると、Amazon EMR はインスタンスを終了します。詳細については、「クラスターライフサイクルについて」を参照してください。

ブートストラップスクリプトのエラーが原因でブートストラップアクションが失敗する場合、クラスターは起動できません。詳細については、「ブートストラップアクションの基本」を参照してください。

解決方法

ブートストラップアクションが失敗した理由を判断するには、ブートストラップアクションの stderr ログを確認します。これらのログは、Amazon EMR クラスターの作成時に設定した Amazon Simple Storage Service (Amazon S3) のパスまたは LogUri にあります。

例: s3://example-log-location/example-cluster-id/node/example-instance-id/bootstrap-actions/

stderr ログを確認してもスクリプトが失敗した原因がわからない場合は、追加のデバッグ情報を提供するようにスクリプトを変更してください。例えば、bash スクリプトで -ex パラメータを設定します。これにより、ブーストラップアクションログファイルで bash スクリプトのフローを表示することができます。

#!/bin/bash
set -x -e

注: 失敗したブートストラップアクションが、作成したブートストラップアクションではない場合 (例えば、6 個のブートストラップアクションを作成し、「bootstrap action 7 failed with non-zero exit code」(ブートストラップアクション 7 がゼロ以外の終了コードで失敗しました) というエラーメッセージが表示される場合)、そのエラーメッセージは、Amazon EMR がアプリケーションをインストールできなかったか、またはサービスを開始できなかったことを示しています。

この問題をトラブルシューティングするには、Amazon EMR のプロビジョニングログを確認します。Amazon EMR は Puppet を使用して、クラスターでアプリケーションをインストールおよび設定します。ログには、クラスターのプロビジョニング中に発生したエラーに関する情報が含まれる場合があります。

ログを S3 にプッシュするように設定している場合は、クラスターまたは S3 でこれらのログにアクセスできます。ログは、ディスク上の /var/log/provision-node/apps-phase/0/example-UUID}/puppet.log と、s3://example-log-location/example-cluster-id/node/example-instance-id/provision-node/apps-phase/0/{UUID}/puppet.log.gz に保存されます。


関連情報

カスタムブートストラップアクションを使用する

AWS公式
AWS公式更新しました 1年前