install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ec2-sync" ~/.claude/skills/majiayu000-claude-skill-registry-ec2-sync && rm -rf "$T"
manifest:
skills/data/ec2-sync/SKILL.mdsource content
EC2操作簡素化
概要
EC2操作を簡単なコマンドで実行できるようにします。複雑なAWS SSMコマンドを簡潔なインターフェースでラップし、ミスを防止します。
Note: JRA-VANデータの同期はPC-KEIBAソフトで行います。
主要機能
- ファイルアップロード: Base64エンコード自動化
- ログ確認: リアルタイムログ表示
- 状態確認: EC2インスタンス状態確認
入力形式
/ec2-sync <操作> 操作: upload <ファイル名> - ファイルをEC2に送信 logs - ログ確認 status - EC2インスタンス状態確認
実行プロセス
操作1: ファイルアップロード
コマンド:
/ec2-sync upload main.py
実行内容:
- EC2インスタンスIDを自動取得
- ファイルをBase64エンコード
- SSM経由でEC2に送信
- 送信完了を確認
内部コマンド:
# インスタンスID取得 INSTANCE_ID=$(aws ec2 describe-instances \ --filters "Name=tag:Name,Values=*jravan*" \ --query 'Reservations[].Instances[].InstanceId' \ --output text) # Base64エンコード&送信 FILE_B64=$(base64 jravan-api/main.py | tr -d '\n') aws ssm send-command \ --instance-ids "$INSTANCE_ID" \ --document-name "AWS-RunPowerShellScript" \ --parameters "commands=[\"[System.Text.Encoding]::UTF8.GetString([System.Convert]::FromBase64String('$FILE_B64')) | Out-File -FilePath C:\\jravan-api\\main.py -Encoding UTF8 -Force\"]" echo "✅ main.py を送信しました"
操作2: ログ確認
コマンド:
/ec2-sync logs
実行内容:
- CloudWatch Logs から最新ログを取得
- リアルタイムでログをフォロー
内部コマンド:
aws logs tail /aws/ec2/jravan --follow
操作3: EC2インスタンス状態確認
コマンド:
/ec2-sync status
実行内容:
- EC2インスタンスの状態を確認
- SSMエージェントの接続状態を確認
内部コマンド:
INSTANCE_ID=$(aws ec2 describe-instances \ --filters "Name=tag:Name,Values=*jravan*" \ --query 'Reservations[].Instances[].InstanceId' \ --output text) # インスタンス状態 aws ec2 describe-instances \ --instance-ids "$INSTANCE_ID" \ --query 'Reservations[].Instances[].[InstanceId,State.Name,LaunchTime]' \ --output table # SSM接続状態 aws ssm describe-instance-information \ --filters "Key=InstanceIds,Values=$INSTANCE_ID" \ --query 'InstanceInformationList[].[InstanceId,PingStatus,LastPingDateTime]' \ --output table
出力形式
ファイルアップロード成功時
📤 ファイルアップロード ファイル: main.py 送信先: EC2 (i-0123456789abcdef0) 実行中... ✅ 送信完了
状態確認時
--------------------------------------------------------- | DescribeInstances | +------------------------+----------+--------------------+ | i-0123456789abcdef0 | running | 2026-01-23T10:00:00| +------------------------+----------+--------------------+ --------------------------------------------------------- | DescribeInstanceInformation | +------------------------+-----------+--------------------+ | i-0123456789abcdef0 | Online | 2026-01-23T15:45:00| +------------------------+-----------+--------------------+
エラーハンドリング
よくあるエラー
-
インスタンスIDが見つからない
Error: No instances found with tag 'jravan'- 対処: EC2インスタンスが起動しているか確認
- コマンド:
aws ec2 describe-instances
-
SSMエージェント未接続
Error: TargetNotConnected- 対処: SSMエージェントの起動を確認
- コマンド:
/ec2-sync status
-
ファイルが見つからない
Error: File not found: jravan-api/main.py- 対処: カレントディレクトリを確認
- コマンド:
ls jravan-api/
セキュリティ
- 認証: AWS認証情報が必要(
)aws configure - IAM権限: EC2, SSM, CloudWatch Logs の読み取り・書き込み権限
- データ保護: スクリプト内に機密情報をハードコードしない
対象ファイル
アップロード可能なファイル
- FastAPI サーバーmain.py
- データベースアクセス層database.py
- Python依存関係requirements.txt
EC2配置先
C:\jravan-api\<ファイル名>
参照
- AWS操作ガイド:
の「EC2操作」セクション.claude/docs/aws-operations.md - AWS SSM: https://docs.aws.amazon.com/systems-manager/
- CloudWatch Logs: https://docs.aws.amazon.com/cloudwatch/
注意事項
- SSM制限: コマンド実行は最大30分でタイムアウト
- ログ保持: CloudWatch Logs は7日間保持
- データ同期: PC-KEIBAソフトで行う(このスキルでは行わない)