Skip to content
Back to skills

Ec2 Sync

ASecurity

EC2操作簡素化(複雑なSSMコマンドをシンプルなインターフェースでラップ)

  • 666 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added February 8, 2026
toolspythonshellbashfastapiawsapidatabase

Works with

  • api

Security analysis

A100/100

Scanned February 12, 2026

npx -y skills add majiayu000/claude-skill-registry --skill ec2-sync --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Ec2 Sync?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Ec2 Sync
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/majiayu000-ec2-sync/badge)](https://www.skillsdirectory.com/skills/majiayu000-ec2-sync)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
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ソフトで行います。

## 主要機能

1. **ファイルアップロード**: Base64エンコード自動化
2. **ログ確認**: リアルタイムログ表示
3. **状態確認**: EC2インスタンス状態確認

## 入力形式

```
/ec2-sync <操作>

操作:
  upload <ファイル名>       - ファイルをEC2に送信
  logs                      - ログ確認
  status                    - EC2インスタンス状態確認
```

## 実行プロセス

### 操作1: ファイルアップロード

**コマンド**:
```
/ec2-sync upload main.py
```

**実行内容**:
1. EC2インスタンスIDを自動取得
2. ファイルをBase64エンコード
3. SSM経由でEC2に送信
4. 送信完了を確認

**内部コマンド**:
```bash
# インスタンス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
```

**実行内容**:
1. CloudWatch Logs から最新ログを取得
2. リアルタイムでログをフォロー

**内部コマンド**:
```bash
aws logs tail /aws/ec2/jravan --follow
```

### 操作3: EC2インスタンス状態確認

**コマンド**:
```
/ec2-sync status
```

**実行内容**:
1. EC2インスタンスの状態を確認
2. SSMエージェントの接続状態を確認

**内部コマンド**:
```bash
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|
+------------------------+-----------+--------------------+
```

## エラーハンドリング

### よくあるエラー

1. **インスタンスIDが見つからない**
   ```
   Error: No instances found with tag 'jravan'
   ```
   - 対処: EC2インスタンスが起動しているか確認
   - コマンド: `aws ec2 describe-instances`

2. **SSMエージェント未接続**
   ```
   Error: TargetNotConnected
   ```
   - 対処: SSMエージェントの起動を確認
   - コマンド: `/ec2-sync status`

3. **ファイルが見つからない**
   ```
   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ソフトで行う(このスキルでは行わない)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.