PCS AWS のジョブ完了ログ - AWS PCS

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

PCS AWS のジョブ完了ログ

ジョブ完了ログは、完了時に AWS Parallel Computing Service (AWS PCS) ジョブに関する重要な詳細を追加料金なしで提供します。Amazon CloudWatch Logs、Amazon Simple Storage Service (Amazon S3)、Amazon Data Firehose などの他の AWS サービスを使用して、ログデータにアクセスして処理できます。 AWS PCS は、次のようなジョブに関するメタデータを記録します。

  • ジョブ ID と名前

  • ユーザーとグループの情報

  • ジョブの状態 (COMPLETEDFAILED、 などCANCELLED

  • 使用されているパーティション

  • 時間制限

  • 開始、終了、送信、および対象時間

  • ノードのリストと数

  • プロセッサ数

  • 作業ディレクトリパス

  • リソース使用量 (CPU、メモリ)

  • 終了コード

  • ノードの詳細 (名前、インスタンス IDs、インスタンスタイプ)

前提条件

PCS クラスターを管理する IAM AWS プリンシパルは、 pcs:AllowVendedLogDeliveryForResourceアクションを許可する必要があります。

次の IAM ポリシーの例では、必要なアクセス許可を付与します。

{ "Version": "2012-10-17", "Statement": [ { "Sid": "PcsAllowVendedLogsDelivery", "Effect": "Allow", "Action": ["pcs:AllowVendedLogDeliveryForResource"], "Resource": [ "arn:aws:pcs:::cluster/*" ] } ] }

ジョブ完了ログの設定

AWS Management Console または を使用して、PCS AWS クラスターのジョブ完了ログを設定できます AWS CLI。

AWS Management Console
コンソールでジョブ完了ログを設定するには
  1. AWS PCS コンソールを開きます。

  2. ナビゲーションペインで [Clusters] (クラスター) を選択してください。

  3. ジョブ完了ログを追加するクラスターを選択します。

  4. クラスターの詳細ページで、ログタブを選択します。

  5. ジョブ完了ログ で追加 を選択して、CloudWatch Logs、Amazon S3、Firehose の中から最大 3 つのログ配信先を追加します。

  6. ログ配信の更新 を選択します。

AWS CLI
を使用してジョブ完了ログを設定するには AWS CLI
  1. ログ配信先を作成します。

    aws logs put-delivery-destination --region region \ --name pcs-logs-destination \ --delivery-destination-configuration \ destinationResourceArn=resource-arn

    置換:

    • region — など、送信先を作成する AWS リージョン us-east-1

    • pcs-logs-destination — 送信先の名前

    • resource-arn — CloudWatch Logs ロググループ、S3 バケット、または Firehose 配信ストリームの Amazon リソースネーム (ARN)。

    詳細については、「Amazon CloudWatch Logs API Reference」の「PutDeliveryDestination」を参照してください。

  2. PCS クラスターをログ配信ソースとして設定します。

    aws logs put-delivery-source --region region \ --name cluster-logs-source-name \ --resource-arn cluster-arn \ --log-type PCS_JOBCOMP_LOGS

    置換:

    • region — クラスター AWS リージョン の など。 us-east-1

    • cluster-logs-source-name — ソースの名前

    • cluster-arn — AWS PCS クラスターの ARN

    詳細については、Amazon CloudWatch Logs API リファレンス」の「PutDeliverySource」を参照してください。

  3. 配信ソースを配信先に接続します。

    aws logs create-delivery --region region \ --delivery-source-name cluster-logs-source \ --delivery-destination-arn destination-arn

    置換:

    • region — AWS リージョンなど us-east-1

    • cluster-logs-source — 配信ソースの名前

    • destination-arn — 配信先の ARN

    詳細については、Amazon CloudWatch Logs API リファレンスCreateDelivery」を参照してください。

ジョブ完了ログの検索方法

CloudWatch Logs と Amazon S3 でログの送信先を設定できます。 AWS PCS は次の構造化パス名とファイル名を使用します。

CloudWatch Logs

AWS PCS は CloudWatch Logs ストリームに次の名前形式を使用します。

AWSLogs/PCS/cluster-id/jobcomp.log

例: AWSLogs/PCS/pcs_abc123de45/jobcomp.log

Amazon S3

AWS PCS は S3 パスに次の名前形式を使用します。

AWSLogs/account-id/PCS/region/cluster-id/jobcomp/year/month/day/hour/

例: AWSLogs/111122223333/PCS/us-east-1/pcs_abc123de45/jobcomp/2025/06/19/11/

AWS PCS はログファイルに次の名前形式を使用します。

PCS_jobcomp_year-month-day-hour_cluster-id_random-id.log.gz

例: PCS_jobcomp_2025-06-19-11_pcs_abc123de45_04be080b.log.gz

ジョブ完了ログフィールド

AWS PCS はジョブ完了ログデータを JSON オブジェクトとして書き込みます。JSON コンテナはジョブの詳細jobcompを保持します。次の表に、jobcompコンテナ内のフィールドを示します。一部のフィールドは、配列ジョブや異種ジョブなど、特定の状況でのみ存在します。

ジョブ完了ログフィールド
名前 値の例 必須 コメント
job_id 11 はい 常に値とともに存在する
user "root" はい 常に値とともに存在する
user_id 0 はい 常に値とともに存在する
group "root" はい 常に値とともに存在する
group_id 0 はい 常に値とともに存在する
name "wrap" はい 常に値とともに存在する
job_state "COMPLETED" はい 常に値とともに存在する
partition "Hydra-MpiQueue-abcdef01-7" はい 常に値とともに存在する
time_limit "UNLIMITED" はい 常に存在しますが、 "UNLIMITED"
start_time "2025-06-19T10:58:57" はい 常に存在しますが、 "Unknown"
end_time "2025-06-19T10:58:57" はい 常に存在しますが、 "Unknown"
node_list "Hydra-MpiNG-abcdef01-2345-1" はい 常に値とともに存在する
node_cnt 1 はい 常に値とともに存在する
proc_cnt 1 はい 常に値とともに存在する
work_dir "/root" はい 常に存在しますが、 "Unknown"
reservation_name "weekly_maintenance" はい 常に存在しますが、空の文字列である可能性があります ""
tres.cpu 1 はい 常に値とともに存在する
tres.mem.val 600 はい 常に値とともに存在する
tres.mem.unit "M" はい または "M"にすることができます "bb"
tres.node 1 はい 常に値とともに存在する
tres.billing 1 はい 常に値とともに存在する
account "finance" はい 常に存在しますが、空の文字列である可能性があります ""
qos "normal" はい 常に存在しますが、空の文字列である可能性があります ""
wc_key "project_1" はい 常に存在しますが、空の文字列である可能性があります ""
cluster "unknown" はい 常に存在しますが、 "unknown"
submit_time "2025-06-19T10:55:46" はい 常に存在しますが、 "Unknown"
eligible_time "2025-06-19T10:55:46" はい 常に存在しますが、 "Unknown"
array_job_id 12 なし ジョブが配列ジョブの場合にのみ存在します
array_task_id 1 なし ジョブが配列ジョブの場合にのみ存在します
het_job_id 10 なし ジョブが異種ジョブの場合にのみ存在します
het_job_offset 0 なし ジョブが異種ジョブの場合にのみ存在します
derived_exit_code_status 0 はい 常に値とともに存在する
derived_exit_code_signal 0 はい 常に値とともに存在する
exit_code_status 0 はい 常に値とともに存在する
exit_code_signal 0 はい 常に値とともに存在する
node_details[0].name "Hydra-MpiNG-abcdef01-2345-1" なし 常に存在しますが、 node_details "[]"
node_details[0].instance_id "i-0abcdef01234567a" なし 常に存在しますが、 node_details "[]"
node_details[0].instance_type "t4g.micro" なし 常に存在しますが、 node_details "[]"

ジョブ完了ログの例

次の例は、さまざまなジョブタイプと状態のジョブ完了ログを示しています。

{ "jobcomp": { "job_id": 1, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T16:32:57", "end_time": "2025-06-19T16:33:03", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/usr/bin", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T16:29:40", "eligible_time": "2025-06-19T16:29:41", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc123def45678", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def456abc78901", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 2, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T16:33:13", "end_time": "2025-06-19T16:33:14", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/usr/bin", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T16:33:13", "eligible_time": "2025-06-19T16:33:13", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc123def45678", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def456abc78901", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 3, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T22:58:57", "end_time": "2025-06-19T22:58:57", "node_list": "Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T22:55:46", "eligible_time": "2025-06-19T22:55:46", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 4, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "525600", "start_time": "2025-06-19T23:04:27", "end_time": "2025-06-19T23:04:27", "node_list": "Hydra-MpiNG-abcdef01-2345-[1-2]", "node_cnt": 2, "proc_cnt": 2, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 2, "mem": { "val": 1944, "unit": "M" }, "node": 2, "billing": 2 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:01:38", "eligible_time": "2025-06-19T23:01:38", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" }, { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 5, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "FAILED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:09:00", "end_time": "2025-06-19T23:09:00", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 1, "unit": "G" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:09:00", "eligible_time": "2025-06-19T23:09:00", "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 6, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "CANCELLED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:09:36", "end_time": "2025-06-19T23:09:36", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:09:35", "eligible_time": "2025-06-19T23:09:36", "het_job_id": 6, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 7, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "CANCELLED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:10:03", "end_time": "2025-06-19T23:10:03", "node_list": "(null)", "node_cnt": 0, "proc_cnt": 0, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:10:03", "eligible_time": "2025-06-19T23:10:03", "het_job_id": 7, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 1, "node_details": [] } } { "jobcomp": { "job_id": 8, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:11:24", "end_time": "2025-06-19T23:11:24", "node_list": "Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:11:23", "eligible_time": "2025-06-19T23:11:23", "het_job_id": 8, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 9, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:11:24", "end_time": "2025-06-19T23:11:24", "node_list": "Hydra-MpiNG-abcdef01-2345-2", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:11:23", "eligible_time": "2025-06-19T23:11:23", "het_job_id": 8, "het_job_offset": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 10, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:12:24", "end_time": "2025-06-19T23:12:24", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 400, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:12:14", "eligible_time": "2025-06-19T23:12:14", "het_job_id": 10, "het_job_offset": 0, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc234def56789", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 11, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:12:24", "end_time": "2025-06-19T23:12:24", "node_list":"Hydra-MpiNG-abcdef01-2345-2", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 600, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:12:14", "eligible_time": "2025-06-19T23:12:14", "het_job_id": 10, "het_job_offset": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-2", "instance_id": "i-0def345abc67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 13, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:47:57", "end_time": "2025-06-19T23:47:58", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:43:56", "eligible_time": "2025-06-19T23:43:56" , "array_job_id": 12, "array_task_id": 1, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc345def67890", "instance_type": "t4g.micro" } ] } } { "jobcomp": { "job_id": 12, "user": "root", "user_id": 0, "group": "root", "group_id": 0, "name": "wrap", "job_state": "COMPLETED", "partition": "Hydra-MpiQueue-abcdef01-7", "time_limit": "UNLIMITED", "start_time": "2025-06-19T23:47:58", "end_time": "2025-06-19T23:47:58", "node_list":"Hydra-MpiNG-abcdef01-2345-1", "node_cnt": 1, "proc_cnt": 1, "work_dir": "/root", "reservation_name": "", "tres": { "cpu": 1, "mem": { "val": 972, "unit": "M" }, "node": 1, "billing": 1 }, "account": "", "qos": "", "wc_key": "", "cluster": "unknown", "submit_time": "2025-06-19T23:43:56", "eligible_time": "2025-06-19T23:43:56" , "array_job_id": 12, "array_task_id": 2, "derived_exit_code_status": 0, "derived_exit_code_signal": 0, "exit_code_status": 0, "exit_code_signal": 0, "node_details": [ { "name": "Hydra-MpiNG-abcdef01-2345-1", "instance_id": "i-0abc345def67890", "instance_type": "t4g.micro" } ] } }