• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialdevelopment

hyperpod-ssm

プラグイン
sagemaker-ai
ソース
GitHub で見る ↗
説明

AWS Systems Manager(AWSのリモート接続サービス)を経由した、SageMaker HyperPod クラスタノード上でのリモートコマンド実行とファイル転送。このスキルは HyperPod ノードにアクセスするための主要なインターフェースで、直接的な SSH 接続は利用できません。 次のような場合に使用: - スキル、ワークフロー、またはユーザーリクエストがクラスタノード上でコマンドを実行する必要がある - ノードへファイルをアップロードする - ノードからファイルを読み込む、またはダウンロードする - 診断を実行する - パッケージをインストールする - HyperPod インスタンスへのシェルアクセス(コマンドラインでの直接操作)を必要とするあらゆる操作 他の HyperPod スキルは、ノードレベルのすべての操作をこのスキルに依存しています。

原文を表示

Remote command execution and file transfer on SageMaker HyperPod cluster nodes via AWS Systems Manager (SSM). This is the primary interface for accessing HyperPod nodes — direct SSH is not available. Use when any skill, workflow, or user request needs to execute commands on cluster nodes, upload files to nodes, read/download files from nodes, run diagnostics, install packages, or perform any operation requiring shell access to HyperPod instances. Other HyperPod skills depend on this skill for all node-level operations.

ユースケース
  • クラスタノード上でコマンドを実行する
  • ノードへファイルをアップロードする
  • ノードからファイルをダウンロードする
  • 診断を実行するとき
  • パッケージをインストールするとき
本文(日本語訳)

HyperPod SSM アクセス

前提条件

  • aws CLI v2 — 対象アカウント/リージョンで認証済みであること。
  • session-manager-plugin — AWS CLI と併せてインストールされていること。
  • jq — スクリプトが JSON ペイロードの構築に使用する。
  • unbuffer (expect パッケージに含まれる) — aws ssm start-session を PTY でラップし、session-manager-plugin が終了を急ぐことなく stdout をフラッシュできるようにする。 これがないと、コマンド自体は正常に実行されているにもかかわらず、Cannot perform start session: EOF とともに空の出力が断続的に返される場合がある。 インストールは sudo yum install expect、sudo apt install expect、または brew install expect で行う。 ssm-exec.sh は自動的に検出して使用し、見つからない場合は警告を出してフォールバックする。

SSM ターゲットの形式

ターゲット: sagemaker-cluster:<CLUSTER_ID>_<GROUP_NAME>-<INSTANCE_ID>

  • CLUSTER_ID: クラスター ARN の末尾セグメント(クラスター名ではない)。get-cluster-info.sh で取得する。
  • GROUP_NAME: インスタンスグループ名 — list-nodes.sh で取得する。
  • INSTANCE_ID: EC2 インスタンス ID(例: i-0123456789abcdef0)

スクリプト

scripts/ 配下に 3 つのスクリプトがある。 クラスター情報とノード情報は一度だけ解決し、その後はノードごとにコマンドを実行する。

get-cluster-info.sh — クラスター名 → ID の解決(一度だけ呼び出す)

scripts/get-cluster-info.sh CLUSTER_NAME [--region REGION]
# 出力例: {"cluster_id":"...","cluster_arn":"...","cluster_name":"...","region":"..."}

list-nodes.sh — 全ノードをページネーション付きで一覧表示(一度だけ呼び出す)

scripts/list-nodes.sh CLUSTER_NAME [--region REGION] [--instance-group GROUP] [--instance-id ID]
# 出力例: ClusterNodeSummary の JSON 配列(InstanceId, InstanceGroupName, InstanceStatus など)

list-cluster-nodes は 100 ノード単位でページネーションされる。このスクリプトはページネーションを自動的に処理する。

ssm-exec.sh — ノード上でコマンドを実行(ノードごとに呼び出す)

# 実行 — 構築済みターゲットを使用
scripts/ssm-exec.sh --target "sagemaker-cluster:CLUSTERID_GROUP-INSTANCEID" 'command' [--region REGION]

# 実行 — 各パーツを個別に指定
scripts/ssm-exec.sh --cluster-id ID --group GROUP --instance-id INSTANCE_ID 'command' [--region REGION]

# アップロード
scripts/ssm-exec.sh --target TARGET --upload LOCAL_PATH REMOTE_PATH [--region REGION]

# リモートファイルの読み取り
scripts/ssm-exec.sh --target TARGET --read REMOTE_PATH [--region REGION]

多数のノードへの一括コマンド実行

SSM の start-session レート制限: アカウントあたり 3 TPS。 バッチサイズと実行間隔はこの制限を考慮して計画すること。

aws ssm send-command は sagemaker-cluster: ターゲットをサポートしていない — start-session のみが使用可能。

SSM コマンドの手動実行

スクリプトが適さない場合は、AWS-StartNonInteractiveCommand を使用して aws ssm start-session を直接呼び出す。 すべての呼び出しを unbuffer でラップすること — これがないと stdout が断続的に空になる(「前提条件」を参照)。

cat > /tmp/cmd.json << 'EOF'
{"command": ["bash -c 'echo hello && whoami'"]}
EOF

unbuffer aws ssm start-session \
  --target sagemaker-cluster:{CLUSTER_ID}_{GROUP_NAME}-{INSTANCE_ID} \
  --region REGION \
  --document-name AWS-StartNonInteractiveCommand \
  --parameters file:///tmp/cmd.json
  • --parameters には必ず JSON ファイルを使用すること — インラインパラメーターは特殊文字が含まれると正常に動作しない。
  • ドキュメントの command パラメーターはシェルへの入力ではなく argv として扱われる。パイプ、セミコロン、リダイレクトを含む複数ステートメントのスクリプトは bash -c '...' でラップして評価させること。

