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

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

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

コンピューティング環境、ジョブキュー、ジョブ定義、またはジョブに関する問題のトラブルシューティングが必要な場合があります。この章は、AWS Batch 環境におけるトラブルシューティングと問題の解決に役立ちます。

INVALID コンピューティング環境

マネージド型のコンピューティング環境が INVALID 状態になり、配置のためにジョブを受け付けられないように、設定が間違っている可能性があります。このセクションでは、考えられる原因とその修正方法について説明します。

正しくないロール名または ARN

無効なコンピューティング環境の最も一般的な原因は、AWS Batch サービスロールまたは Amazon EC2 スポットフリートロールの正しくない名前、あるいは ARN です。これは、 AWS CLI または で作成されたコンピューティング環境での問題ですAWSSDKs。 でコンピューティング環境を作成するとAWS マネジメントコンソール、 AWS Batch が正しいサービスまたはスポットフリートのロールを選択するのに役立ちます。ただし、名前のスペルミスや ARN の変形はできません。

ただし、 IAM コマンドまたは SDK コードAWS CLIで の名前または ARN を手動で入力した場合、 AWS Batch は文字列を検証できず、不正な値を受け取り、環境を作成しようとします。環境の作成に失敗したあとで、この環境は INVALID 状態に移り、次のエラーが表示されます。

無効なサービスロールの場合:

CLIENT_ERROR - Not authorized to perform sts:AssumeRole (Service: AWSSecurityTokenService; Status Code: 403; Error Code: AccessDenied; Request ID: dc0e2d28-2e99-11e7-b372-7fcc6fb65fe7)

無効なスポットフリートロールの場合:

CLIENT_ERROR - Parameter: SpotFleetRequestConfig.IamFleetRole is invalid. (Service: AmazonEC2; Status Code: 400; Error Code: InvalidSpotFleetRequestConfig; Request ID: 331205f0-5ae3-4cea-bac4-897769639f8d) Parameter: SpotFleetRequestConfig.IamFleetRole is invalid

この問題の一般的な原因の 1 つは、 IAM または AWS CLI を使用するときにAWS、完全な ARN ではなく SDKs ロールの名前のみを指定した場合です。これは、ロールの作成方法に応じて、ARN にservice-roleパスプレフィックスが含まれる可能性があるためです。たとえば、「AWS Batch」の手順を使用して AWS Batch サービス IAM ロール サービスロールを手動で作成すると、サービスロール ARN は次のようになります。

arn:aws:iam::123456789012:role/AWSBatchServiceRole

ただし、コンソールの最初の実行ウィザードの一環としてサービスロールを作成した場合、サービスロール ARN は次のようになります。

arn:aws:iam::123456789012:role/service-role/AWSBatchServiceRole

IAM または を使用するときにのみ AWS CLI ロールの名前を指定するとAWSSDKs、 は ARN がAWS Batchパスプレフィックスを使用しないservice-roleと見なします。このため、コンピューティング環境を作成するときには、IAM ロールに完全 ARN を指定することが推奨されます。

この方法で設定されていないコンピューティング環境を修復するには、「」INVALID コンピューティング環境の修復を参照してください。

INVALID コンピューティング環境の修復

コンピューティング環境が INVALID 状態にある場合、無効なパラメータを修復して更新する必要があります。正しくないロール名または ARN」に対応する場合、正しいサービスロールでコンピューティング環境を更新できます。

誤って設定されたコンピューティング環境を修復するには

  1. AWS Batch コンソール (https://console.aws.amazon.com/batch/.) を開きます。

  2. ナビゲーションバーから、使用するリージョンを選択します。

  3. ナビゲーションペインで、[コンピューティング環境.] を選択します。

  4. コンピューティング環境] ページで、編集するコンピューティング環境の横にあるラジオボタンを選択し、[編集.] を選択します。

  5. [コンピューティング環境の更新] ページの [サービスロール] で、コンピューティング環境で使用する IAM ロールを選択します。AWS Batch コンソールには、コンピューティング環境と正しい信頼関係があるロールのみが表示されます。

  6. [保存] を選択してコンピューティング環境を更新します。

RUNNABLE 状態でジョブが止まる

コンピューティング環境にコンピューティングリソースが含まれているが、ジョブが RUNNABLE ステータスを超えて進行しない場合、ジョブが実際にコンピューティングリソースに配置されなくなることがあります。この問題の一般的な原因を次に示します。

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

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

リソースが不十分である

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

コンピューティングリソースのインターネットアクセスがありません

コンピューティングリソースは、Amazon ECS サービスエンドポイントと通信するためのアクセス権限を必要とします。この操作は、インターフェイス VPC エンドポイントを通じて、またはパブリック IP アドレスを持つコンピューティングリソースを通じて実行することができます。

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

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

Amazon EC2 インスタンス制限に到達

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

RUNNABLE ステータスでスタックしたジョブの診断の詳細については、AWS ナレッジセンターの「AWS AWS Batch ジョブが RUNNABLE ステータスでスタックするのはなぜですか?」を参照してください。

作成時にタグが付けられていないスポットインスタンス

AWS Batch コンピューティングリソースのスポットインスタンスのタグ付けは、2017 年 10 月 25 日にサポートが開始されました。これ以前はIAM、スポットフリートロールの推奨AmazonEC2SpotFleetRole管理ポリシー (Amazon EC2) に、起動時にスポットインスタンスにタグ付けするアクセス許可が含まれていなかった。新しい推奨の IAM 管理ポリシーは、AmazonEC2SpotFleetTaggingRole. と呼ばれます。

作成時にスポットインスタンスのタグ付けを修正するには、次の手順に従って、推奨される現在の IAM 管理ポリシーをAmazon EC2スポットフリートロールに適用します。その後、そのロールで作成されたそれ以降のスポットインスタンスには、作成時にインスタンスタグを適用するアクセス許可があります。

現在の IAM 管理ポリシーを Amazon EC2 スポットフリートロールに割り当てるには

  1. IAM コンソール (https://console.aws.amazon.com/iam/) を開きます。

  2. [ロール] を選択しAmazon EC2、スポットフリートロールを選択します。

  3. Attach policy.] を選択します。

  4. を選択し、[ポリシーのAmazonEC2SpotFleetTaggingRoleアタッチ] を選択します。

  5. Amazon EC2 スポットフリートロールを再度選択し、前のポリシーを削除します。

  6. ポリシーの右側にある [AmazonEC2SpotFleetRolex] を選択し、[デタッチ] を選択します。