
يقوم بتركيب موارد AWS كنظام ملفات محلي لاستكشاف البنية التحتية، وتدقيق الأمان، وتحليل التهيئة باستخدام أدوات يونكس القياسية مثل grep وdiff وcat.
منطقة AWS الخاصة بك، كنظام ملفات.

هذا:
grep -l "AdministratorAccess" iam/users/*/policies.json
بدلاً من هذا:
aws iam list-users --query 'Users[].UserName' --output text | \
xargs -I{} sh -c 'aws iam list-attached-user-policies --user-name {} --query "AttachedPolicies[].PolicyArn" --output text' | \
grep AdministratorAccess
يقوم sisu بتركيب موارد AWS كنظام ملفات محلي. استخدم الأدوات التي تعرفها بالفعل - grep، cat، diff، vim - بدلاً من التعامل مع JSON و AWS CLI.
مصمم للذكاء الاصطناعي: لا تستطيع أدوات الذكاء الاصطناعي تسجيل الدخول إلى الخوادم أو تشغيل جلسات AWS CLI تفاعلية. ولكن مع sisu، تصبح بنيتك التحتية بأكملها في AWS عبارة عن مسارات ملفات بسيطة يمكن لأي ذكاء اصطناعي قراءتها. أنظمة ملفات EC2 البعيدة متاحة في ec2/<instance>/fs/ - مما يسمح للذكاء الاصطناعي بتصفح /var/log و /etc وأي ملف على مثيلاتك بدون SSH.
يدعم حالياً: S3، SSM، IAM، VPC، Lambda، EC2، ECS، CloudFront، Secrets Manager، Route 53، و CloudWatch Logs.
go install github.com/semonte/sisu@latest
يتطلب FUSE:
sudo apt install fuse # Ubuntu/Debian
sudo yum install fuse # RHEL/CentOS
sisu
لقد دخلت. منطقة AWS الخاصة بك أصبحت الآن في متناول يديك:
~/.sisu/mnt/
├── default/ # ملف تعريف AWS
│ ├── global/ # IAM، S3، Route 53 (مستقلة عن المنطقة)
│ │ ├── iam/
│ │ ├── route53/
│ │ └── s3/
│ ├── us-east-1/ # خدمات إقليمية
│ │ ├── cloudfront/
│ │ ├── ec2/
│ │ ├── ecs/
│ │ ├── lambda/
│ │ ├── logs/
│ │ ├── secrets/
│ │ ├── ssm/
│ │ └── vpc/
│ └── eu-west-1/
│ └── ...
├── prod/ # ملفات تعريف أخرى من ~/.aws/credentials
└── staging/
اكتب exit عند الانتهاء.
# من لديه صلاحيات المسؤول؟
grep -l "AdministratorAccess" */global/iam/users/*/policies.json
# مجموعات الأمان مع SSH مفتوح
grep -r '"FromPort": 22' */us-east-1/vpc/*/security-groups/
# الأدوار التي يمكن لـ Lambda افتراضها
grep -l "lambda.amazonaws.com" */global/iam/roles/*/info.json
# أسرار في SSM؟
grep -r "password" */us-east-1/ssm/
# دوال Lambda مع أسرار في متغيرات البيئة
grep -r "PASSWORD\|SECRET\|API_KEY" */us-east-1/lambda/*/env.json
# دوال تستخدم أنظمة تشغيل قديمة
grep -r "python3.8\|nodejs16" */*/lambda/*/config.json
# مثيلات EC2 بعناوين IP عامة
grep -r "PublicIpAddress" */*/ec2/*/info.json
# ابحث عن المثيلات المتوقفة (تهدر المال؟)
grep -r '"Name": "stopped"' */*/ec2/*/info.json
# الاتصال بمثيل EC2 عبر SSM (لا حاجة لمفاتيح SSH!)
./default/us-east-1/ec2/i-abc123/connect
# عرض سجلات تمهيد EC2 ورسائل النواة
cat default/us-east-1/ec2/i-abc123/console.log
# عرض جميع الأسرار
ls */us-east-1/secrets/
# قراءة قيمة سر
cat default/us-east-1/secrets/myapp/database/value
# سرد جميع مناطق DNS
ls */global/route53/
# عرض سجلات DNS لمنطقة ما
cat default/global/route53/example.com/records.json
# ابحث عن جميع سجلات CNAME
grep -r '"Type": "CNAME"' */global/route53/*/records.json
# ابحث عن الأخطاء في السجلات الحديثة
grep -i "error" default/us-east-1/logs/aws/lambda/my-function/latest.log
# عرض جميع مجموعات السجلات
ls */us-east-1/logs/
# سرد تدفقات السجلات (يظهر أحدث 20)
ls default/us-east-1/logs/aws/lambda/my-function/
# عرض الأحداث من تدفق معين
cat default/us-east-1/logs/aws/lambda/my-function/2024_01_15_abc123/events.log
# ECS: تصفح المجموعات والخدمات والمهام
ls default/us-east-1/ecs/my-cluster/my-service/
cat default/us-east-1/ecs/my-cluster/my-service/logs/latest.log
# CloudFront: عرض التوزيعات والدوال
ls default/us-east-1/cloudfront/distributions/
cat default/us-east-1/cloudfront/functions/my-auth/code.js
# S3: التحقق من سياسات الدلو وإعدادات الوصول
cat default/global/s3/my-bucket/.meta/policy.json
cat default/global/s3/my-bucket/.meta/public-access-block.json
# مقارنة أدوار IAM بين الحسابات
diff prod/global/iam/roles/api/info.json staging/global/iam/roles/api/info.json
# انحراف مجموعة الأمان بين المناطق
diff default/us-east-1/vpc/vpc-xxx/security-groups/sg-xxx.json default/eu-west-1/vpc/vpc-yyy/security-groups/sg-yyy.json
# اختلافات تكوين Lambda
diff prod/us-east-1/lambda/my-func/config.json staging/us-east-1/lambda/my-func/config.json
# طباعة جميلة باستخدام jq
cat default/global/iam/roles/my-role/info.json | jq '.AssumeRolePolicyDocument'
# عد أدوارك
ls default/global/iam/roles/ | wc -l
# ابحث عن الموارد غير الموسومة
cat default/us-east-1/vpc/vpc-xxx/info.json | jq 'select(.Tags == null)'
# سرد جميع بيئات تشغيل Lambda المستخدمة
grep -h "Runtime" */*/lambda/*/config.json | sort | uniq -c
cat default/us-east-1/ssm/myapp/database-url # قراءة
echo "postgres://prod:5432" > default/us-east-1/ssm/database-url # كتابة
vim default/us-east-1/ssm/myapp/config # تحرير
cp local.txt default/global/s3/my-bucket/backup/
cat default/global/s3/my-bucket/logs/app.log | grep ERROR
rm default/global/s3/my-bucket/old-file.txt
sisu # البدء من الجذر
sisu --profile prod # البدء في prod/
sisu --profile prod --region us-east-1 # البدء في prod/us-east-1/
sisu stop # فك التركيب
sisu --debug # تسجيل التصحيح
يتم بث ملفات events.log الخاصة بتدفق السجلات بشكل كسول من AWS بدلاً من تحميلها بالكامل في الذاكرة:
cat و grep و head و less# يجلب فقط عدد كافٍ من الدفعات للعثور على المطابقة
grep "ERROR" .../my-stream/events.log
# يجلب الدفعة الأولى فقط
head -50 .../my-stream/events.log
# التمرير مع التحميل عند الطلب
less .../my-stream/events.log
# سيجلب جميع الأحداث
cat .../my-stream/events.log | wc -l
ملاحظة: لا يعمل tail بشكل صحيح مع الملفات المبثوثة لأنه يبحث عن نهاية الملف، ولكن الحجم الفعلي غير معروف حتى يتم التحميل الكامل. استخدم cat ... | tail كحل بديل.
تحتوي كل خدمة على سجلات مباشرة تحت موردها - لا حاجة للبحث عن مجموعات السجلات:
# سجلات دالة Lambda
cat default/us-east-1/lambda/my-function/logs/latest.log
# سجلات مثيل EC2 (يبحث عن مجموعات سجلات تحتوي على معرف المثيل)
cat default/us-east-1/ec2/i-abc123/logs/latest.log
# سجلات خدمة ECS
cat default/us-east-1/ecs/my-cluster/my-service/logs/latest.log
# سجلات دالة CloudFront
cat default/us-east-1/cloudfront/functions/my-auth/logs/latest.log
جميع السجلات المتكاملة تستخدم البث - فهي تجلب الأحداث عند الطلب أثناء القراءة.
تصفح مجموعات ECS وخدماتها ومهامها:
ecs/
├── my-cluster/
│ ├── web-service/
│ │ ├── info.json # تكوين الخدمة
│ │ ├── logs/
│ │ │ └── latest.log # سجلات الخدمة المبثوثة
│ │ └── tasks/
│ │ └── abc123/
│ │ └── info.json # تفاصيل المهمة
│ └── api-service/
│ └── ...
# سرد جميع مجموعات ECS
ls default/us-east-1/ecs/
# عرض تكوين الخدمة
cat default/us-east-1/ecs/my-cluster/web-service/info.json
# بث سجلات الخدمة
cat default/us-east-1/ecs/my-cluster/web-service/logs/latest.log
# سرد المهام الجارية
ls default/us-east-1/ecs/my-cluster/web-service/tasks/
تصفح توزيعات ودوال CloudFront:
cloudfront/
├── distributions/
│ └── E1ABC123/
│ ├── info.json # تكوين التوزيع
│ └── origins.json # الأصول مع معلومات OAC/OAI
└── functions/
└── my-auth/
├── code.js # كود المصدر للدالة
├── config.json # تكوين الدالة
└── logs/
└── latest.log # سجلات تنفيذ الدالة
# سرد التوزيعات
ls default/us-east-1/cloudfront/distributions/
# التحقق من تكوين الوصول إلى الأصل (تصحيح مشكلات الوصول إلى S3!)
cat default/us-east-1/cloudfront/distributions/E1ABC123/origins.json
# عرض وتحرير كود دالة CloudFront
cat default/us-east-1/cloudfront/functions/my-auth/code.js
# تصحيح تنفيذ الدالة
cat default/us-east-1/cloudfront/functions/my-auth/logs/latest.log
يحتوي كل دلو S3 على دليل مخفي .meta/ مع تكوين الدلو:
# عرض سياسة الدلو
cat default/global/s3/my-bucket/.meta/policy.json
# التحقق من إعدادات حظر الوصول العام
cat default/global/s3/my-bucket/.meta/public-access-block.json
مفيد لتصحيح مشكلات الوصول من CloudFront إلى S3!
كل مثيل EC2 يعرض:
ls default/us-east-1/ec2/i-abc123/
# info.json security-groups.json tags.json console.log connect fs/ logs/
الاتصال عبر SSM (لا حاجة لمفاتيح SSH أو عنوان IP عام):
./default/us-east-1/ec2/i-abc123/connect
يتطلب إضافة Session Manager plugin.
عرض سجلات التمهيد ورسائل النواة:
cat default/us-east-1/ec2/i-abc123/console.log
تصفح نظام ملفات المثيل عن بعد (عبر SSM Run Command):
# سرد الملفات على المثيل
ls default/us-east-1/ec2/i-abc123/fs/etc/
# قراءة ملفات بعيدة
cat default/us-east-1/ec2/i-abc123/fs/etc/hostname
# البحث عبر السجلات البعيدة
grep ERROR default/us-east-1/ec2/i-abc123/fs/var/log/syslog
# مقارنة التكوينات بين المثيلات
diff prod/us-east-1/ec2/i-111/fs/etc/nginx/nginx.conf \
prod/us-east-1/ec2/i-222/fs/etc/nginx/nginx.conf
لا حاجة لمفاتيح SSH أو منافذ مفتوحة - يستخدم SSM Run Command في الخلفية.
| الأداة | ما تفعله |
|---|---|
| fzf | أداة بحث ضبابي مع معاينة |
| jq | استعلام/تحويل JSON |
| difftastic | فرق هيكلي (يفهم JSON) |
# تصفح ومعاينة أي مورد بشكل تفاعلي
find */global/iam/roles -name "info.json" | fzf --preview 'jq . {}'
# البحث عن دوال Lambda ذات ذاكرة عالية
jq -r 'select(.MemorySize > 512) | .FunctionName' */us-east-1/lambda/*/config.json
# مقارنة تكوين prod و staging
difft prod/us-east-1/lambda/api/config.json staging/us-east-1/lambda/api/config.json
نظراً لأنها مجرد ملفات، يمكن لأدوات الذكاء الاصطناعي قراءة وتحليل AWS مباشرة:
cd ~/.sisu/mnt && claude
"ابحث عن مجموعات الأمان التي تسمح بـ SSH من 0.0.0.0/0"
"راجع أدوار IAM للسياسات المسموحة بشكل مفرط"
"قارن تكوينات Lambda بين prod و staging"
المشكلة: فشل خدمة ECS مع "لم يتم العثور على مثيلات حاوية في مجموعتك"
باستخدام sisu للتشخيص بدون SSH:
# تحقق من حالة المجموعة - لا توجد مثيلات مسجلة
cat ecs/jobdeck-cluster/info.json | jq '.RegisteredContainerInstancesCount'
# → 0
# تحقق من تكوين الخدمة - تستخدم نوع إطلاق EC2
cat ecs/jobdeck-cluster/jobdeck-api/info.json | jq '.LaunchType, .FailedTasks'
# → "EC2", 136
# يوجد مثيل EC2 - تحقق من تكوين ECS الخاص به
cat ec2/i-xxx/fs/etc/ecs/ecs.config
# → ECS_CLUSTER=jobdeck-cluster ✓
# تحقق من سجلات وكيل ECS - لا يوجد سجل للوكيل!
ls ec2/i-xxx/fs/var/log/ecs/
# → ecs-volume-plugin.log (ecs-agent.log مفقود!)
# تحقق من صورة AMI الجاري تشغيلها
cat ec2/i-xxx/fs/etc/image-id
# → image_name="amzn2-ami-minimal-hvm" ← ليست محسّنة لـ ECS!
السبب الجذري: يستخدم مثيل EC2 صورة Amazon Linux 2 Minimal بدلاً من الصورة المحسّنة لـ ECS. الصورة الـ Minimal تحتوي على حزم ECS مثبتة ولكن خدمة الوكيل غير مفعلة افتراضياً.
الإصلاح: استخدم الصورة المحسّنة لـ ECS، أو أضف systemctl enable --now ecs إلى بيانات المستخدم.
تم كل هذا التصحيح بواسطة Claude AI يتصفح نظام الملفات عبر sisu - لا حاجة لـ SSH يدوي!
MIT
| الخدمة | قراءة | كتابة | حذف |
|---|
| S3 (الكائنات، سياسات الدلو، إعدادات الوصول) | ✓ | ✓ | ✓ |
| مخزن معلمات SSM | ✓ | ✓ | ✓ |
| IAM (المستخدمون، الأدوار، السياسات، المجموعات) | ✓ | - | - |
| VPC (الشبكات الفرعية، مجموعات الأمان، المسارات) | ✓ | - | - |
| Lambda (التكوين، السياسة، متغيرات البيئة، السجلات) | ✓ | - | - |
| EC2 (المثيلات، مجموعات الأمان، العلامات، السجلات، نظام الملفات البعيد) | ✓ | - | - |
| ECS (المجموعات، الخدمات، المهام، السجلات) | ✓ | - | - |
| CloudFront (التوزيعات، الدوال، السجلات) | ✓ | - | - |
| مدير الأسرار | ✓ | - | - |
| Route 53 (المناطق، السجلات) | ✓ | - | - |
| سجلات CloudWatch | ✓ | - | - |