よく使う診断コマンド

タスク コマンド
ライフサイクルログ cat /var/log/provision/provisioning.log
メモリ使用状況 free -h
ディスク/マウント df -h && lsblk
GPU ステータス nvidia-smi
GPU メモリ nvidia-smi --query-gpu=memory.used,memory.total --format=csv
EFA/ネットワーク fi_info -p efa
CloudWatch agent sudo systemctl status amazon-cloudwatch-agent
プロセス上位表示 ps aux --sort=-%mem | head -20

重要な注意事項

  • SSM 非インタラクティブモードのデフォルトユーザーは root。
  • SSM レート制限: アカウントあたり 3 TPS。
  • インタラクティブセッションが必要な場合(まれ)は、--document-name を省略するとシェルが起動する。
  • AWS-StartNonInteractiveCommand 経由では、vim や top などのインタラクティブなコマンドはサポートされない。
  • 出力が大きい場合、SSM によって切り捨てられる可能性がある。
  • 一般的なエラーのトラブルシューティングについては references/troubleshooting.md を参照。
原文(English)を表示

HyperPod SSM Access

Prerequisites

  • aws CLI v2, authenticated for the target account/Region.
  • session-manager-plugin — installed alongside the AWS CLI.
  • jq — the scripts build JSON payloads with it.
  • unbuffer (from the expect package) — wraps aws ssm start-session with a PTY so the session-manager-plugin flushes stdout instead of racing to close. Without it, calls intermittently return empty output with Cannot perform start session: EOF even when the command ran. Install with sudo yum install expect, sudo apt install expect, or brew install expect. ssm-exec.sh detects and uses it automatically; falls back with a warning if missing.

SSM Target Format

Target: sagemaker-cluster:<CLUSTER_ID>_<GROUP_NAME>-<INSTANCE_ID>

  • CLUSTER_ID: Last segment of cluster ARN (NOT the cluster name). Extract via get-cluster-info.sh.
  • GROUP_NAME: Instance group name — retrieve via list-nodes.sh.
  • INSTANCE_ID: EC2 instance ID (e.g., i-0123456789abcdef0)

Scripts

Three scripts under scripts/. Resolve cluster info and nodes once, then execute per node.

get-cluster-info.sh — Resolve cluster name → ID (call once)

scripts/get-cluster-info.sh CLUSTER_NAME [--region REGION]
# Output: {"cluster_id":"...","cluster_arn":"...","cluster_name":"...","region":"..."}

list-nodes.sh — List all nodes with pagination (call once)

scripts/list-nodes.sh CLUSTER_NAME [--region REGION] [--instance-group GROUP] [--instance-id ID]
# Output: JSON array of ClusterNodeSummaries (InstanceId, InstanceGroupName, InstanceStatus, etc.)

list-cluster-nodes paginates at 100 nodes. This script handles pagination automatically.

ssm-exec.sh — Execute command on a node (call per node)

# Execute — with pre-built target
scripts/ssm-exec.sh --target "sagemaker-cluster:CLUSTERID_GROUP-INSTANCEID" 'command' [--region REGION]

# Execute — with parts
scripts/ssm-exec.sh --cluster-id ID --group GROUP --instance-id INSTANCE_ID 'command' [--region REGION]

# Upload
scripts/ssm-exec.sh --target TARGET --upload LOCAL_PATH REMOTE_PATH [--region REGION]

# Read remote file
scripts/ssm-exec.sh --target TARGET --read REMOTE_PATH [--region REGION]

Running Commands Across Many Nodes

SSM start-session rate limit: 3 TPS per account. Plan batch size and delay accordingly.

aws ssm send-command does NOT support sagemaker-cluster: targets — only start-session works.

Manual SSM Commands

When the scripts aren't suitable, use aws ssm start-session directly with AWS-StartNonInteractiveCommand. Wrap every invocation in unbuffer — without it, stdout is intermittently empty (see Prerequisites).

cat > /tmp/cmd.json << 'EOF'
{"command": ["bash -c 'echo hello && whoami'"]}
EOF

unbuffer aws ssm start-session \
  --target sagemaker-cluster:{CLUSTER_ID}_{GROUP_NAME}-{INSTANCE_ID} \
  --region REGION \
  --document-name AWS-StartNonInteractiveCommand \
  --parameters file:///tmp/cmd.json
  • Always use a JSON file for --parameters — inline parameters break with special characters.
  • The document's command parameter is argv, not shell input. Wrap multi-statement scripts in bash -c '...' so pipes, semicolons, and redirects evaluate.

Common Diagnostic Commands

Task Command
Lifecycle logs cat /var/log/provision/provisioning.log
Memory free -h
Disk/mounts df -h && lsblk
GPU status nvidia-smi
GPU memory nvidia-smi --query-gpu=memory.used,memory.total --format=csv
EFA/network fi_info -p efa
CloudWatch agent sudo systemctl status amazon-cloudwatch-agent
Top processes ps aux --sort=-%mem | head -20

Key Details

  • Default SSM non-interactive user is root.
  • SSM rate limit: 3 TPS per account.
  • For interactive sessions (rare), omit --document-name to get a shell.
  • Interactive commands (vim, top) are not supported via AWS-StartNonInteractiveCommand.
  • Large outputs may be truncated by SSM.
  • For troubleshooting common errors, see references/troubleshooting.md.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。