
يقوم بتركيب موارد 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 # تسجيل التصحيح
| الخدمة | قراءة | كتابة | حذف |
|---|---|---|---|
| S3 (الكائنات، سياسات الدلو، إعدادات الوصول) | ✓ | ✓ | ✓ |
| مخزن معلمات SSM | ✓ | ✓ | ✓ |
| IAM (المستخدمون، الأدوار، السياسات، المجموعات) | ✓ | - | - |
| VPC (الشبكات الفرعية، مجموعات الأمان، المسارات) | ✓ | - | - |
| Lambda (التكوين، السياسة، متغيرات البيئة، السجلات) | ✓ | - | - |
| EC2 (المثيلات، مجموعات الأمان، العلامات، السجلات، نظام الملفات البعيد) | ✓ | - | - |
| ECS (المجموعات، الخدمات، المهام، السجلات) | ✓ | - | - |
| CloudFront (التوزيعات، الدوال، السجلات) | ✓ | - | - |
| مدير الأسرار | ✓ | - | - |
| Route 53 (المناطق، السجلات) | ✓ | - | - |
| سجلات CloudWatch | ✓ | - | - |
يتم بث ملفات 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