INVALIDコンピューティング環境 - AWS Batch

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

マネージド型コンピューティング環境を誤って設定した可能性があります。設定した場合、コンピューティング環境は INVALID の状態になり、配置するジョブを受け入れられなくなります。以下のセクションでは、考えられる原因と、その原因に基づくトラブルシューティングの方法について説明します。

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

コンピューティング環境が INVALID の状態になる最も一般的な原因は、AWS Batch サービスロールまたは Amazon EC2 スポットフリートロールの名前が正しくないか、または Amazon リソースネーム (ARN) であることです。これは、AWS CLI または AWS SDK を使用して作成されたコンピューティング環境において、より顕著な問題です。AWS Management Console でコンピューティング環境を作成する際、AWS Batch は正しいサービスやスポットフリートのロールを選択するサポートを行います。ただし、名前または ARN を手動で入力し、またはそれを間違って入力したとします。そうすると、生成されるコンピューティング環境も INVALID になります。

しかし、IAM リソースの名前または ARN を AWS CLI コマンドまたは SDK コードに手動で入力すると仮定します。この場合、AWS Batch は文字列を検証できません。代わりに、AWS Batch は不正な値を受け入れ、環境作成を試みる必要があります。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つには、次のシナリオがあります。完全な Amazon リソースネーム (ARN) ではなく、AWS CLI または AWS SDK を使用する場合、IAM ロールの名前のみを指定します。ロールを作成した方法によって、ARN に aws-service-role パスプレフィックスが含まれることがあるからです。たとえば、 AWS Batch サービスロールを、AWS Batch のサービスにリンクされたロールの使用の手順を使用して手動で作成すると、サービスロール ARN は次のようになります。

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

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

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

この問題は、AWS Batch のサービスレベルポリシー (AWSBatchServiceRole) を、サービス以外のロールにアタッチした場合にも発生する可能性があります。たとえば、このシナリオでは、次のようなエラーメッセージが表示される場合があります。

CLIENT_ERROR - User: arn:aws:sts::account_number:assumed-role/batch-replacement-role/aws-batch is not authorized to perform: action on resource ...

問題を解決するには、次のいずれかを実行します。

  • AWS Batch コンピューティング環境を作成する場合は、サービスロールに空の文字列を使用してください。

  • 以下の形式でサービスロールを指定しますarn:aws:iam::account_number:role/aws-service-role/batch.amazonaws.com/AWSServiceRoleForBatch

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

この設定の誤りがあるコンピューティング環境を修復するには、INVALID のコンピューティング環境を修復するを参照してください。

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

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

誤って設定されたコンピューティング環境を修復するには
  1. https://console.aws.amazon.com/batch/ で AWS Batch コンソールを開きます。

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

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

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

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

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