View a markdown version of this page

なしで RUNNABLE でジョブがスタックする一般的な原因 statusReason - AWS Batch

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

なしで RUNNABLE でジョブがスタックする一般的な原因 statusReason

CloudWatch Events からイベントを受信しなかった場合、または原因不明のイベントを受信した場合、一般に以下のようないくつかの原因が考えられます。

awslogs のログドライバーが、コンピューティングリソースで設定されていない

AWS Batch ジョブはログ情報を CloudWatch Logs に送信します。この機能を有効にするには、awslogsのログドライバーを使用するようにコンピューティングリソースを設定する必要があります。コンピューティングリソース AMI を、Amazon ECSに最適化されたAMI (または Amazon Linux) に基づいて作成すると仮定します。次に、このドライバーはデフォルトにより ecs-initのパッケージに登録されます。ここで、別のベース AMI を使用すると仮定します。別の基本 AMI を使用する場合、Amazon ECS コンテナエージェントが開始するときに、awslogs ログドライバーが、 ECS_AVAILABLE_LOGGING_DRIVERS 環境変数で使用可能なログドライバーとして指定されていることを検証する必要があります。詳細については、コンピューティングリソースの AMI 仕様 およびチュートリアル: コンピューティングリソース AMI を作成するを参照してください。

リソースが不十分である

コンピューティングリソースが割り当てることができるリソースを超えた CPU、またはメモリリソースがジョブ定義に指定されている場合、ジョブは配置されません。例えば、ジョブが 4 GiB のメモリを指定し、コンピューティングリソースで使用できるのがそれ以下の場合を考えます。そうなると、そのジョブをそれらのコンピューティングリソースに配置できない場合があります。この場合、ジョブ定義に指定するメモリを減らすか、あるいは環境のコンピューティングリソースを追加する必要があります。一部のメモリは、Amazon ECS コンテナエージェントやその他の重要なシステムプロセス用に予約されています。詳細については、コンピューティングリソースメモリの管理を参照してください。

コンピューティングリソースのインターネットアクセスがない

コンピューティングリソースには、Amazon ECS サービスエンドポイントと通信するために外部ネットワークアクセスが必要です。これは、インターフェイス VPC エンドポイントを介して、またはパブリック IP アドレスを持つコンピュートリソースを通じて可能になります。

インターフェイス VPC エンドポイントの詳細については、Amazon Elastic Container Service 開発者ガイドAmazon ECS インターフェイス VPC エンドポイント (AWS PrivateLink) を参照してください。

インターフェイス VPC エンドポイントが設定されておらず、コンピューティングリソースがパブリック IP アドレスを持たない場合は、ネットワークアドレス変換 (NAT) を使用してこのアクセスを提供する必要があります。詳細については、Amazon VPC ユーザーガイドNAT ゲートウェイを参照してください。詳細については、VPC を作成するを参照してください。

Amazon EC2 インスタンス制限に達している

アカウントが で起動できる Amazon EC2 インスタンスの数 AWS リージョン は、EC2 インスタンスのクォータによって決まります。特定のインスタンスタイプには、インスタンスタイプごとの制限もあります。ユーザーのアカウントの Amazon EC2 インスタンスクォータの詳細 (制限の引き上げをリクエストする方法を含む) については、「Amazon EC2 ユーザーガイド」の「Amazon EC2 の Service Quotas」を参照してください。

Amazon ECS コンテナエージェントが存在しない

AWS Batch ジョブを実行するには、Amazon ECS コンテナエージェントは Amazon マシンイメージ (AMI) にインストールされる必要があります。Amazon ECS コンテナエージェントが Amazon ECSに最適化 AMI にデフォルトでインストールされます。Amazon ECS コンテナエージェントの詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「Amazon ECS コンテナエージェント」を参照してください。

起動テンプレートで長時間実行されるユーザーデータスクリプト

起動テンプレートに完了までに時間がかかるユーザーデータスクリプトが含まれている場合、インスタンスは Amazon ECS に登録する前にタイムアウトすることがあります。この場合、インスタンスはジョブを取得できなくなり、すべてのジョブが RUNNABLEステータスのままになります。インスタンスが Amazon ECS に登録してジョブの実行を開始する前に、すべてのユーザーデータスクリプトを終了する必要があります。

これを解決するには、長時間実行されるオペレーションまたはブロックオペレーションについて、起動テンプレートのユーザーデータを確認します。スクリプトを最適化して実行時間を短縮したり、重要でないオペレーションを非同期的に実行したり、初期化ロジックをユーザーデータから完全に移動したりすることを検討してください。詳細については、「で Amazon EC2 起動テンプレートを使用する AWS Batch」を参照してください。

詳細については、AWS Batch 「ジョブが RUNNABLEステータスのままであるのはなぜですか?」を参照してください。 re:Post の 。