

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

# PCS での Slurm REST API AWS のよくある質問
<a name="slurm-rest-api-faq"></a>

このセクションでは、PCS の Slurm REST API に関するよくある質問 AWS に回答します。

**Slurm REST API とは**  
Slurm REST API は、Slurm ワークロードマネージャーをプログラムで操作できる HTTP インターフェイスです。GET、POST、DELETE などの標準 HTTP メソッドを使用して、クラスターへのコマンドラインアクセスを必要とせずに、ジョブの送信、クラスターのステータスのモニタリング、リソースの管理を行うことができます。

**によって生成されたトークンを使用できますか`scontrol token`?**  
いいえ。標準`scontrol token`出力は PCS AWS と互換性がありません。PCS Slurm REST API には、username(`sun`)、POSIX ユーザー ID()、グループ IDs(`uid`) を含む特定の ID クレームを含む強化 JWT トークンが必要です`gids`。標準 Slurm トークンにはこれらの必須クレームがないため、 API によって拒否されます。

**VPC の外部から API にアクセスできますか?**  
いいえ。REST API エンドポイントには、Slurm コントローラーのプライベート IP アドレスを使用して VPC 内からのみアクセスできます。外部アクセスを有効にするには、VPC Link、API Gateway を使用して Application Load Balancer などの AWS サービスを実装するか、安全な接続のために VPC ピアリングまたは VPN 接続を確立します。

**API が HTTPS の代わりに HTTP を使用するのはなぜですか?**  
Slurm REST API は、クラスターのプライベートネットワーク内の内部エンドポイントとなることを目的としています。暗号化を必要とする本番環境のデプロイでは、API ゲートウェイ、ロードバランサー、リバースプロキシなどを通じて、アーキテクチャのより高いレベルで SSL/TLS 終了を実装できます。

**REST API へのアクセスを制御するにはどうすればよいですか?**  
Slurm コントローラーのポート 6820 へのアクセスを制限するようにクラスターのセキュリティグループルールを設定します。インバウンドルールを設定して、信頼できる IP 範囲または VPC 内の特定のソースからの接続のみを許可し、API エンドポイントへの不正アクセスをブロックします。

**JWT 署名キーをローテーションするにはどうすればよいですか?**  
アクティブなインスタンスなしでクラスターをメンテナンスモードにして、 AWS Secrets Manager を介してキーローテーションを開始します。ローテーションが完了したら、キューを再度有効にします。既存の JWT トークンはすべて無効になり、Secrets Manager の新しい署名キーを使用して再生成する必要があります。

**REST API を使用するには、Slurm アカウンティングを有効にする必要がありますか?**  
いいえ。ジョブの送信やモニタリングなどの基本的な REST API オペレーションに Slurm アカウンティングは必要ありません。ただし、`/slurmdb`エンドポイント全体では、アカウンティングをアクティブにする必要があります。

**PCS AWS REST API では、どのようなサードパーティー製ツールを使用できますか?**  
Slurm Exporter for Prometheus、SlurmWeb、標準 Slurm REST API AWS 形式に従うカスタムアプリケーションなど、既存の Slurm REST API クライアントの多くは PCS と連携する必要があります。ただし、認証`scontrol token`に に依存するツールは、PCS JWT AWS の要件に合わせて変更する必要があります。

**REST API の使用には追加料金がかかりますか?**  
いいえ。Slurm REST API 機能を有効化または使用しても追加料金はかかりません。通常どおり、基盤となるクラスターリソースに対してのみ料金が発生します。

**REST API のトラブルシューティング方法を教えてください。**  
+ **ネットワーク接続の問題**

  API エンドポイントに到達できない場合、クラスターコントローラーに HTTP リクエストを行うと、接続タイムアウトまたは「接続拒否」エラーが表示されます。

  **対処方法**: クライアントが同じ VPC にあるか、適切なネットワークルーティングがあることを確認し、セキュリティグループがソース IP またはサブネットからの HTTP トラフィックをポート 6820 で許可していることを確認します。
+ **Slurm REST 認証の問題**

  JWT トークンが無効、期限切れ、または不適切に署名されている場合、API リクエストはレスポンスのエラーフィールドに「プロトコル認証エラー」を返します。

  エラーメッセージの例:

  ```
  {
  "errors": [
      {
      "description": "Batch job submission failed",
      "error_number": 1007,
      "error": "Protocol authentication error",
      "source": "slurm_submit_batch_job()"
      }
    ]
  }
  ```

  **対処方法**: JWT トークンが適切にフォーマットされ、有効期限が切れておらず、Secrets Manager の正しいキーで署名されていることを確認します。トークンが適切に形成され、必要なクレームが含まれていること、および正しい認証ヘッダー形式を使用していることを確認します。
+ **送信後にジョブの実行に失敗する**

  JWT トークンが有効で、誤った内部構造またはコンテンツが含まれている場合、ジョブは理由コード を使用して一時停止 (`PD`) 状態になった可能性があります`JobAdminHead`。`scontrol show job <job-id>` を使用してジョブを検査する – `JobState=PENDING, Reason=JobHeldAdmin`、、および が表示されます`SystemComment=slurm_cred_create failure, holding job`。

  **対処方法**: 根本原因は JWT の誤った値である可能性があります。PCS ドキュメントに従って、トークンが適切に構造化され、必要なクレームが含まれていることを確認します。
+ **作業ディレクトリのアクセス許可の問題**

  JWT で指定されたユーザー ID にジョブの作業ディレクトリへの書き込みアクセス許可がない場合、アクセスできないディレクトリで を使用する場合と同様に、ジョブはアクセス許可エラー`sbatch --chdir`で失敗します。

  **対処方法**: JWT トークンで指定されたユーザーに、ジョブの作業ディレクトリに対する適切なアクセス許可があることを確認します。