name: ec2-sync description: EC2操作簡素化(複雑なSSMコマンドをシンプルなインターフェースでラップ) version: 2.0.0 tools:
- Bash
- Read skill_type: workflow auto_invoke: false
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 の読み取り・書き込み権限
- データ保護: スクリプト内に機密情報をハードコードしない
対象ファイル
アップロード可能なファイル
main.py- FastAPI サーバーdatabase.py- データベースアクセス層requirements.txt- Python依存関係
EC2配置先
C:\jravan-api\<ファイル名>
参照
- AWS操作ガイド:
.claude/docs/aws-operations.mdの「EC2操作」セクション - AWS SSM: https://docs.aws.amazon.com/systems-manager/
- CloudWatch Logs: https://docs.aws.amazon.com/cloudwatch/
注意事項
- SSM制限: コマンド実行は最大30分でタイムアウト
- ログ保持: CloudWatch Logs は7日間保持
- データ同期: PC-KEIBAソフトで行う(このスキルでは行わない)