AWS RoboMaker のトラブルシューティング - AWS RoboMaker

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

AWS RoboMaker のトラブルシューティング

以下のセクションでは、AWS RoboMaker のシミュレーション、IDE、Simulation WorldForge の使用時に発生する可能性のあるエラーや問題のトラブルシューティングに関するアドバイスを提供します。ここに記載されていない問題が見つかった場合は、このページの下部で [フィードバックを提供します] ボタンを使用して報告することができます。

シミュレーションジョブのログは、CloudWatch Logs コンソールで確認できます。デフォルトでは、AWS RoboMaker はアプリケーション用に生成されたシミュレーションジョブのログをアップロードします。streamOutputToCloudWatchTrue に設定すると、ツールにも同じ動作が適用されます。シミュレーションジョブで カスタムアップロード設定の追加 がアップロードするよう設定することもできます。

詳細については、「AWS RoboMaker でのログ記録とモニタリング」を参照してください。

シミュレーションジョブ

問題:シミュレーションジョブが失敗しました。

以下の質問を参考にして根本原因を特定し、推奨アクションを実行してください。

Amazon S3 リソースは AWS RoboMaker と同じリージョンにありますか?

ロボットアプリケーション、シミュレーションアプリケーション、および出力は、AWS RoboMaker と同じリージョンにあることが必要です。アプリケーションのソースとシミュレーションジョブの出力の場所を確認してください。

ロボットアプリケーションは異常終了しましたか?

シミュレーション用にロボットアプリケーションをセットアップするときに問題がありました。Amazon CloudWatch でシミュレーションジョブのロボットアプリケーションを確認してください。

ログにはシミュレーションジョブの詳細画面からアクセスします。[Logs] (ログ) を選択し、ログストリームを選択します。特定の問題を見つけるには、フィルターを使用します。例えば、WARNING または ERROR を使用します。

アプリケーションの .so ファイルが欠落していませんか?

アプリケーションがクラッシュした場合、依存する共有オブジェクト (.so) ファイルが欠落している場合があります。環境のアプリケーションバンドルを抽出し、必要な共有オブジェクトライブラリが /usr/local/lib または /usr/lib に存在することを確認してください。依存関係がパッケージ .xml ファイルに追加されていることを確認します。

AWS CLI でロールの ARN を使用しましたか?

AWS CLI から create-simulation-job を呼び出す場合は、ロール名だけでなく、ロールの完全な Amazon リソースネーム (ARN) を使用します。

ロールには AWS RoboMaker の信頼ポリシーがありますか?

AWS CLI から create-simulation-job を呼び出して IAM ロールの完全な Amazon リソースネーム (ARN) を渡す場合、信頼ポリシーの特権が十分ではない可能性があります。以下のように、ロールに robomaker.amazonaws.com と信頼関係があることを確認します。

{"Version": "2012-10-17", "Statement": {"Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": {"aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件キーは、サービス間のトランザクション中に AWS サービスが混乱した代理として使用されるのを防ぐことができます。条件キーに関する詳しい情報については、「SourceAccount」と「SourceArn」を参照してください。

ロールアクセスの表示と IAM ロールへの信頼ポリシーの追加の詳細については、「ロールの修正」を参照してください。

Amazon S3 に発行するためのアクセス許可がロールにありますか?

シミュレーションジョブの出力 Amazon S3 バケットを指定する場合、ロールにはバケットへの書き込みアクセス許可が必要です。信頼ポリシーを更新して書き込みアクセス許可を含めてください。以下の信頼ポリシーの例は、読み取りアクセス許可、リストアクセス許可、および Amazon S3 バケットへの書き込みアクセス許可を追加します。

{"Action": "s3:ListBucket", "Resource": [ "my-bucket/*" ], "Effect": "Allow" },{"Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "my-bucket/*" ], "Effect": "Allow" },{"Action": "s3:Put*", "Resource": [ "my-bucket/*" ], "Effect": "Allow" }

ロールには、CloudWatch に発行するアクセス許可がありますか?

IAM ロールのアクセス許可ポリシーを更新して CloudWatch へのアクセスを含めてください。

{"Effect": "Allow", "Action": [ "logs:CreateLogGroup", "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogStreams" ], "Resource": "*" }

アプリケーションに不一致のエンティティタグがありませんか?

エンティティタグ (ETag) は、シミュレーションの作成時に提供される Amazon S3 オブジェクトのハッシュです。ETag は、オブジェクトのコンテンツに加えた変更のみを反映し、メタデータに加えた変更は反映しません。ロボットアプリケーションやシミュレーションバンドルの内容を、AWS RoboMaker で使用する前に Amazon S3 で変更すると、バージョンの不一致が発生します。

この問題を解決するには、ロボットアプリケーションやシミュレーションアプリケーションの新しいバージョンを作成し、更新したアプリケーションバンドルのキーの場所を指定します。詳細については、「アプリケーションバージョンの作成」または「シミュレーションアプリケーションバージョンの作成」を参照してください。

サブネットの Elastic Network Interface (ENI) の制限を超えていますか?

AWS RoboMaker は、シミュレーションジョブの実行先であるサブネットの同時実行シミュレーションジョブごとに 1 つの ENI を使用します。これらの ENI ごとに IP アドレスを割り当てる必要があります。この問題を解決する方法は以下のとおりです。

未使用の ENI を削除し、サブネットの IP アドレスを解放します。未使用の ENI を削除するには、「ネットワークインターフェイスの削除」を参照してください。

AWS Management Console を使用して、特定の AWS リージョンの ENI に対してサービス制限の引き上げをリクエストします。

起動コマンドは適切に設定されていますか?

シミュレーションが複雑な場合やコンテナイメージが大きい場合は、シミュレーションジョブの起動に数分かかることがあります。AWS RoboMaker でシミュレーションジョブの準備に 25 分以上かかる場合は、起動コマンドに問題がある可能性があります。ジョブをキャンセルして新しいシミュレーションジョブを作成します。問題が解決しない場合は、AWS サポートまでお問い合わせください。

CloudWatch Logs を使用すると、シミュレーションとロボットアプリケーションの実行ログにエラーがないかどうかを確認できます。ターミナルのカスタマイズされたツールを追加して、実行中のシミュレーションジョブに接続し、トラブルシューティングを行うこともできます。

サブネットは、AWS RoboMaker でサポートされているゾーンにありますか?

AWS RoboMaker でサポートされている AWS アベイラビリティーゾーンのうちの 2 つでサブネットを指定してください。サポートされている AWS アベイラビリティーゾーンのリストは、API レスポンスに記載されています。

ワールドファイルのモデル参照は正しいですか?

CloudWatch Logs を使用して、ワールドファイルのすべてのモデルが正しいことを確認します。モデルが見つからない場合は、以下のエラーが表示されます。

[Wrn] [ModelDatabase.cc:340] Getting models from[http://models.gazebosim.org/]. This may take a few seconds. [Wrn] [ModelDatabase.cc:212] Unable to connect to model database using [http://models.gazebosim.org//database.config]. Only locally installed models will be available. [Err] [ModelDatabase.cc:414] Unable to download model[model://model_name] [Err] [SystemPaths.cc:429] File or path does not exist[""] Error [parser.cc:581] Unable to find uri[model://model_name]

Simulation WorldForge

問題:ワールド生成ジョブが失敗しました。

ワールド生成ジョブが完了しなかった場合は、ワールドカウント floorplanCount * interiorCountPerFloorplan が 1 より大きく 50 未満であるか確認してください。

問題:ワールドエクスポートジョブが失敗したのはなぜですか?

以下の質問を参考にして根本原因を特定し、推奨アクションを実行してください。

AWS RoboMaker の信頼ポリシーがありますか?

AWS CLI から create-world-export-job を呼び出して IAM ロールの完全な Amazon リソースネーム (ARN) を渡す場合、信頼ポリシーの特権が十分ではない可能性があります。以下のように、ロールに robomaker.amazonaws.com と信頼関係があることを確認します。

{"Version": "2012-10-17", "Statement": {"Effect": "Allow", "Principal": { "Service": "robomaker.amazonaws.com" }, "Action": "sts:AssumeRole", "Condition": {"StringEquals": {"aws:SourceAccount": "account#" // Account where the simulation job resource is created }, "StringEquals": {"aws:SourceArn": "arn:aws:robomaker:region:account#:simulation-job/*" } } } }

条件キーは、サービス間のトランザクション中に AWS サービスが混乱した代理として使用されるのを防ぐことができます。条件キーに関する詳しい情報については、「SourceAccount」と「SourceArn」を参照してください。

Amazon S3 に発行するためのアクセス許可がロールにありますか?

エクスポートジョブの出力 Amazon S3 バケットを指定する場合、ロールにはバケットへのアクセス許可が必要です。信頼ポリシーを更新してアクセス許可を含めてください。

{"Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:GetObject", "s3:PutObject" ], "Resource": "my-bucket" }

エクスポートジョブに対して指定されているバケットを変更または削除しましたか?

エクスポートジョブ中にバケットを更新すると、エクスポートジョブの ResourceNotFound エラーが発生することがあります。

問題:ワールドイメージに問題があります。

以下の質問を参考にして根本原因を特定し、推奨アクションを実行してください。

出入口にドアがないのはなぜですか?

ドアは、バージョン 2 以降のテンプレートを使用している場合しか追加できません。バージョン 1 テンプレートを新しいバージョンに更新できます。詳細については、「シミュレーションワールドテンプレートのバージョン、機能、および変更」を参照してください。

AWS RoboMaker Simulation WorldForge では一意でランダムなワールドが作成されるため、指定したドア設定は生成時にワールドに存在しない可能性があります。例えば、テンプレートでリビングルームとキッチンの間にドアを指定し、それらの部屋の間に開放壁があるとします。出入口の代わりに開放壁があるので、そこにはドアを追加できないはずです。

ドアが部屋の入口を塞いでるのはなぜですか?

部屋の入口を塞ぐドアは、ロボットへのチャレンジに使用できる状況です。このチャレンジをロボットに提示しないワールドを作成するには、以下の作業のいずれかを行ってください。

ワールドテンプレートから別のワールドを生成する。新しいワールドで生成されたドアは入口を塞がないかもしれません。

ワールドテンプレート内のドアの開放率を変更する。

ワールドイメージ内の壁が、シミュレーションジョブ内またはエクスポートされたワールド内の壁よりも短いのはなぜですか?

Simulation WorldForge ワールドを壁に隠れることなく表示できるようにするために、AWS RoboMaker ではワールドイメージ内の壁が切り取られます。壁の高さは、作成したワールドのワールドテンプレートで指定した高さになります。

バージョン 2 以降のテンプレートで生成されたワールドでは、ワールドイメージにおいてドアモデルが切り取られません。ワールドイメージ内のドアの高さは、作成したワールドのドアの高さと同じになります。